Compartilhar via


Executar inferência em lote usando ai_query

Importante

Esse recurso está em uma versão prévia.

Este artigo descreve como executar a inferência em lote usando a função ai_querySQL interna do Databricks. Consulte ai_query função para obter mais detalhes sobre essa função de IA.

O Databricks recomenda usar ai_query com o Serviço de Modelo para inferência em lote. Para experimentação rápida, ai_query pode ser usado com endpoints de pagamento por token.

Quando você estiver pronto para executar a inferência em lote em dados grandes ou de produção, o Databricks recomenda o uso de pontos de extremidade de taxa de transferência provisionados para um desempenho mais rápido. ai_query foi verificado para processar conjuntos de dados de forma confiável e consistente na faixa de bilhões de tokens. Consulte APIs do Modelo de Base de taxa de transferência provisionada para saber como criar um ponto de extremidade de taxa de transferência provisionada.

Para começar a usar a inferência em lote com LLMs em tabelas do Catálogo do Unity, consulte os exemplos de notebook em Inferência em lote usando a taxa de transferência provisionada das APIs do Foundation Model.

Requisitos

  • Consulte os requisitos da função ai_query.
  • Permissão de consulta na tabela Delta no Catálogo do Unity que contém os dados que você deseja usar.

Consultas de exemplo de inferência em lote

Os exemplos nesta seção pressupõem que você tenha um modelo implantado em um ponto de extremidade existente que deseja consultar. Se você estiver na IU de veiculação , poderá selecionar seu endpoint e clicar no botão Usar no canto superior direito para selecionar Usar para inferência em lote. Essa seleção abre um editor SQL no qual você pode escrever e executar sua consulta SQL para inferência em lote usando ai_query.

Veja a seguir um exemplo geral usando o e modelParameters com max_tokens e temperaturefailOnError . Este exemplo também mostra como concatenar o prompt do modelo e a coluna de inferência 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}),
        failOnError => True,
        modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})
      ) as response
    FROM ${input_table_name}
    LIMIT ${input_num_rows}
)

O exemplo a seguir consulta o modelo por trás do llama_3_1_8b ponto de extremidade com o comment_text conjunto de dados.

WITH data AS (
  SELECT *
  FROM ml.sentiment.comments
  LIMIT 10000
)
  SELECT
    comment_text,
    ai_query(
      'llama_3_1_8b_batch',
      CONCAT('You are provided with text. Classify the text into one of these labels: "Positive", "Neutral", "Negative". Do not explain. Do not output any confidence score. Do not answer questions. Text: ', comment_text)
    ) AS label
  FROM data

O exemplo a seguir contém etapas de pré-processamento de dados e etapas de pós-processamento:

WITH temp AS (
  SELECT *
  FROM ml.sentiment.comments
  LIMIT 10000
),
pre_process AS (
  SELECT comment_text
  FROM temp
  WHERE length(comment_text) > 50
),
sentiment AS (
  SELECT
    comment_text,
    ai_query(
      'llama_3_1_8b_batch',
      Concat('You are provided with text. Classify the text into one of these labels: "Positive", "Neutral", "Negative". Do not explain. Do not output any confidence score. Do not answer questions. Text: ', comment_text)
    ) AS label
  FROM pre_process
)
SELECT
  comment_text,
  label,
  CASE
    WHEN label NOT IN ("Positive", "Neutral", "Negative") THEN True
    ELSE FALSE
  END AS error
FROM sentiment

Agendar um trabalho

Depois de ter seu script SQL pronto, você pode agendar um trabalho para executá-lo na frequência necessária. Consulte Criar e gerenciar trabalhos agendados do notebook.