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 poängsätta 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 dataproffs möjlighet att enkelt distribuera maskininlärningsmodeller med det välbekanta T-SQL-gränssnittet samt samarbeta sömlöst med dataexperter som arbetar med rätt ramverk för sina uppgifter.
Kommentar
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.
Träna modellen
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 det 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 måste 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 vara i samma format som träningsdata. Komplexa datatyper som flerdimensionella matriser stöds inte av PREDICT. För träning kontrollerar du därför att varje indata i modellen motsvarar en enda kolumn i bedömningstabellen i stället för att skicka en enskild matris som innehåller alla indata.
Kontrollera att namnen och datatyperna för modellindata matchar kolumnnamnen och datatyperna för de 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äser in modellen
Modellen lagras i en dedikerad SQL-poolanvändartabell som en hexadecimal sträng. Ytterligare kolumner som 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 kommandot COPY eller Polybase för att läsa in modellen i den dedikerade SQL-pooltabellen. Följande kodexempel använder 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 är i samma format som 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 Poäng och datatypsflöt skapas som innehåller förutsägelseresultatet. Alla indatakolumner samt utdataförutsägelsekolumner ä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).