Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2017 (14.x) en latere versies
Van Azure SQL Managed Instance
Azure Synapse Analytics
Meer informatie over het gebruik van systeemeigen scoren met de functie PREDICT T-SQL om voorspellingswaarden te genereren voor nieuwe gegevensinvoer in bijna realtime. Systeemeigen scoren vereist dat u een al getraind model hebt.
De PREDICT functie maakt gebruik van de systeemeigen C++-extensiemogelijkheden in SQL Machine Learning. Deze methodologie biedt de snelst mogelijke verwerkingssnelheid van prognose- en voorspellingsworkloads en ondersteuningsmodellen in de Open Neural Network Exchange-indeling (alleen Azure Synapse Analytics) of modellen die zijn getraind met behulp van de RevoScaleR en revoscalepy-pakketten .
Hoe systeemeigen scoren werkt
Systeemeigen scoren maakt gebruik van bibliotheken die modellen kunnen lezen in ONNX of een vooraf gedefinieerde binaire indeling en scores genereren voor nieuwe gegevensinvoer die u opgeeft. Omdat het model is getraind, geïmplementeerd en opgeslagen, kan het worden gebruikt voor scoren zonder de R- of Python-interpreter aan te roepen. Dit betekent dat de overhead van meerdere procesinteracties wordt verminderd, wat resulteert in snellere voorspellingsprestaties.
Als u systeemeigen scoren wilt gebruiken, roept u de PREDICT T-SQL-functie aan en geeft u de volgende vereiste invoer door:
- Een compatibel model op basis van een ondersteund model en algoritme.
- Invoergegevens, meestal gedefinieerd als een T-SQL-query.
De functie retourneert voorspellingen voor de invoergegevens, samen met kolommen met brongegevens die u wilt doorgeven.
Vereiste voorwaarden
PREDICT is beschikbaar op:
- Alle edities van SQL Server 2017 en hoger in Windows en Linux
- Azure SQL Managed Instance (een beheerde database-instantie van Azure)
- Azure Synapse Analytics
De functie is standaard ingeschakeld. U hoeft R of Python niet te installeren of extra functies in te schakelen.
Ondersteunde modellen
De modelindelingen die door de PREDICT functie worden ondersteund, zijn afhankelijk van het SQL-platform waarop u systeemeigen scoren uitvoert. Zie de onderstaande tabel om te zien welke modelindelingen worden ondersteund op welk platform.
| Platform | ONNX-modelindeling | RevoScale-modelindeling |
|---|---|---|
| SQL Server | Nee. | Yes |
| Azure SQL Managed Instance (een beheerde database-instantie van Azure) | Nee. | Yes |
| Azure Synapse Analytics | Yes | Nee. |
ONNX-modellen
Het model moet de modelindeling Open Neural Network Exchange (ONNX) hebben.
RevoScale-modellen
Het model moet vooraf worden getraind met behulp van een van de ondersteunde rx-algoritmen die hieronder worden vermeld met behulp van het RevoScaleR - of revoscalepy-pakket .
Serialiseer het model met rxSerialize voor R en rx_serialize_model voor Python. Deze serialisatiefuncties zijn geoptimaliseerd om snelle scoren te ondersteunen.
Ondersteunde RevoScale-algoritmen
De volgende algoritmen worden ondersteund in revoscalepy en RevoScaleR.
revoscalepy-algoritmen
RevoScaleR-algoritmen
Als u een algoritme van MicrosoftML of microsoftml moet gebruiken, gebruikt u scoren in realtime met sp_rxPredict.
Niet-ondersteunde modeltypen omvatten de volgende typen:
- Modellen met andere transformaties
- Modellen die gebruikmaken van de
rxGlmofrxNaiveBayesalgoritmen in RevoScaleR of revoscalepy-equivalenten - PMML-modellen
- Modellen die zijn gemaakt met behulp van andere opensource- of bibliotheken van derden
Voorbeelden
VOORSPELLEN met een ONNX-model
In dit voorbeeld ziet u hoe u een ONNX-model gebruikt dat is opgeslagen in de dbo.models tabel voor systeemeigen scoren.
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;
Opmerking
Omdat de kolommen en waarden die door PREDICT worden geretourneerd, per modeltype kunnen variëren, moet u het schema van de geretourneerde gegevens definiëren met behulp van een WITH-component .
VOORSPELLEN met RevoScale-model
In dit voorbeeld maakt u een model met behulp van RevoScaleR in R en roept u vervolgens de realtime voorspellingsfunctie van T-SQL aan.
Stap 1. Het model voorbereiden en opslaan
Voer de volgende code uit om de voorbeelddatabase en de vereiste tabellen te maken.
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
Gebruik de volgende instructie om de gegevenstabel te vullen met gegevens uit de irisgegevensset .
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
Maak nu een tabel voor het opslaan van modellen.
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
Met de volgende code wordt een model gemaakt op basis van de irisgegevensset en opgeslagen in de tabel met de naammodellen.
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) ;
Opmerking
Zorg ervoor dat u de functie rxSerializeModel van RevoScaleR gebruikt om het model op te slaan. De standaard R-functie serialize kan de vereiste indeling niet genereren.
U kunt een instructie zoals de volgende uitvoeren om het opgeslagen model in binaire indeling weer te geven:
SELECT *, datalength(native_model_object)/1024. as model_size_kb
FROM ml_models;
Stap 2. PREDICT uitvoeren op het model
Met de volgende eenvoudige PREDICT-instructie wordt een classificatie opgehaald uit het beslissingsstructuurmodel met behulp van de systeemeigen scorefunctie . Het voorspelt de irissoorten op basis van kenmerken die u opgeeft, de lengte en breedte van bloemblaadjes.
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
Als u de fout krijgt, 'Fout is opgetreden tijdens de uitvoering van de functie PREDICT. Het model is beschadigd of ongeldig. Dit betekent meestal dat uw query geen model heeft geretourneerd. Controleer of u de modelnaam juist hebt getypt of dat de tabel met modellen leeg is.
Opmerking
Omdat de kolommen en waarden die door PREDICT worden geretourneerd, per modeltype kunnen variëren, moet u het schema van de geretourneerde gegevens definiëren met behulp van een WITH-component .