Transformer des données non structurées à l’aide de fonctions d’IA

Les fonctions d’IA sont des fonctions intégrées que vous pouvez utiliser pour appliquer des LLM ou des techniques de recherche de pointe sur des données stockées sur Azure Databricks pour la transformation et l’analyse de données. Ils peuvent être exécutés à partir de Databricks SQL, de notebooks, de pipelines Lakeflow et de flux de travail.

Les fonctions IA sont simples à utiliser, rapides et évolutives. Les analystes peuvent les utiliser pour appliquer l’intelligence des données à leurs données propriétaires, tandis que les ingénieurs données, les scientifiques des données et les ingénieurs Machine Learning peuvent les utiliser pour créer des pipelines par lots de niveau production.

Lorsque vous appelez une fonction IA, votre requête s’exécute sur le calcul depuis lequel vous la soumettez, comme un entrepôt SQL, un notebook, un cluster ou un pipeline. Selon la fonction, l’inférence du modèle peut s’exécuter sur une infrastructure distincte gérée par Databricks, facturée en plus de ce calcul. Voir les coûts des charges de travail de la fonction IA.

Requirements

  • Les fonctions IA ne sont pas disponibles sur les entrepôts SQL classiques.
  • Databricks Runtime 15.4 LTS ou supérieur est requis. Databricks Runtime 18.2 ou supérieur est recommandé pour les meilleures performances et l’accès aux dernières fonctionnalités.

Tâche spécifique et usage général

AI Functions a des fonctions spécifiques aux tâches et à usage général :

  • Fonctions IA spécifiques à une tâche : fonctions conçues à des fins optimisées pour une tâche spécifique, telles que l’analyse de document, l’extraction d’entités, la classification et l’analyse des sentiments. Ces fonctions sont alimentées par des systèmes gérés par Azure Databricks et dédiés à la recherche. Certaines fonctions incluent des expériences d’interface utilisateur. Consultez les fonctions IA spécifiques à la tâche pour les fonctions et les modèles pris en charge.
  • ai_query — Fonction à usage général pour la flexibilité des tâches et des modèles. Fournissez une invite et choisissez n’importe quelle API Foundation Model prise en charge. Voir Utiliser ai_query.

Arbre de décision pour les fonctions IA spécifiques aux tâches et ai_query

Pour restreindre les fonctions IA spécifiques à une tâche auxquelles votre organisation peut accéder, consultez les autorisations du catalogue Unity d’AI Functions.

Fonctions IA spécifiques à une tâche

Les fonctions spécifiques à une tâche sont limitées pour une tâche spécifique afin de pouvoir automatiser les transformations de routine, telles que l’extraction d’entités, la traduction et la classification. Databricks recommande ces fonctions pour commencer, car elles appellent des techniques de recherche de pointe gérées par Databricks et ne nécessitent aucune personnalisation.

Consultez Analyser les avis des clients à l’aide d’AI Functions pour obtenir un exemple.

Les fonctions suivantes sont regroupées par tâche.

Traitement intelligent des documents :

Fonction Descriptif
ai_parse_document Analyser le contenu structuré (texte, tableaux, descriptions de figure) et la disposition à partir de documents non structurés à l’aide de techniques de recherche de pointe.
ai_extract Extrayez des champs structurés à partir de documents ou de texte à l’aide d’un schéma que vous définissez.
ai_classify Classifiez le texte d’entrée en fonction des étiquettes que vous fournissez à l’aide de techniques de recherche de pointe.
ai_prep_search (bêta) Transformez les documents analysés ou le texte brut et le markdown en segments prêts à la recherche, optimisés pour les pipelines IA Search et RAG.
ai_search (Bêta) Récupérez des documents classés et dédupliqués ainsi qu’une réponse fondée pour une requête en langage naturel sur une ou plusieurs sources de connaissances.
ai_enrich (Bêta) Générez de nouvelles colonnes pour chaque ligne à partir d’un schéma que vous définissez, éventuellement basé sur des index de recherche IA ou une recherche web.

Transformer le texte :

