Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Yeni veri girişleri için neredeyse gerçek zamanlı tahmin değerleri oluşturmak için PREDICT T-SQL işleviyle yerel puanlama kullanmayı öğrenin. Doğal puanlama yapabilmek için önceden eğitilmiş bir modele sahip olmanız gerekir.
İşlev, PREDICTSQL makine öğrenmesindeki yerel C++ uzantısı özelliklerini kullanır. Bu metodoloji, Açık Sinir Ağı Değişimi ( yalnızca Azure Synapse Analytics) biçimindeki (yalnızca Azure Synapse Analytics) veya RevoScaleR ve revoscalepy paketleri kullanılarak eğitilen modellerde tahmin ve tahmin iş yüklerinin ve destek modellerinin mümkün olan en hızlı işleme hızını sunar.
Yerel puanlama nasıl çalışır?
Yerel puanlama, ONNX veya önceden tanımlanmış ikili biçimdeki modelleri okuyabilen ve sağladığınız yeni veri girişleri için puanlar oluşturabilen kitaplıkları kullanır. Model eğitildiğinden, dağıtıldığından ve depolandığından, R veya Python yorumlayıcısını çağırmak zorunda kalmadan puanlama için kullanılabilir. Bu, birden çok işlem etkileşiminin yükünün azalarak daha hızlı tahmin performansına neden olduğu anlamına gelir.
Yerel puanlama kullanmak için T-SQL işlevini çağırın PREDICT ve aşağıdaki gerekli girişleri geçirin:
- Desteklenen bir modeli ve algoritmayı temel alan uyumlu bir model.
- Giriş verileri, genellikle T-SQL sorgusu olarak tanımlanır.
İşlev, geçiş yapmak istediğiniz kaynak veri sütunlarıyla birlikte giriş verileri için tahminler döndürür.
Önkoşullar
PREDICT şu tarihinde kullanılabilir:
- Windows ve Linux'ta SQL Server 2017 ve sonraki sürümlerin tümü
- Azure SQL Yönetilen Varlık
- Azure Synapse Analytics
İşlev varsayılan olarak etkindir. R veya Python yüklemeniz veya ek özellikleri etkinleştirmeniz gerekmez.
Desteklenen modeller
İşlev tarafından PREDICT desteklenen model biçimleri, yerel puanlama yaptığınız SQL platformuna bağlıdır. Hangi platformda hangi model biçimlerinin desteklendiğine bakmak için aşağıdaki tabloya bakın.
| Platform | ONNX model biçimi | RevoScale model biçimi |
|---|---|---|
| SQL Server | Hayı | Yes |
| Azure SQL Yönetilen Varlık | Hayı | Yes |
| Azure Synapse Analytics | Yes | Hayı |
ONNX modelleri
Modelin Açık Sinir Ağı Değişimi (ONNX) model biçiminde olması gerekir.
RevoScale modelleri
Model, RevoScaleR veya revoscalepy paketi kullanılarak aşağıda listelenen desteklenen rx algoritmalarından biri kullanılarak önceden eğitilmelidir.
R için rxSerialize ve Python için rx_serialize_model kullanarak modeli seri hale getirme. Bu serileştirme işlevleri, hızlı puanlama desteği için iyileştirilmiştir.
Desteklenen RevoScale algoritmaları
Revoscalepy ve RevoScaleR'da aşağıdaki algoritmalar desteklenir.
revoscalepy algoritmaları
RevoScaleR algoritmaları
MicrosoftML veya microsoftml'den bir algoritma kullanmanız gerekiyorsa , sp_rxPredict ile gerçek zamanlı puanlama kullanın.
Desteklenmeyen model türleri aşağıdaki türleri içerir:
- Diğer dönüştürmeleri içeren modeller
-
rxGlmveyarxNaiveBayesalgoritmalarını kullanan RevoScaleR veya revoscalepy eşdeğerlerindeki modeller - PMML modelleri
- Diğer açık kaynak veya üçüncü taraf kitaplıkları kullanılarak oluşturulan modeller
Örnekler
ONNX modeliyle PREDICT gerçekleştirin
Bu örnekte, yerel puanlama için tabloda depolanan bir ONNX modelinin dbo.models nasıl kullanılacağı gösterilmektedir.
DECLARE @model VARBINARY(max) = (
SELECT DATA
FROM dbo.models
WHERE id = 1
);
WITH predict_input
AS (
SELECT TOP (1000) [id]
, CRIM
, ZN
, INDUS
, CHAS
, NOX
, RM
, AGE
, DIS
, RAD
, TAX
, PTRATIO
, B
, LSTAT
FROM [dbo].[features]
)
SELECT predict_input.id
, p.variable1 AS MEDV
FROM PREDICT(MODEL = @model, DATA = predict_input, RUNTIME=ONNX) WITH (variable1 FLOAT) AS p;
Uyarı
PREDICT tarafından döndürülen sütunlar ve değerler model türüne göre farklılık gösterebileceğinden, döndürülen verilerin şemasını bir WITH yan tümcesi kullanarak tanımlamanız gerekir.
RevoScale modeli ile PREDICT
Bu örnekte R'de RevoScaleR kullanarak bir model oluşturacak ve ardından T-SQL'den gerçek zamanlı tahmin işlevini çağıracaksınız.
Adım 1. Modeli hazırlama ve kaydetme
Örnek veritabanını ve gerekli tabloları oluşturmak için aşağıdaki kodu çalıştırın.
CREATE DATABASE NativeScoringTest;
GO
USE NativeScoringTest;
GO
DROP TABLE IF EXISTS iris_rx_data;
GO
CREATE TABLE iris_rx_data (
"Sepal.Length" float not null, "Sepal.Width" float not null
, "Petal.Length" float not null, "Petal.Width" float not null
, "Species" varchar(100) null
);
GO
Veri tablosunu iris veri kümesindeki verilerle doldurmak için aşağıdaki deyimi kullanın.
INSERT INTO iris_rx_data ("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width" , "Species")
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'iris_data <- iris;'
, @input_data_1 = N''
, @output_data_1_name = N'iris_data';
GO
Şimdi modelleri depolamak için bir tablo oluşturun.
DROP TABLE IF EXISTS ml_models;
GO
CREATE TABLE ml_models ( model_name nvarchar(100) not null primary key
, model_version nvarchar(100) not null
, native_model_object varbinary(max) not null);
GO
Aşağıdaki kod , iris veri kümesini temel alan bir model oluşturur ve model adlı tabloya kaydeder.
DECLARE @model varbinary(max);
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
iris.sub <- c(sample(1:50, 25), sample(51:100, 25), sample(101:150, 25))
iris.dtree <- rxDTree(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = iris[iris.sub, ])
model <- rxSerializeModel(iris.dtree, realtimeScoringOnly = TRUE)
'
, @params = N'@model varbinary(max) OUTPUT'
, @model = @model OUTPUT
INSERT [dbo].[ml_models]([model_name], [model_version], [native_model_object])
VALUES('iris.dtree','v1', @model) ;
Uyarı
Modeli kaydetmek için RevoScaleR'den rxSerializeModel işlevini kullandığınızdan emin olun. Standart R serialize işlevi gerekli biçimi oluşturamıyor.
Depolanan modeli ikili biçimde görüntülemek için aşağıdaki gibi bir deyimi çalıştırabilirsiniz:
SELECT *, datalength(native_model_object)/1024. as model_size_kb
FROM ml_models;
Adım 2. Modelde PREDICT çalıştırma
Aşağıdaki basit PREDICT deyimi, yerel skorlamayı kullanarak karar ağacı modelinden bir sınıflandırma elde eder. Sağladığınız özniteliklere, yaprakların uzunluğuna ve genişliğine göre iris türlerini tahmin eder.
DECLARE @model varbinary(max) = (
SELECT native_model_object
FROM ml_models
WHERE model_name = 'iris.dtree'
AND model_version = 'v1');
SELECT d.*, p.*
FROM PREDICT(MODEL = @model, DATA = dbo.iris_rx_data as d)
WITH(setosa_Pred float, versicolor_Pred float, virginica_Pred float) as p;
go
"PREDICT işlevinin yürütülmesi sırasında hata oluştu." Model bozuk veya geçersiz", bu genellikle sorgunuzun model döndürmediğini gösterir. Model adını doğru yazıp yazmadığınızdan veya modeller tablosunun boş olup olmadığını denetleyin.
Uyarı
PREDICT tarafından döndürülen sütunlar ve değerler model türüne göre farklılık gösterebileceğinden, döndürülen verilerin şemasını bir WITH yan tümcesi kullanarak tanımlamanız gerekir.