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_query
SQL 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.