Fonction Descriptif
ai_corriger_la_grammaire Corrigez les erreurs grammaticales dans le texte à l’aide d’un modèle d’IA de pointe.
ai_translate Traduisez du texte dans une langue cible spécifiée à l’aide d’un modèle d’IA de pointe.
ai_summarize Générez un résumé du texte en utilisant SQL et un modèle d’IA de pointe.
ai_mask Masquez les entités spécifiées dans le texte à l’aide d’un modèle d’IA de pointe.

Analyser le texte :

Fonction Descriptif
ai_analyze_sentiment Effectuez une analyse de sentiment sur le texte d’entrée à l’aide d’un modèle d’IA de pointe.
ai_similarity Comparez deux chaînes de caractères et calculez le score de similarité sémantique à l’aide d’un modèle d’IA de pointe.

Générez du contenu. Pour obtenir des invites personnalisées ou un modèle spécifique, consultez Utiliser ai_query:

Fonction Descriptif
ai_gen Répondez à une demande fournie par l’utilisateur en utilisant un modèle d’IA de pointe.

Série chronologique de prévision :

Fonction Descriptif
ai_forecast Prévision des données jusqu’à un horizon spécifié. Cette fonction TVF est conçue pour extrapoler les données de série chronologique dans le futur.

Analyser les modifications des métriques :

Fonction Descriptif
ai_top_drivers (bêta) Valeurs de dimension de classement qui contribuent le plus à une modification d’une métrique entre un groupe de contrôles et un groupe de tests.

Effectuez une recherche avec des incorporations de recherche IA :

Fonction Descriptif
vector_search Effectuez une recherche et des requêtes dans un index AI Search à l’aide d’un modèle d’IA de pointe.

Utiliser ai Functions dans les flux de travail de production

Pour l’inférence par lots à grande échelle, vous pouvez intégrer des fonctions d’IA spécifiques à certaines tâches, ou la fonction polyvalente ai_query, dans vos workflows de production, comme les pipelines Lakeflow, les workflows Databricks et Structured Streaming. Cela permet un traitement de niveau industriel à grande échelle.

Meilleures pratiques pour les fonctions IA en production :

Laissez AI Functions gérer votre charge de travail à grande échelle : AI Functions gère automatiquement la parallélisation, les nouvelles tentatives et la mise à l’échelle. Il est recommandé d’envoyer votre jeu de données complet dans une seule requête plutôt que de le fractionner manuellement en petits lots. Les performances peuvent ne pas être mises à l’échelle linéairement entre les charges de travail très petites et les charges de travail à grande échelle.

Utilisez des modèles de base hébergés par Databricks : Lorsque vous utilisez la fonction IA ai_query, utilisez des modèles de base hébergés par Databricks (préfixés avec databricks-), et non un débit provisionné. Ces points de terminaison provisionless sont entièrement gérés et fonctionnent le mieux pour le traitement par lots.

Consultez Déployer des pipelines d’inférence par lots pour obtenir des exemples et des détails.

Surveiller la progression des fonctions IA

Pour comprendre le nombre d’inférences terminées ou ayant échoué et dépanner les performances, vous pouvez surveiller la progression des fonctions IA à l’aide de la fonctionnalité de profil de requête.

Dans Databricks Runtime 16.1 ML et versions ultérieures, à partir de la fenêtre de requête de l’éditeur SQL dans votre espace de travail :

  1. Sélectionnez le lien, En cours d’exécution--- en bas de la fenêtre Résultats bruts . La fenêtre de performances s’affiche à droite.
  2. Cliquez sur Afficher le profil de requête pour afficher les détails des performances.
  3. Cliquez sur REQUÊTE IA pour afficher les métriques de cette requête particulière, y compris le nombre d’inférences terminées et ayant échoué et le temps total nécessaire à la fin de la requête.

Afficher les coûts des charges de travail de fonction IA

Le calcul qui exécute votre requête est toujours facturé, par exemple un entrepôt SQL ou un cluster de tâches. L’existence d’un coût d’inférence supplémentaire du modèle dépend de la fonction :

  • Les fonctions spécifiques à la tâche (par exemple, ai_classify, ai_summarize, ai_translate) exécutent l’inférence sur une infrastructure GPU serverless gérée par Databricks via Model Serving. Vous ne provisionnez pas cette infrastructure, mais elle est facturée en plus de votre calcul de requête.
  • ai_query est facturé pour le terminau de service modèle que vous spécifiez. Les points de terminaison de modèles de base hébergés par Databricks sont facturés comme les fonctions spécifiques à une tâche ; les points de terminaison de modèles personnalisés et avec débit provisionné s’exécutent sur leurs propres ressources de calcul dédiées au serving et sont facturés en conséquence.
  • ai_forecast et ai_top_drivers s’exécutent entièrement sur le calcul à partir duquel vous les soumettez, sans coût d’inférence séparé.
  • vector_search interroge votre index IA Search via le service AI Search géré par Databricks.

