Machine learning-modellen beoordelen met PREDICT
Toegewezen SQL-pool biedt u de mogelijkheid om machine learning-modellen te scoren met behulp van de vertrouwde T-SQL-taal. Met T-SQL PREDICT kunt u uw bestaande machine learning-modellen laten trainen met historische gegevens en deze binnen de veilige grenzen van uw datawarehouse beoordelen. De functie PREDICT gebruikt een ONNX-model (Open Neural Network Exchange) en gegevens als invoer. Deze functie elimineert de stap van het verplaatsen van waardevolle gegevens buiten het datawarehouse voor scoren. Het is erop gericht gegevensprofessionals in staat te stellen om machine learning-modellen eenvoudig te implementeren met de vertrouwde T-SQL-interface en naadloos samen te werken met gegevenswetenschappers die met het juiste framework voor hun taak werken.
Notitie
Deze functionaliteit wordt momenteel niet ondersteund in een serverloze SQL-pool.
De functionaliteit vereist dat het model wordt getraind buiten Synapse SQL. Nadat u het model hebt gemaakt, laadt u het in het datawarehouse en scoret u het met de T-SQL Predict-syntaxis om inzichten te krijgen uit de gegevens.
Het model trainen
Toegewezen SQL-pool verwacht een vooraf getraind model. Houd rekening met de volgende factoren bij het trainen van een machine learning-model dat wordt gebruikt voor het uitvoeren van voorspellingen in een toegewezen SQL-pool.
Toegewezen SQL-pool ondersteunt alleen ONNX-indelingsmodellen. ONNX is een opensource-modelindeling waarmee u modellen kunt uitwisselen tussen verschillende frameworks om interoperabiliteit mogelijk te maken. U kunt uw bestaande modellen converteren naar ONNX-indeling met behulp van frameworks die het systeemeigen ondersteunen of pakketten converteren. Bijvoorbeeld: sklearn-onnx-pakket converteert scikit-learn-modellen naar ONNX. ONNX GitHub-opslagplaats biedt een lijst met ondersteunde frameworks en voorbeelden.
Als u Automated ML gebruikt voor training, moet u de parameter enable_onnx_compatible_models instellen op TRUE om een ONNX-indelingsmodel te produceren. Geautomatiseerde Machine Learning Notebook toont een voorbeeld van het gebruik van geautomatiseerde ML om een machine learning-model van ONNX-indeling te maken.
De volgende gegevenstypen worden ondersteund voor de invoergegevens:
- int, bigint, real, float
- char, varchar, nvarchar
De scoregegevens moeten dezelfde indeling hebben als de trainingsgegevens. Complexe gegevenstypen, zoals multidimensionale matrices, worden niet ondersteund door PREDICT. Zorg er dus voor de training voor dat elke invoer van het model overeenkomt met één kolom van de scoretabel in plaats van één matrix door te geven die alle invoer bevat.
Zorg ervoor dat de namen en gegevenstypen van de modelinvoer overeenkomen met de kolomnamen en gegevenstypen van de nieuwe voorspellingsgegevens. Het visualiseren van een ONNX-model met behulp van verschillende opensource-hulpprogramma's die online beschikbaar zijn, kan verder helpen bij het opsporen van fouten.
Het model laden
Het model wordt opgeslagen in een toegewezen SQL-poolgebruikerstabel als een hexadecimale tekenreeks. Er kunnen extra kolommen, zoals id en beschrijving, worden toegevoegd in de modeltabel om het model te identificeren. Gebruik varbinary(max) als het gegevenstype van de modelkolom. Hier volgt een codevoorbeeld voor een tabel die kan worden gebruikt voor het opslaan van modellen:
-- 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
Zodra het model is geconverteerd naar een hexadecimale tekenreeks en de opgegeven tabeldefinitie, gebruikt u de opdracht COPY of Polybase om het model in de toegewezen SQL-pooltabel te laden. In het volgende codevoorbeeld wordt de opdracht Kopiëren gebruikt om het model te laden.
-- 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>')
)
Scoren van het model
Zodra het model en de gegevens in het datawarehouse zijn geladen, gebruikt u de functie T-SQL PREDICT om het model te scoren. Zorg ervoor dat de nieuwe invoergegevens dezelfde indeling hebben als de trainingsgegevens die worden gebruikt voor het bouwen van het model. T-SQL PREDICT heeft twee invoergegevens: model en nieuwe score-invoergegevens en genereert nieuwe kolommen voor de uitvoer. Het model kan worden opgegeven als een variabele, een letterlijke of een scalaire sub_query. Gebruik WITH common_table_expression om een benoemde resultatenset op te geven voor de gegevensparameter.
In het onderstaande voorbeeld ziet u een voorbeeldquery met behulp van de voorspellingsfunctie. Er wordt een extra kolom met de naam Score en het gegevenstype float gemaakt met de voorspellingsresultaten. Alle kolommen met invoergegevens en uitvoervoorspellingskolommen zijn beschikbaar om weer te geven met de select-instructie. Zie PREDICT (Transact-SQL) voor meer informatie.
-- 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;
Volgende stappen
Zie PREDICT (Transact-SQL) voor meer informatie over de functie PREDICT.