Ocenianie modeli uczenia maszynowego za pomocą funkcji PREDICT

Dedykowana pula SQL zapewnia możliwość oceniania modeli uczenia maszynowego przy użyciu znanego języka T-SQL. Funkcja T-SQL PREDICT umożliwia trenowanie istniejących modeli uczenia maszynowego przy użyciu danych historycznych i ocenianie ich w bezpiecznych granicach magazynu danych. Funkcja PREDICT przyjmuje model ONNX (Open Neural Network Exchange) i dane jako dane wejściowe. Ta funkcja eliminuje krok przenoszenia cennych danych poza magazyn danych na potrzeby oceniania. Ma ona na celu umożliwienie specjalistom ds. danych łatwego wdrażania modeli uczenia maszynowego za pomocą znanego interfejsu T-SQL, a także bezproblemowej współpracy z analitykami danych pracującymi z odpowiednią strukturą dla ich zadania.

Uwaga

Ta funkcja nie jest obecnie obsługiwana w bezserwerowej puli SQL.

Funkcjonalność wymaga szkolenia modelu poza usługą Synapse SQL. Po utworzeniu modelu załaduj go do magazynu danych i za pomocą składni T-SQL Predict w celu uzyskania szczegółowych informacji z danych.

predictoverview

Trenowanie modelu

Dedykowana pula SQL oczekuje wstępnie wytrenowanego modelu. Podczas trenowania modelu uczenia maszynowego używanego do wykonywania przewidywań w dedykowanej puli SQL należy pamiętać o następujących czynnikach.

  • Dedykowana pula SQL obsługuje tylko modele formatu ONNX. ONNX to format modelu typu open source, który umożliwia wymianę modeli między różnymi strukturami w celu umożliwienia współdziałania. Istniejące modele można przekonwertować na format ONNX przy użyciu struktur, które obsługują je natywnie lub mają dostępne pakiety konwersji. Na przykład pakiet sklearn-onnx konwertuje modele scikit-learn na ONNX. Repozytorium GitHub ONNX zawiera listę obsługiwanych struktur i przykładów.

    Jeśli do trenowania używasz zautomatyzowanego uczenia maszynowego , upewnij się, że parametr enable_onnx_compatible_models ma wartość TRUE w celu utworzenia modelu formatu ONNX. Notes zautomatyzowanego uczenia maszynowego przedstawia przykład użycia zautomatyzowanego uczenia maszynowego do utworzenia modelu uczenia maszynowego w formacie ONNX.

  • Następujące typy danych są obsługiwane dla danych wejściowych:

    • int, bigint, real, float
    • char, varchar, nvarchar
  • Dane oceniania muszą mieć taki sam format jak dane treningowe. Złożone typy danych, takie jak tablice wielowymiarowe, nie są obsługiwane przez funkcję PREDICT. Dlatego na potrzeby trenowania upewnij się, że każde dane wejściowe modelu odpowiada pojedynczej kolumnie tabeli oceniania zamiast przekazywać pojedynczą tablicę zawierającą wszystkie dane wejściowe.

  • Upewnij się, że nazwy i typy danych wejściowych modelu są zgodne z nazwami kolumn i typami danych nowych danych przewidywania. Wizualizowanie modelu ONNX przy użyciu różnych narzędzi open source dostępnych w trybie online może dodatkowo pomóc w debugowaniu.

Ładowanie modelu

Model jest przechowywany w dedykowanej tabeli użytkownika puli SQL jako ciąg szesnastkowy. W tabeli modelu można dodać dodatkowe kolumny, takie jak identyfikator i opis, aby zidentyfikować model. Użyj zmiennej varbinary(max) jako typu danych kolumny modelu. Oto przykładowy kod tabeli, która może służyć do przechowywania modeli:

-- Sample table schema for storing a model and related data
CREATE TABLE [dbo].[Models]
(
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Model] [varbinary](max) NULL,
    [Description] [varchar](200) NULL
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    HEAP
)
GO

Po przekonwertowaniu modelu na ciąg szesnastkowy i określonej definicji tabeli użyj polecenia COPY lub programu Polybase, aby załadować model w dedykowanej tabeli puli SQL. Poniższy przykładowy kod używa polecenia Copy do załadowania modelu.

-- Copy command to load hexadecimal string of the model from Azure Data Lake storage location
COPY INTO [Models] (Model)
FROM '<enter your storage location>'
WITH (
    FILE_TYPE = 'CSV',
    CREDENTIAL=(IDENTITY= 'Shared Access Signature', SECRET='<enter your storage key here>')
)

Ocenianie modelu

Po załadowaniu modelu i danych do magazynu danych użyj funkcji PREDICT języka T-SQL , aby ocenić model. Upewnij się, że nowe dane wejściowe są w tym samym formacie co dane treningowe używane do tworzenia modelu. Funkcja T-SQL PREDICT przyjmuje dwa dane wejściowe: model i nowe dane wejściowe oceniania oraz generuje nowe kolumny dla danych wyjściowych. Model można określić jako zmienną, literał lub sub_query skalarną. Użyj funkcji WITH common_table_expression , aby określić nazwany zestaw wyników dla parametru danych.

W poniższym przykładzie pokazano przykładowe zapytanie korzystające z funkcji przewidywania. Zostanie utworzona dodatkowa kolumna o nazwie Score (Wynik ) i typem danych float (Liczba zmiennoprzecinkowa ) zawierająca wyniki przewidywania. Wszystkie kolumny danych wejściowych, a także kolumny przewidywania danych wyjściowych są dostępne do wyświetlenia za pomocą instrukcji select. Aby uzyskać więcej informacji, zobacz PREDICT (Transact-SQL).

-- Query for ML predictions
SELECT d.*, p.Score
FROM PREDICT(MODEL = (SELECT Model FROM Models WHERE Id = 1),
DATA = dbo.mytable AS d, RUNTIME = ONNX) WITH (Score float) AS p;

Następne kroki

Aby dowiedzieć się więcej na temat funkcji PREDICT, zobacz PREDICT (Transact-SQL).