Avaliar modelos de aprendizado de máquina com o PREDICT

Tip

Microsoft Fabric Data Warehouse é um armazém relacional de escala empresarial com base de data lake, arquitetura pronta para o futuro, IA integrada e novos recursos. Se você não estiver familiarizado com o data warehouse, comece com Fabric Data Warehouse. As cargas de trabalho existentes de pools de SQL dedicados podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

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 SQL pool dedicado tem como pré-requisito um modelo 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 código aberto disponíveis online pode ajudar ainda mais na 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>')
)

Avaliaçã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: o modelo e novos dados de entrada para pontuação, e gera novas colunas para a saída. O modelo pode ser especificado como uma variável, um literal ou uma subconsulta 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 o nome Pontuação 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).