Poängsätta maskininlärningsmodeller med PREDICT

Dedikerad SQL-pool ger dig möjlighet att poängsätta maskininlärningsmodeller med det välbekanta T-SQL-språket. Med T-SQL PREDICT kan du ta med dina befintliga maskininlärningsmodeller som tränats med historiska data och bedöma dem inom de säkra gränserna för ditt informationslager. Funktionen PREDICT använder en ONNX-modell (Open Neural Network Exchange) och data som indata. Den här funktionen eliminerar steget att flytta värdefulla data utanför informationslagret för bedömning. Det syftar till att ge dataexperter möjlighet att enkelt distribuera maskininlärningsmodeller med det välbekanta T-SQL-gränssnittet och samarbeta sömlöst med dataexperter som arbetar med rätt ramverk för sina uppgifter.

Anteckning

Den här funktionen stöds för närvarande inte i en serverlös SQL-pool.

Funktionen kräver att modellen tränas utanför Synapse SQL. När du har skapat modellen läser du in den i informationslagret och poängsätter den med syntaxen T-SQL Predict för att få insikter från data.

predictoverview

Träna modellen

En dedikerad SQL-pool förväntar sig en förtränad modell. Tänk på följande när du tränar en maskininlärningsmodell som används för att utföra förutsägelser i en dedikerad SQL-pool.

  • Dedikerad SQL-pool stöder endast ONNX-formatmodeller. ONNX är ett modellformat med öppen källkod som gör att du kan utbyta modeller mellan olika ramverk för att möjliggöra samverkan. Du kan konvertera dina befintliga modeller till ONNX-format med hjälp av ramverk som antingen stöder den internt eller har konverterande paket tillgängliga. Till exempel konverterar sklearn-onnx-paketet scikit-learn-modeller till ONNX. ONNX GitHub-lagringsplatsen innehåller en lista över ramverk och exempel som stöds.

    Om du använder automatiserad ML för träning ska du ange parametern enable_onnx_compatible_models till TRUE för att skapa en ONNX-formatmodell. Automated Machine Learning Notebook visar ett exempel på hur du använder automatiserad ML för att skapa en maskininlärningsmodell med ONNX-format.

  • Följande datatyper stöds för indata:

    • int, bigint, real, float
    • char, varchar, nvarchar
  • Bedömningsdata måste ha samma format som träningsdata. Komplexa datatyper, till exempel flerdimensionella matriser, stöds inte av PREDICT. För träning ser du därför till att varje indata i modellen motsvarar en enda kolumn i bedömningstabellen i stället för att skicka en enda matris som innehåller alla indata.

  • Kontrollera att namnen och datatyperna för modellens indata matchar kolumnnamnen och datatyperna för nya förutsägelsedata. Att visualisera en ONNX-modell med hjälp av olika verktyg med öppen källkod som är tillgängliga online kan ytterligare hjälpa dig med felsökning.

Läsa in modellen

Modellen lagras i en dedikerad SQL-poolanvändartabell som en hexadecimal sträng. Ytterligare kolumner, till exempel ID och beskrivning, kan läggas till i modelltabellen för att identifiera modellen. Använd varbinary(max) som datatyp för modellkolumnen. Här är ett kodexempel för en tabell som kan användas för att lagra modeller:

-- 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

När modellen har konverterats till en hexadecimal sträng och tabelldefinitionen har angetts använder du copy-kommandot eller Polybase för att läsa in modellen i den dedikerade SQL-pooltabellen. I följande kodexempel används kommandot Kopiera för att läsa in modellen.

-- 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>')
)

Bedömning av modellen

När modellen och data har lästs in i informationslagret använder du funktionen T-SQL PREDICT för att poängsätta modellen. Kontrollera att de nya indata har samma format som de träningsdata som används för att skapa modellen. T-SQL PREDICT tar två indata: modell och nya bedömningsindata och genererar nya kolumner för utdata. Modellen kan anges som en variabel, en literal eller en skalär sub_query. Använd WITH common_table_expression för att ange en namngiven resultatuppsättning för dataparametern.

Exemplet nedan visar en exempelfråga med hjälp av förutsägelsefunktionen. En ytterligare kolumn med namnet Score och data type float skapas som innehåller förutsägelseresultatet. Alla kolumner för indata samt förutsägelsekolumner för utdata är tillgängliga för visning med select-instruktionen. Mer information finns i 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;

Nästa steg

Mer information om funktionen PREDICT finns i PREDICT (Transact-SQL).