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 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.
  • 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 utilizar 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 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.

Inferência em lote LLM com um bloco de anotações de ponto de extremidade de taxa de transferência provisionada

Obter bloco de notas