Ler em inglês

Partilhar via


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.

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.
  • 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 usar ai_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 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}
)

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)

Exemplos de notebooks de inferência em lote usando Python

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

Get caderno

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

Incorporações de inferência em lote LLM com um bloco de anotações de ponto de extremidade de taxa de transferência provisionado

Get computador portátil