Realize a inferência de lotes 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. Consulte a função ai_query para obter mais detalhes sobre essa função de IA.

Databricks recomenda o uso de ai_query com servindo modelo para inferência de lotes. Para uma rápida experimentação, ai_query pode ser usado com o endpoint pay-per-tokens. Quando o senhor estiver pronto para executar lotes de inferência em dados grandes ou de produção, o site Databricks recomenda o uso do endpoint de provisionamento Taxa de transferência para um desempenho mais rápido. Consulte o provisionamento Taxa de transferência Foundation Model APIs para saber como criar um provisionamento Taxa de transferência endpoint.

Para começar com a inferência de lotes com LLMs nas tabelas Unity Catalog, consulte os exemplos do Notebook em inferência de lotes usando o Foundation Model APIs provisionamento Taxa de transferência.

Requisitos

  • Veja os requisitos da função ai_query.

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

consultas de exemplo de inferência de lotes

Os exemplos desta seção pressupõem que o senhor tenha um modelo implantado em um endpoint existente que deseja consultar. Se estiver na UI de serviço, o senhor pode selecionar o site endpoint e clicar no botão Use (Usar) no canto superior direito para selecionar Use for lotes inference (Usar para inferência de lotes). Essa seleção abre um editor SQL onde o senhor pode escrever e executar sua consulta SQL para inferência de lotes usando ai_query.

Veja a seguir um exemplo geral usando failOnError e modelParameters com max_tokens e temperature. Esse exemplo também mostra como concatenar o prompt para seu 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 endpoint com o comment_text dataset.

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 dados de pré-processamento dos passos e pós-processamento dos passos:

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

programar um trabalho

Depois de ter o script SQL pronto, o senhor pode programar um Job para executá-lo com a frequência que precisar. Consulte Criar e gerenciar o trabalho agendado do Notebook.