Realize a inferência de lotes LLM usando ai_query

Prévia

Esse recurso está em Prévia Pública.

Este artigo descreve como realizar a inferência de lotes usando a função integrada Databricks SQL ai_query com um endpoint que usa o Foundation Model APIs provisionamento Taxa de transferência. Os exemplos e as orientações deste artigo são recomendados para cargas de trabalho de inferência de lotes que usam modelos de linguagem grandes (LLM) para processar várias entradas.

O senhor pode usar ai_query com SQL ou PySpark para executar muitas cargas de trabalho de inferência. Para executar a inferência de lotes em seus dados, especifique o seguinte em ai_query:

  • Tabela de entrada e tabela de saída do Unity Catalog

  • O provisionamento Taxa de transferência endpoint name

  • O prompt do modelo e quaisquer parâmetros do modelo

Consulte a funçãoai_query para obter mais detalhes sobre essa função AI.

Requisitos

  • Um workspace em uma região com suporte do Foundation Model APIs .

  • Um dos seguintes:

    • compute para todos os fins com compute tamanho i3.2xlarge ou maior, executando Databricks Runtime 15.4 ML LTS ou acima com pelo menos dois trabalhadores.

    • SQL warehouse médio e maior.

  • Um modelo de serviço existente endpoint. Consulte o provisionamento Taxa de transferência Foundation Model APIs para criar um provisionamento Taxa de transferência endpoint.

  • Permissão de consulta na tabela Delta no Unity Catalog que contém os dados que o senhor deseja usar.

  • Defina o pipelines.channel nas propriedades da tabela como 'visualização' para usar ai_query(). Veja exemplos para ver um exemplo de consulta.

Use ai_query e SQL

A seguir, um exemplo de inferência de lotes usando ai_query e SQL. Esse 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 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}),
        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, o senhor também pode executar lotes de inferência 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)

exemplo de inferência de lotes Notebook usando Python

O exemplo do Notebook cria um provisionamento Taxa de transferência endpoint e execução lotes LLM inferência usando Python e o modelo Meta Llama 3.1 70B. Ele também oferece orientação sobre o benchmarking de sua carga de trabalho de inferência de lotes e a criação de um provisionamento Taxa de transferência servindo o modelo endpoint.

LLM lotes inference with a provisionamento Taxa de transferência endpoint Notebook

Abra o bloco de anotações em outra guia