Compartir vía


Realización de la inferencia por lotes mediante ai_query

Importante

Esta característica está en versión preliminar pública.

En este artículo se describe cómo realizar la inferencia por lotes mediante la función ai_querySQL de Databricks integrada . Consulte ai_query función para obtener más información sobre esta función de IA.

Databricks recomienda usar ai_query con Model Serving para la inferencia por lotes. Para la experimentación rápida, ai_query se puede usar con puntos de conexión de pago por token.

Cuando esté listo para ejecutar la inferencia por lotes en datos grandes o de producción, Databricks recomienda usar puntos de conexión de rendimiento aprovisionados para un rendimiento más rápido. ai_query se ha comprobado para procesar conjuntos de datos de forma confiable y coherente en el intervalo de miles de millones de tokens. Consulte Api de modelo de rendimiento aprovisionado para obtener información sobre cómo crear un punto de conexión de rendimiento aprovisionado.

Para empezar a trabajar con la inferencia por lotes con llms en tablas del catálogo de Unity, consulte los ejemplos de cuadernos de inferencia por lotes mediante las API de Foundation Model aprovisionadas.

Requisitos

  • Consulte los requisitos de la función ai_query.
  • Permiso de consulta en la tabla Delta del catálogo de Unity que contiene los datos que desea usar.

Consultas de ejemplo de inferencia por lotes

En los ejemplos de esta sección se supone que tiene un modelo implementado en un punto de conexión existente que desea consultar. Si está en la interfaz de usuario de servicio , puede seleccionar el punto de conexión y hacer clic en el botón Usar de la parte superior derecha para seleccionar Usar para la inferencia por lotes. Esta selección abre un editor de SQL donde puede escribir y ejecutar la consulta SQL para la inferencia por lotes mediante ai_query.

A continuación se muestra un ejemplo general mediante y failOnError modelParameters con max_tokens y temperature. En este ejemplo también se muestra cómo concatenar la solicitud del modelo y la columna de inferencia mediante concat(). Hay varias maneras de realizar la concatenación, como usar ||, concat()o 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}
)

En el ejemplo siguiente se consulta el modelo detrás del llama_3_1_8b punto de conexión con el comment_text conjunto de datos.

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

En el ejemplo siguiente se incluyen los pasos de preprocesamiento de datos y los pasos posteriores al procesamiento:

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

Programación de un trabajo

Una vez que el script SQL esté listo, puede programar un trabajo para ejecutarlo con la frecuencia que necesite. Consulte Creación y administración de trabajos de cuaderno programados.