Delen via


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 trainen met historische gegevens en deze scoren binnen de veilige grenzen van uw datawarehouse. 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 om te scoren. Het is bedoeld om gegevensprofessionals in staat te stellen om eenvoudig machine learning-modellen te implementeren met de vertrouwde T-SQL-interface en naadloos samen te werken met gegevenswetenschappers die werken met het juiste framework voor hun taak.

Notitie

Deze functionaliteit wordt momenteel niet ondersteund in een serverloze SQL-pool.

De functionaliteit vereist dat het model buiten Synapse SQL wordt getraind. Nadat u het model hebt gemaakt, laadt u het in het datawarehouse en scoret u het met de T-SQL Predict-syntaxis om inzichten uit de gegevens te verkrijgen.

predictoverview

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 een ONNX-indeling met behulp van frameworks die dit systeemeigen ondersteunen of waarvoor conversiepakketten beschikbaar zijn. Het pakket sklearn-onnx converteert bijvoorbeeld scikit-learn-modellen naar ONNX. ONNX GitHub-opslagplaats biedt een lijst met ondersteunde frameworks en voorbeelden.

    Als u Geautomatiseerde ML gebruikt voor training, moet u de parameter enable_onnx_compatible_models instellen op TRUE om een ONNX-indelingsmodel te produceren. Automated Machine Learning Notebook toont een voorbeeld van het gebruik van geautomatiseerde ML om een machine learning-model met 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 voor de training dus voor dat elke invoer van het model overeenkomt met één kolom van de scoretabel in plaats van één matrix met alle invoer door te geven.

  • 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 foutopsporing.

Het model laden

Het model wordt opgeslagen in een gebruikerstabel van een toegewezen SQL-pool als een hexadecimale tekenreeks. Aanvullende kolommen, zoals id en beschrijving, kunnen worden toegevoegd aan 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 tabeldefinitie is opgegeven, 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>')
)

Het model scoren

Zodra het model en de gegevens in het datawarehouse zijn geladen, gebruikt u de functie T-SQL PREDICT om het model te beoordelen. Zorg ervoor dat de nieuwe invoergegevens dezelfde indeling hebben als de trainingsgegevens die worden gebruikt voor het bouwen van het model. T-SQL PREDICT gebruikt 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 de voorspellingsfunctie. Er wordt een extra kolom met de naam Score en 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.