Les coûts des fonctions IA sont enregistrés dans le produit MODEL_SERVING sous la catégorie d’offre BATCH_INFERENCE. Consultez Afficher les coûts des charges de travail d’inférence par lots pour obtenir un exemple de requête.

Note

Pour ai_parse_document, ai_extractet ai_classify les coûts sont enregistrés dans le cadre du AI_FUNCTIONS produit. Consultez Afficher les coûts des exécutions de ai_parse_document pour un exemple de requête.

Afficher les coûts des charges de travail d’inférence par lots

Les exemples suivants montrent comment filtrer les charges de travail d’inférence par lots en fonction de la tâche, du calcul, des entrepôts SQL et des pipelines Lakeflow.

Consultez Surveiller les coûts de service de modèle pour obtenir des exemples généraux sur la façon d’afficher les coûts de vos charges de travail d’inférence par lots qui utilisent AI Functions.

Jobs

La requête suivante montre quelles tâches sont utilisées pour l’inférence par lots à l’aide de la table des systèmes system.workflow.jobs. Consultez Superviser les coûts et les performances des tâches à l'aide des tables système.


SELECT *
FROM system.billing.usage u
  JOIN system.workflow.jobs x
    ON u.workspace_id = x.workspace_id
    AND u.usage_metadata.job_id = x.job_id
  WHERE u.usage_metadata.workspace_id = <workspace_id>
    AND u.billing_origin_product = "MODEL_SERVING"
    AND u.product_features.model_serving.offering_type = "BATCH_INFERENCE";

Compute

Les clusters suivants sont utilisés pour l’inférence par lots à l’aide de la system.compute.clusters table des systèmes.

SELECT *
FROM system.billing.usage u
  JOIN system.compute.clusters x
    ON u.workspace_id = x.workspace_id
    AND u.usage_metadata.cluster_id = x.cluster_id
  WHERE u.usage_metadata.workspace_id = <workspace_id>
    AND u.billing_origin_product = "MODEL_SERVING"
    AND u.product_features.model_serving.offering_type = "BATCH_INFERENCE";

Pipelines déclaratifs Lakeflow Spark

L’exemple suivant montre les pipelines Lakeflow utilisés pour l’inférence par lots à l’aide de la table des systèmes system.lakeflow.pipelines.

SELECT *
FROM system.billing.usage u
  JOIN system.lakeflow.pipelines x
    ON u.workspace_id = x.workspace_id
    AND u.usage_metadata.dlt_pipeline_id = x.pipeline_id
  WHERE u.usage_metadata.workspace_id = <workspace_id>
    AND u.billing_origin_product = "MODEL_SERVING"
    AND u.product_features.model_serving.offering_type = "BATCH_INFERENCE";

Entrepôt SQL

L’exemple suivant montre quels entrepôts SQL sont utilisés pour l’inférence par lots à l’aide de la system.compute.warehouses table des systèmes.

SELECT *
FROM system.billing.usage u
  JOIN system.compute.clusters x
    ON u.workspace_id = x.workspace_id
    AND u.usage_metadata.cluster_id = x.cluster_id
  WHERE u.workspace_id = <workspace_id>
    AND u.billing_origin_product = "MODEL_SERVING"
    AND u.product_features.model_serving.offering_type = "BATCH_INFERENCE";

Afficher les coûts des ai_parse_document exécutions

L’exemple suivant montre comment interroger les tables système de facturation pour afficher les coûts des ai_parse_document exécutions.


SELECT *
FROM system.billing.usage u
WHERE u.workspace_id = <workspace_id>
  AND u.billing_origin_product = "AI_FUNCTIONS"
  AND u.product_features.ai_functions.ai_function = "AI_PARSE_DOCUMENT";