Partager via


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_queryDatabricks 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_queryde .

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.