Udostępnij za pośrednictwem


Ocenianie modeli uczenia maszynowego za pomocą funkcji PREDICT

Dedykowana pula SQL umożliwia ocenianie modeli uczenia maszynowego przy użyciu znanego języka T-SQL. Dzięki funkcji T-SQL PREDICT możesz przeszkolić istniejące modele uczenia maszynowego przy użyciu danych historycznych i ocenić je 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 magazynem 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 swojego zadania.

Uwaga

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

Funkcjonalność wymaga wytrenowania modelu poza usługą Synapse SQL. Po utworzeniu modelu załaduj go do magazynu danych i za pomocą składni T-SQL Predict, aby uzyskać szczegółowe informacje 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 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 używasz zautomatyzowanego uczenia maszynowego do trenowania, upewnij się, że dla parametru enable_onnx_compatible_models ustawiono wartość TRUE, aby utworzyć model 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ą być w tym samym formacie co dane szkoleniowe. 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 jednej kolumnie tabeli oceniania zamiast przekazywać pojedynczą tablicę zawierającą wszystkie dane wejściowe.

  • Upewnij się, że nazwy i typy danych 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 typu 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. Dodatkowe kolumny, takie jak identyfikator i opis, można dodać w tabeli modelu w celu zidentyfikowania modelu. Użyj wartości 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 w celu 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 T-SQL PREDICT , aby ocenić model. Upewnij się, że nowe dane wejściowe są w tym samym formacie co dane szkoleniowe 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).