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 unidade Catalog de entrada table e de saída table
- O nome do ponto de extremidade da taxa de transferência provisionada
- O prompt do modelo e qualquer modelo parameters
Consulte ai_query função para obter mais detalhes sobre essa função de IA.
- 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.
- Solicitar permissão sobre o Delta table no Unity Catalog que contém os dados que pretende usar.
-
Set o
pipelines.channel
nas propriedades table como 'visualização' para usarai_query()
. Consulte Exemplos para obter uma consulta de exemplo.
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 o column 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}
)
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)
O bloco de anotações de exemplo a seguir cria um ponto de extremidade de taxa de transferência provisionado e executa 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.
Inferência em lote LLM com um bloco de anotações de ponto de extremidade de taxa de transferência provisionada
O caderno de exemplo a seguir cria um endpoint de throughput provisionado e executa processamento em lote de inferência LLM usando Python e a sua escolha do modelo de incorporação GTE Large (inglês) ou BGE Large (inglês).