Partilhar via


Classifique modelos de aprendizado de máquina com o PREDICT

O pool SQL dedicado oferece a capacidade de pontuar modelos de aprendizado de máquina usando a linguagem T-SQL familiar. Com o T-SQL PREDICT, você pode trazer seus modelos de aprendizado de máquina existentes treinados com dados históricos e pontuá-los dentro dos limites seguros do seu data warehouse. A função PREDICT usa 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. O objetivo é capacitar os profissionais de dados a implantar facilmente modelos de aprendizado de máquina com a interface T-SQL familiar, bem como colaborar perfeitamente com cientistas de dados que trabalham com a estrutura certa para suas tarefas.

Nota

No momento, essa funcionalidade não é suportada no pool SQL sem servidor.

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

prevervisão geral

Treinando o Modelo

O pool SQL dedicado espera um modelo pré-treinado. Tenha em mente os seguintes fatores ao treinar um modelo de aprendizado de máquina usado para executar previsões no pool SQL dedicado.

  • O pool SQL dedicado suporta apenas modelos de formato ONNX. ONNX é um formato de modelo de código aberto que permite trocar modelos entre várias estruturas para permitir a interoperabilidade. Você pode converter seus modelos existentes para o formato ONNX usando estruturas que o suportam nativamente ou têm pacotes de conversão disponíveis. Por exemplo, o pacote sklearn-onnx converte modelos scikit-learn para ONNX. O repositório ONNX GitHub fornece uma lista de estruturas e exemplos suportados.

    Se você estiver usando 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 Automated Machine Learning Notebook mostra um exemplo de como usar o ML automatizado para criar um modelo de aprendizado de máquina do formato ONNX.

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

    • int, bigint, real, flutuar
    • Char, Varchar, Nvarchar
  • Os dados de pontuação precisam estar no mesmo formato que os dados de treinamento. Tipos de dados complexos, como matrizes multidimensionais, não são suportados pelo PREDICT. Portanto, para treinamento, certifique-se de que cada entrada do modelo corresponda a uma única coluna da tabela de pontuação, em vez de passar uma única matriz contendo todas as entradas.

  • Verifique se 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 previsão. Visualizar um modelo ONNX usando várias ferramentas de código aberto disponíveis on-line pode ajudar ainda mais na depuração.

Carregando o modelo

O modelo é armazenado em uma tabela de usuário dedicada do pool SQL como uma cadeia de caracteres hexadecimal. Colunas adicionais, como ID e descrição, podem ser adicionadas na tabela do modelo para identificar o modelo. Use varbinary(max) como o tipo de dados da coluna do modelo. Aqui está um exemplo de código para 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 de tabela especificada, use o comando COPY ou Polybase para carregar o modelo na tabela de pool 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 forem carregados no data warehouse, use a função T-SQL PREDICT para pontuar o modelo. Certifique-se de que os novos dados de entrada estejam no mesmo formato que os dados de treinamento usados para criar o modelo. O T-SQL PREDICT usa duas entradas: modelo e novos dados de entrada de pontuação, e gera novas colunas para a saída. O modelo pode ser especificado como uma variável, um sub_query literal ou escalar. Use WITH common_table_expression para especificar um conjunto de resultados nomeado para o parâmetro data.

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

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