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