Realizar a inferência LLM em lote usando ai_query
Importante
Esta funcionalidade está em Pré-visualização Pública.
Este artigo descreve como realizar inferência em massa usando a função SQL interna do Databricks ai_query
com um ponto de extremidade que utiliza APIs do modelo de fundação com a taxa de transferência provisionada. Os exemplos e orientações neste artigo são recomendados para cargas de trabalho de inferência em lote que usam modelos de linguagem grande (LLM) para processar várias entradas.
Você pode usar ai_query
com SQL ou PySpark para executar cargas de trabalho de inferência em lote. Para executar a inferência em lote em seus dados, especifique o seguinte em ai_query
:
- A tabela de entrada e a tabela de saída do Catálogo Unity
- O nome do ponto de extremidade da taxa de transferência provisionada
- O comando do modelo e quaisquer parâmetros deste
Consulte ai_query função para obter mais detalhes sobre essa função de IA.
Requisitos
- Um espaço de trabalho em uma região suportada pelas APIs do Foundation Model.
- Um dos seguintes:
- Computação multiuso com tamanho de computação
i3.2xlarge
ou maior executando o Databricks Runtime 15,4 ML LTS ou superior com pelo menos dois trabalhadores. - SQL warehouse de tamanho médio e maior.
- Computação multiuso com tamanho de computação
- Um modelo existente que serve o ponto de extremidade. Consulte APIs do Modelo de Base com taxa de transferência provisionada para criar um endpoint com taxa de transferência provisionada.
- Permissão de consulta na tabela Delta no Unity Catalog que contém os dados que você deseja usar.
- Defina o
pipelines.channel
nas propriedades da tabela como 'pré-visualização' para utilizarai_query()
. Consulte Exemplos para obter uma consulta de exemplo.
Usar ai_query
e SQL
A seguir está um exemplo de inferência em lote usando ai_query
e SQL. Este exemplo inclui modelParameters
com max_tokens
e temperature
e mostra como concatenar o prompt para seu modelo e a coluna de entrada usando concat()
. Há várias maneiras de realizar concatenações, 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}),
modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})
) as response
FROM ${input_table_name}
LIMIT ${input_num_rows}
)
Use ai_query
e PySpark
Se preferir usar Python, você também pode executar a inferência em lote com ai_query
e PySpark, conforme mostrado a seguir:
df_out = df.selectExpr("ai_query('{endpoint_name}', CONCAT('{prompt}', {input_column_name}), modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})) as {output_column_name}")
df_out.write.mode("overwrite").saveAsTable(output_table_name)
Bloco de anotações de exemplo de inferência em lote usando Python
O bloco de anotações de exemplo cria um ponto de extremidade de taxa de transferência provisionado e executa a inferência LLM em lote usando Python e o modelo Meta Llama 3.1 70B. Também oferece orientação sobre como fazer a avaliação comparativa da carga de trabalho de inferência em lote e criar um modelo de taxa de transferência provisionado para servir de ponto final.