Classificar modelos de machine learning com PREDICT

O Conjunto de SQL dedicado fornece-lhe a capacidade de classificar modelos de machine learning com a linguagem T-SQL familiar. Com o T-SQL PREDICT, pode trazer os seus modelos de machine learning existentes preparados com dados históricos e classificá-los dentro dos limites seguros do seu armazém de dados. A função PREDICT assume um modelo ONNX (Open Neural Network Exchange) e dados como entradas. Esta funcionalidade elimina o passo de mover dados valiosos para fora do armazém de dados para classificação. Tem como objetivo capacitar os profissionais de dados para implementarem facilmente modelos de machine learning com a interface T-SQL familiar, bem como colaborar de forma totalmente integrada com cientistas de dados que trabalham com a estrutura certa para a sua tarefa.

Nota

Esta funcionalidade não é atualmente suportada no conjunto de SQL sem servidor.

A funcionalidade requer que o modelo seja preparado fora do SQL do Synapse. Depois de criar o modelo, carregue-o para o armazém de dados e marque-o com a sintaxe T-SQL Predict para obter informações dos dados.

previsão geral

Preparar o Modelo

O conjunto de SQL dedicado espera um modelo pré-preparado. Tenha em atenção os seguintes fatores ao preparar um modelo de machine learning que é utilizado para realizar predições no conjunto de SQL dedicado.

  • O conjunto de SQL dedicado só suporta modelos de formato ONNX. O ONNX é um formato de modelo open source que lhe permite trocar modelos entre várias arquiteturas para permitir a interoperabilidade. Pode converter os seus modelos existentes em formato ONNX com arquiteturas que o suportam nativamente ou que têm pacotes de conversão disponíveis. Por exemplo, o pacote sklearn-onnx converte modelos scikit-learn em ONNX. O repositório do GitHub ONNX fornece uma lista de arquiteturas e exemplos suportados.

    Se estiver a utilizar o ML Automatizado para preparação, certifique-se de que define o parâmetro enable_onnx_compatible_models como VERDADEIRO para produzir um modelo de formato ONNX. O Bloco de Notas do Machine Learning Automatizado mostra um exemplo de como utilizar o ML automatizado para criar um modelo de machine learning de formato ONNX.

  • Os seguintes tipos de dados são suportados para os dados de entrada:

    • int, bigint, real, float
    • caráter, varchar, nvarchar
  • Os dados de classificação têm de estar no mesmo formato que os dados de preparação. Os tipos de dados complexos, como matrizes multidimensionais, não são suportados pela PREDICT. Assim, para preparação, certifique-se de que cada entrada do modelo corresponde a uma única coluna da tabela de classificação em vez de transmitir uma única matriz que contenha todas as entradas.

  • Certifique-se de que os nomes e os tipos de dados das entradas do modelo correspondem aos nomes das colunas e aos tipos de dados dos novos dados de predição. Visualizar um modelo ONNX com várias ferramentas open source disponíveis online pode ajudar ainda mais na depuração.

Carregar o modelo

O modelo é armazenado numa tabela de utilizadores do conjunto de SQL dedicada como uma cadeia hexadecimal. Podem ser adicionadas colunas adicionais, como o ID e a descrição, na tabela de modelos para identificar o modelo. Utilize varbinary(max) como o tipo de dados da coluna do modelo. Eis um exemplo de código para uma tabela que pode ser utilizada para armazenar modelos:

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

Assim que o modelo for convertido numa cadeia hexadecimal e a definição da tabela especificada, utilize o comando COPY ou Polybase para carregar o modelo na tabela de conjunto de SQL dedicada. O seguinte exemplo de código utiliza o comando Copiar para carregar o modelo.

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

Marcar o modelo

Assim que o modelo e os dados forem carregados no armazém de dados, utilize a função T-SQL PREDICT para classificar o modelo. Certifique-se de que os novos dados de entrada estão no mesmo formato que os dados de preparação utilizados para criar o modelo. T-SQL PREDICT utiliza duas entradas: modelo e novos dados de entrada de classificação e gera novas colunas para a saída. O modelo pode ser especificado como uma variável, um literal ou um sub_query escalar. Utilize WITH common_table_expression para especificar um conjunto de resultados com nome para o parâmetro de dados.

O exemplo abaixo mostra uma consulta de exemplo com a função de predição. É criada uma coluna adicional com o nome Score e o tipo de dados float que contém os resultados da predição. Todas as colunas de dados de entrada, bem como as colunas de predição de saída, estão disponíveis para serem apresentadas com a instrução select. Para obter mais detalhes, veja 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;

Passos seguintes

Para saber mais sobre a função PREDICT, veja PREDICT (Transact-SQL).