Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2017 (14.x) i nowsze wersje
usługi Azure SQL Managed Instance
Azure Synapse Analytics
Dowiedz się, jak używać natywnego oceniania za pomocą funkcji PREDICT T-SQL w celu generowania wartości przewidywania dla nowych danych wejściowych w czasie niemal rzeczywistym. Natywne ocenianie wymaga, aby masz już wytrenowany model.
Funkcja PREDICT korzysta z natywnych funkcji rozszerzenia języka C++ w uczeniu maszynowym SQL. Ta metodologia oferuje najszybszą możliwą szybkość przetwarzania obciążeń związanych z prognozowaniem i przewidywaniem oraz modele obsługiwane w formacie Open Neural Network Exchange (ONNX) (tylko Azure Synapse Analytics) lub modele wytrenowane przy użyciu pakietów RevoScaleR i revoscalepy.
Jak działa ocenianie natywne
Natywne ocenianie używa bibliotek, które mogą odczytywać modele w formacie ONNX lub wstępnie zdefiniowanym formacie binarnym i generować wyniki dla nowych danych wejściowych, które zostały podane. Ponieważ model jest trenowany, wdrażany i przechowywany, może być używany do oceniania bez konieczności wywoływania interpretera języka R lub Python. Oznacza to, że obciążenie związane z interakcjami wielu procesów jest zmniejszone, co skutkuje szybszą wydajnością przewidywań.
Aby użyć natywnego oceniania, wywołaj PREDICT funkcję T-SQL i przekaż następujące wymagane dane wejściowe:
- Model zgodny oparty na obsługiwanym modelu i algorytmie.
- Dane wejściowe, zwykle zdefiniowane jako zapytanie T-SQL.
Funkcja zwraca przewidywania danych wejściowych wraz z kolumnami danych źródłowych, które mają zostać przekazane.
Wymagania wstępne
PREDICT jest dostępny w następujących miejscach:
- Wszystkie wersje programu SQL Server 2017 i nowszych w systemach Windows i Linux
- Azure SQL Managed Instance
- Azure Synapse Analytics
Funkcja jest domyślnie włączona. Nie musisz instalować języka R lub Python ani włączać dodatkowych funkcji.
Obsługiwane modele
Formaty modelu obsługiwane przez PREDICT funkcję zależą od platformy SQL, na której wykonujesz natywne ocenianie. Zapoznaj się z poniższą tabelą, aby zobaczyć, które formaty modeli są obsługiwane na jakiej platformie.
| Platforma | Format modelu ONNX | Format modelu RevoScale |
|---|---|---|
| SQL Server | Nie. | Tak |
| Azure SQL Managed Instance | Nie. | Tak |
| Azure Synapse Analytics | Tak | Nie. |
Modele ONNX
Model musi mieć format modelu Open Neural Network Exchange (ONNX).
Modele RevoScale
Model należy wytrenować z wyprzedzeniem przy użyciu jednego z obsługiwanych algorytmów rx wymienionych poniżej przy użyciu pakietu RevoScaleR lub revoscalepy .
Serializuj model przy użyciu funkcji rxSerialize dla języka R i rx_serialize_model dla języka Python. Te funkcje serializacji zostały zoptymalizowane pod kątem szybkiego przetwarzania wyników.
Obsługiwane algorytmy RevoScale
Następujące algorytmy są obsługiwane w wersjach revoscalepy i RevoScaleR.
revoscalepy algorytmy
Algorytmy RevoScaleR
Jeśli musisz użyć algorytmu z MicrosoftML lub microsoftml, użyj prognozowania w czasie rzeczywistym za pomocą sp_rxPredict.
Nieobsługiwane typy modeli obejmują następujące typy:
- Modele zawierające inne przekształcenia
- Modele korzystające z algorytmów
rxGlmlubrxNaiveBayesw ramach RevoScaleR lub jego odpowiedników w revoscalepy - Modele PMML
- Modele utworzone przy użyciu innych bibliotek typu open source lub innych firm
Przykłady
PRZEWIDYWANIE za pomocą modelu ONNX
W tym przykładzie pokazano, jak używać modelu ONNX przechowywanego w tabeli na potrzeby natywnego dbo.models oceniania.
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;
Uwaga / Notatka
Ponieważ kolumny i wartości zwracane przez metodę PREDICT mogą się różnić w zależności od typu modelu, należy zdefiniować schemat zwracanych danych przy użyciu klauzuli WITH .
PREDICT with RevoScale model (PRZEWIDYWANIE za pomocą modelu RevoScale)
W tym przykładzie utworzysz model przy użyciu narzędzia RevoScaleR w języku R, a następnie wywołasz funkcję przewidywania w czasie rzeczywistym z języka T-SQL.
Krok 1. Przygotowywanie i zapisywanie modelu
Uruchom następujący kod, aby utworzyć przykładową bazę danych i wymagane tabele.
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
Użyj poniższej instrukcji, aby wypełnić tabelę danych danymi z iris.
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
Teraz utwórz tabelę do przechowywania modeli.
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
Poniższy kod tworzy model na podstawie zestawu danych iris i zapisuje go w tabeli o nazwie models.
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) ;
Uwaga / Notatka
Pamiętaj, aby zapisać model za pomocą funkcji rxSerializeModel z pakietu RevoScaleR. Standardowa funkcja języka R serialize nie może wygenerować wymaganego formatu.
Możesz uruchomić instrukcję, taką jak poniżej, aby wyświetlić przechowywany model w formacie binarnym:
SELECT *, datalength(native_model_object)/1024. as model_size_kb
FROM ml_models;
Krok 2. Uruchom PREDICT na modelu
Poniższa prosta instrukcja PREDICT pobiera klasyfikację z modelu drzewa decyzyjnego przy użyciu natywnej funkcji oceniania . Przewiduje gatunek irysów na podstawie atrybutów, które podajesz, długość płatka i szerokość.
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
Jeśli wystąpi błąd "Wystąpił błąd podczas wykonywania funkcji PREDICT. Model jest uszkodzony lub nieprawidłowy", zwykle oznacza to, że zapytanie nie zwróciło modelu. Sprawdź, czy nazwa modelu została wpisana poprawnie, czy tabela models jest pusta.
Uwaga / Notatka
Ponieważ kolumny i wartości zwracane przez metodę PREDICT mogą się różnić w zależności od typu modelu, należy zdefiniować schemat zwracanych danych przy użyciu klauzuli WITH .