Effectuer une inférence par lot à l’aide de ai_query
Important
Cette fonctionnalité est disponible en préversion publique.
Cet article explique comment effectuer une inférence par lots à l’aide de la fonction ai_query
Databricks SQL intégrée. Pour plus d’informations sur cette fonction IA, consultez ai_query fonction .
Databricks recommande d’utiliser ai_query
avec Model Serve pour l’inférence par lots. Pour une expérimentation rapide, ai_query
vous pouvez utiliser des points de terminaison de paiement par jeton.
Lorsque vous êtes prêt à exécuter l’inférence par lots sur des données volumineuses ou de production, Databricks recommande d’utiliser des points de terminaison de débit approvisionnés pour accélérer les performances. ai_query
a été vérifié pour traiter de manière fiable et cohérente les jeux de données dans la plage de milliards de jetons. Pour savoir comment créer un point de terminaison de débit provisionné, consultez les API de modèle De base de débit provisionnée.
Pour commencer à utiliser l’inférence par lots avec des machines virtuelles LLMs sur les tables catalogue Unity, consultez les exemples de notebooks dans l’inférence Batch à l’aide du débit provisionné des API Foundation Model.
Spécifications
- Consultez les exigences de la fonction ai_query.
- Interrogez l’autorisation sur la table Delta dans le catalogue Unity qui contient les données que vous souhaitez utiliser.
Exemples de requêtes d’inférence batch
Les exemples de cette section supposent que vous disposez d’un modèle déployé sur un point de terminaison existant que vous souhaitez interroger. Si vous êtes dans l’interface utilisateur de service , vous pouvez sélectionner votre point de terminaison et cliquer sur le bouton Utiliser en haut à droite pour sélectionner Utiliser pour l’inférence par lots. Cette sélection ouvre un éditeur SQL dans lequel vous pouvez écrire et exécuter votre requête SQL pour l’inférence par lots à l’aide ai_query
de .
Voici un exemple général utilisant et failOnError
modelParameters
avec et .max_tokens
temperature
Cet exemple montre également comment concaténer l’invite de votre modèle et de la colonne d’inférence à l’aide concat()
de . Il existe plusieurs façons d’effectuer la concaténation, comme l’utilisation ||
, 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}
)
L’exemple suivant interroge le modèle derrière le llama_3_1_8b
point de terminaison avec le comment_text
jeu de données.
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
L’exemple suivant contient les étapes de prétraitement des données et les étapes de post-traitement :
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
Planifier un travail
Une fois que votre script SQL est prêt, vous pouvez planifier un travail pour l’exécuter à la fréquence dont vous avez besoin. Consultez Créer et gérer des tâches de notebooks planifiées.