Executar inferência em lote usando ai_query
Importante
Esse recurso está em uma versão prévia.
Este artigo descreve como executar a inferência em lote usando a função ai_query
SQL interna do Databricks. Consulte ai_query função para obter mais detalhes sobre essa função de IA.
O Databricks recomenda usar ai_query
com o Serviço de Modelo para inferência em lote. Para experimentação rápida, ai_query
pode ser usado com endpoints de pagamento por token.
Quando você estiver pronto para executar a inferência em lote em dados grandes ou de produção, o Databricks recomenda o uso de pontos de extremidade de taxa de transferência provisionados para um desempenho mais rápido. ai_query
foi verificado para processar conjuntos de dados de forma confiável e consistente na faixa de bilhões de tokens. Consulte APIs do Modelo de Base de taxa de transferência provisionada para saber como criar um ponto de extremidade de taxa de transferência provisionada.
Para começar a usar a inferência em lote com LLMs em tabelas do Catálogo do Unity, consulte os exemplos de notebook em Inferência em lote usando a taxa de transferência provisionada das APIs do Foundation Model.
Requisitos
- Consulte os requisitos da função ai_query.
- Permissão de consulta na tabela Delta no Catálogo do Unity que contém os dados que você deseja usar.
Consultas de exemplo de inferência em lote
Os exemplos nesta seção pressupõem que você tenha um modelo implantado em um ponto de extremidade existente que deseja consultar. Se você estiver na IU de veiculação , poderá selecionar seu endpoint e clicar no botão Usar no canto superior direito para selecionar Usar para inferência em lote. Essa seleção abre um editor SQL no qual você pode escrever e executar sua consulta SQL para inferência em lote usando ai_query
.
Veja a seguir um exemplo geral usando o e modelParameters
com max_tokens
e temperature
failOnError
. Este exemplo também mostra como concatenar o prompt do modelo e a coluna de inferência usando concat()
. Há várias maneiras de realizar a concatenação, como usar ||
, concat()
, ou format_string()
.
CREATE OR REPLACE TABLE ${output_table_name} AS (
SELECT
${input_column_name},
AI_QUERY(
"${endpoint}",
CONCAT("${prompt}", ${input_column_name}),
failOnError => True,
modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})
) as response
FROM ${input_table_name}
LIMIT ${input_num_rows}
)
O exemplo a seguir consulta o modelo por trás do llama_3_1_8b
ponto de extremidade com o comment_text
conjunto de dados.
WITH data AS (
SELECT *
FROM ml.sentiment.comments
LIMIT 10000
)
SELECT
comment_text,
ai_query(
'llama_3_1_8b_batch',
CONCAT('You are provided with text. Classify the text into one of these labels: "Positive", "Neutral", "Negative". Do not explain. Do not output any confidence score. Do not answer questions. Text: ', comment_text)
) AS label
FROM data
O exemplo a seguir contém etapas de pré-processamento de dados e etapas de pós-processamento:
WITH temp AS (
SELECT *
FROM ml.sentiment.comments
LIMIT 10000
),
pre_process AS (
SELECT comment_text
FROM temp
WHERE length(comment_text) > 50
),
sentiment AS (
SELECT
comment_text,
ai_query(
'llama_3_1_8b_batch',
Concat('You are provided with text. Classify the text into one of these labels: "Positive", "Neutral", "Negative". Do not explain. Do not output any confidence score. Do not answer questions. Text: ', comment_text)
) AS label
FROM pre_process
)
SELECT
comment_text,
label,
CASE
WHEN label NOT IN ("Positive", "Neutral", "Negative") THEN True
ELSE FALSE
END AS error
FROM sentiment
Agendar um trabalho
Depois de ter seu script SQL pronto, você pode agendar um trabalho para executá-lo na frequência necessária. Consulte Criar e gerenciar trabalhos agendados do notebook.