Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2017 (14.x) a novější verze
Azure SQL Managed Instance
Azure Synapse Analytics
Naučte se používat nativní bodování s funkcí PREDICT T-SQL ke generování hodnot předpovědi pro nové vstupy dat téměř v reálném čase. Natívní skórování vyžaduje, abyste měli již vyškolený model.
Funkce PREDICT používá nativní funkce rozšíření jazyka C++ ve strojovém učení SQL. Tato metodologie nabízí nejrychlejší možnou rychlost zpracování předpovědí a předpovědí úloh a modelů podpory ve formátu Open Neural Network Exchange (ONNX) (pouze Azure Synapse Analytics) nebo modely natrénované pomocí balíčků RevoScaleR a revoscalepy .
Jak funguje nativní bodování
Nativní bodování používá knihovny, které mohou číst modely v ONNX nebo předdefinovaném binárním formátu a generovat skóre pro nové datové vstupy, které zadáte. Vzhledem k tomu, že je model vytrénovaný, nasazený a uložený, můžete ho použít k bodování, aniž byste museli volat interpret R nebo Python. To znamená, že se snižují režijní náklady více interakcí procesů, což vede k rychlejšímu výkonu predikce.
Pokud chcete použít nativní bodování, zavolejte PREDICT funkci T-SQL a předejte následující požadované vstupy:
- Kompatibilní model založený na podporovaném modelu a algoritmu.
- Vstupní data, obvykle definovaná jako dotaz T-SQL.
Funkce vrátí předpovědi pro vstupní data spolu se všemi sloupci zdrojových dat, které chcete procházet.
Požadavky
PREDICT je k dispozici na:
- Všechny edice SQL Serveru 2017 a novější ve Windows a Linuxu
- Azure SQL Managed Instance
- Azure Synapse Analytics
Funkce je ve výchozím nastavení povolená. Nemusíte instalovat R ani Python ani povolovat další funkce.
Podporované modely
Formáty modelů podporované funkcí PREDICT závisí na platformě SQL, na které provádíte nativní bodování. V následující tabulce najdete informace o podporovaných formátech modelů na které platformě.
| Platforma | Formát modelu ONNX | Formát modelu RevoScale |
|---|---|---|
| SQL Server | Ne | Ano |
| Azure SQL Managed Instance | Ne | Ano |
| Azure Synapse Analytics | Ano | Ne |
Modely ONNX
Model musí být ve formátu modelu Open Neural Network Exchange (ONNX).
Modely RevoScale
Model se musí předem vytrénovat pomocí některého z podporovaných algoritmů rx uvedených níže pomocí balíčku RevoScaleR nebo revoscalepy .
Serializace modelu pomocí rxSerialize pro R a rx_serialize_model pro Python. Tyto serializační funkce jsou optimalizované tak, aby podporovaly rychlé bodování.
Podporované algoritmy RevoScale
Následující algoritmy jsou podporovány v revoscalepy a RevoScaleR.
revoscalepy algoritmy
Algoritmy RevoScaleR
Pokud potřebujete použít algoritmus z MicrosoftML nebo microsoftml, použijte bodování v reálném čase s sp_rxPredict.
Nepodporované typy modelů zahrnují následující typy:
- Modely obsahující další transformace
- Modely využívající
rxGlmrxNaiveBayesalgoritmy v ekvivalentech RevoScaleR nebo revoscalepy - Modely PMML
- Modely vytvořené pomocí jiných opensourcových knihoven nebo knihoven třetích stran
Examples
Predikce s modelem ONNX
Tento příklad ukazuje, jak použít model ONNX uložený v dbo.models tabulce pro nativní bodování.
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;
Poznámka:
Vzhledem k tomu, že sloupce a hodnoty vrácené aplikací PREDICT se mohou lišit podle typu modelu, je nutné definovat schéma vrácených dat pomocí klauzule WITH .
PREDICT s využitím modelu RevoScale
V tomto příkladu vytvoříte model pomocí RevoScaleR v jazyce R a potom zavoláte funkci predikce v reálném čase z T-SQL.
Krok 1. Příprava a uložení modelu
Spuštěním následujícího kódu vytvořte ukázkovou databázi a požadované tabulky.
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
K naplnění tabulky dat dat dat z datové sady iris použijte následující příkaz.
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
Teď vytvořte tabulku pro ukládání modelů.
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
Následující kód vytvoří model založený na datové sadě iris a uloží ho do tabulky pojmenované modely.
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) ;
Poznámka:
Nezapomeňte k uložení modelu použít funkci rxSerializeModel z RevoScaleR. Standardní funkce jazyka R serialize nemůže vygenerovat požadovaný formát.
Spuštěním příkazu, jako je například následující, můžete zobrazit uložený model v binárním formátu:
SELECT *, datalength(native_model_object)/1024. as model_size_kb
FROM ml_models;
Krok 2. Spuštění funkce PREDICT v modelu
Následující jednoduchý příkaz PREDICT získá klasifikaci z modelu rozhodovacího stromu pomocí nativní funkce bodování . Predikuje druh duhovky na základě atributů, které zadáte, délku okvětního lístku a šířku.
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
Pokud se zobrazí chyba"Při provádění funkce PREDICT došlo k chybě. Model je poškozený nebo neplatný", obvykle to znamená, že dotaz nevrátil model. Zkontrolujte, jestli jste správně zadali název modelu nebo jestli je tabulka modelů prázdná.
Poznámka:
Vzhledem k tomu, že sloupce a hodnoty vrácené aplikací PREDICT se mohou lišit podle typu modelu, je nutné definovat schéma vrácených dat pomocí klauzule WITH .