Pontuar modelos de machine learning com o PREDICT

O pool de SQL dedicado oferece a funcionalidade de pontuar modelos de machine learning usando a conhecida linguagem T-SQL. Com o T-SQL PREDICT,você pode trazer seus modelos de machine learning existentes treinados com dados históricos e pontuá-los dentro dos limites seguros de seu data warehouse. A função PREDICT aceita um modelo ONNX (Open Neural Network Exchange) e dados como entradas. Esse recurso elimina a etapa de mover dados valiosos para fora do data warehouse para pontuação. Ele tem como objetivo capacitar os profissionais de dados a implantarem facilmente modelos de machine learning com a conhecida interface T-SQL, bem como colaborar de maneira contínua com os cientistas de dados que trabalham com a estrutura certa para a sua tarefa.

Observação

Atualmente, não há suporte para essa funcionalidade no pool de SQL sem servidor.

Essa funcionalidade requer que o modelo seja treinado fora do SQL do Synapse. Depois de criar o modelo, carregue-o no data warehouse e pontue-o com a sintaxe Predict do T-SQL para obter insights dos dados.

predictoverview

Como treinar o modelo

O pool de SQL dedicado espera que o modelo seja pré-treinado. Lembre-se dos seguintes fatores ao treinar um modelo de machine learning usado para executar previsões no pool de SQL dedicado.

  • O pool de SQL dedicado dá suporte apenas a modelos de formato ONNX. ONNX é um formato de modelo de código aberto que permite que você troque modelos entre várias estruturas para habilitar a interoperabilidade. Você pode converter seus modelos existentes no formato ONNX usando estruturas que suportam esse formato de maneira nativa 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 GitHub do ONNX fornece uma lista de estruturas e exemplos com suporte.

    Se você estiver usando o ML Automatizado para treinamento, certifique-se de definir o parâmetro enable_onnx_compatible_models como TRUE para produzir um modelo de formato ONNX. O Notebook do Machine Learning Automatizado mostra um exemplo de como usar o ML automatizado para criar um modelo de machine learning no formato ONNX.

  • Os tipos de dados a seguir têm suporte para entrada de dados:

    • int, bigint, real, float
    • char, nchar, varchar, nvarchar
  • Os dados de pontuação precisam estar no mesmo formato que os dados de treinamento. O PREDICT não oferece suporte a tipos de dados complexos, como matrizes multidimensionais. Portanto, para treinamento, certifique-se de que cada entrada do modelo corresponda a uma única coluna da tabela de pontuação, em vez de transmitir uma única matriz contendo todas as entradas.

  • Certifique-se de que os nomes e tipos de dados das entradas do modelo correspondam aos nomes de coluna e tipos de dados dos novos dados de previsão. A visualização de um modelo ONNX usando várias ferramentas de software livre disponíveis online pode ajudar ainda mais com a depuração.

Carregar o modelo

O modelo é armazenado em uma tabela de usuário do pool do SQL dedicado como uma cadeia de caracteres hexadecimal. Colunas adicionais, como ID e descrição, podem ser incluídas na tabela de modelo para identificar o modelo. Use varbinary (max) como o tipo de dados da coluna de modelo. Este é um exemplo de código de uma tabela que pode ser usada 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

Depois que o modelo for convertido em uma cadeia de caracteres hexadecimal e a definição da tabela for especificada, use o comando COPY ou o Polybase para carregar o modelo na tabela de pools de SQL dedicada. O exemplo de código a seguir usa o comando Copy 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>')
)

Pontuação do modelo

Depois que o modelo e os dados estiverem carregados no data warehouse, use a função T-SQL PREDICT para pontuar o modelo. Verifique se os novos dados de entrada estão no mesmo formato que os dados de treinamento usados para criar o modelo. O T-SQL PREDICT usa duas entradas: dados de entrada de modelo e de nova pontuaçã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. Use WITH common_table_expression para especificar um conjunto de resultados nomeado para o parâmetro de dados.

O exemplo a seguir mostra uma consulta de exemplo usando a função de previsão. Uma coluna adicional com a Pontuação de nome e o tipo de dados float é criada contendo os resultados da previsão. Todas as colunas de dados de entrada, bem como as colunas de previsão de saída, estão disponíveis para exibição com a instrução select. Para mais detalhes, consulte 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;

Próximas etapas

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