Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziók
Azure SQL Managed Instance
Azure Synapse Analytics
Megtudhatja, hogyan használhat natív pontozást a PREDICT T-SQL függvénnyel az új adatbemenetek előrejelzési értékeinek közel valós idejű létrehozásához. A natív pontozáshoz már betanított modellre van szükség.
A PREDICT függvény a natív C++ kiterjesztési képességeket használja az SQL Machine Learningben. Ez a módszertan a lehető leggyorsabb feldolgozási sebességet kínálja az előrejelzési és előrejelzési számítási feladatokhoz, valamint az Open Neural Network Exchange (ONNX) formátumú támogatási modelleket (csak Az Azure Synapse Analytics esetében) vagy a RevoScaleR és a revoscalepy csomagok használatával betanított modelleket.
A natív pontozás működése
A natív pontozás olyan kódtárakat használ, amelyek képesek modelleket olvasni ONNX-ben vagy előre definiált bináris formátumban, és pontszámokat hoznak létre az Ön által megadott új adatbemenetekhez. Mivel a modell be van tanítva, üzembe helyezve és tárolva van, az R- vagy Python-értelmező meghívása nélkül használható a pontozáshoz. Ez azt jelenti, hogy több folyamat interakciójának többletterhelése csökken, ami gyorsabb előrejelzési teljesítményt eredményez.
Natív pontozás használatához hívja meg a PREDICT T-SQL függvényt, és adja meg a következő szükséges bemeneteket:
- Támogatott modellen és algoritmuson alapuló kompatibilis modell.
- Bemeneti adatok, általában T-SQL-lekérdezésként definiálva.
A függvény a bemeneti adatok előrejelzéseit adja vissza a forrásadatok azon oszlopaival együtt, amelyeket át szeretne adni.
Előfeltételek
PREDICT a következő napon érhető el:
- Az SQL Server 2017 és újabb verzióinak összes kiadása Windowson és Linuxon
- Azure SQL Managed Instance
- Azure Synapse Analytics
A függvény alapértelmezés szerint engedélyezve van. Nem kell telepítenie az R-t vagy a Pythont, és nem kell további funkciókat engedélyeznie.
Támogatott modellek
A függvény által PREDICT támogatott modellformátumok attól az SQL-platformtól függenek, amelyen natív pontozást végez. Az alábbi táblázatban láthatja, hogy mely modellformátumok támogatottak melyik platformon.
| Plattform | ONNX modellformátum | RevoScale modellformátum |
|---|---|---|
| SQL Server | Nem | Igen |
| Azure SQL Managed Instance | Nem | Igen |
| Azure Synapse Analytics | Igen | Nem |
ONNX-modellek
A modellnek nyílt neurális hálózati exchange (ONNX) modellformátumban kell lennie.
RevoScale-modellek
A modellt előzetesen be kell tanítani az alább felsorolt támogatott rx algoritmusok egyikével a RevoScaleR vagy a revoscalepy csomag használatával.
Szerializálja a modellt az R rxSerialize és a Python rx_serialize_model használatával. Ezeket a szerializálási függvényeket úgy optimalizáltuk, hogy támogassák a gyors pontozást.
Támogatott revoscale algoritmusok
A revoscalepy és a RevoScaleR az alábbi algoritmusokat támogatja.
revoscalepy algoritmusok
RevoScaleR-algoritmusok
Ha a MicrosoftML vagy a microsoftml algoritmusát kell használnia, használjon valós idejű értékelést az sp_rxPredict segítségével.
A nem támogatott modelltípusok a következő típusokat tartalmazzák:
- Más átalakításokat tartalmazó modellek
- A RevoScaleR-ben vagy a revoscalepy ekvivalensekben
rxGlmvagyrxNaiveBayesalgoritmusokat használó modellek - PMML-modellek
- Más nyílt forráskódú vagy külső kódtárak használatával létrehozott modellek
Példák
ELŐREJELZÉS ONNX-modellel
Ez a példa bemutatja, hogyan használható a táblában tárolt ONNX-modell natív dbo.models pontozáshoz.
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;
Megjegyzés:
Mivel a PREDICT által visszaadott oszlopok és értékek modelltípusonként eltérőek lehetnek, a visszaadott adatok sémáját EGY WITH záradék használatával kell meghatároznia.
PREDICT és RevoScale modell
Ebben a példában a RevoScaleR használatával hoz létre egy modellt az R-ben, majd meghívja a valós idejű előrejelzési függvényt a T-SQL-ből.
1. lépés. A modell előkészítése és mentése
Futtassa a következő kódot a mintaadatbázis és a szükséges táblák létrehozásához.
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
Az alábbi utasítással töltse fel az adattáblát az írisz adatkészletből származó adatokkal.
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
Most hozzon létre egy táblázatot a modellek tárolásához.
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
Az alábbi kód létrehoz egy modellt az írisz-adatkészlet alapján, és menti a modellek nevű táblába.
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) ;
Megjegyzés:
A modell mentéséhez mindenképpen használja a RevoScaleR rxSerializeModel függvényét. A standard R serialize függvény nem tudja létrehozni a szükséges formátumot.
A tárolt modell bináris formátumban való megtekintéséhez az alábbihoz hasonló utasítást futtathat:
SELECT *, datalength(native_model_object)/1024. as model_size_kb
FROM ml_models;
2. lépés. A PREDICT futtatása a modellen
Az alábbi egyszerű PREDICT utasítás a döntési fa modellből kap besorolást a natív pontozási függvény használatával. Előrejelzi az íriszfajt az Ön által megadott attribútumok, a szirom hossza és szélessége alapján.
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
Ha a következő hibaüzenet jelenik meg: "Hiba történt a PREDICT függvény végrehajtása során. A modell sérült vagy érvénytelen", általában azt jelenti, hogy a lekérdezés nem adott vissza modellt. Ellenőrizze, hogy helyesen adta-e meg a modell nevét, vagy üres-e a modelltábla.
Megjegyzés:
Mivel a PREDICT által visszaadott oszlopok és értékek modelltípusonként eltérőek lehetnek, a visszaadott adatok sémáját EGY WITH záradék használatával kell meghatároznia.