Aller au contenu principal

Jobs de déploiement MLflow 3

info

Aperçu

Cette fonctionnalité est en aperçu public.

remarque

Les jobs de déploiement n'ont pas besoin d'être utilisés avec les clients MLflow 3 ou le suivi de modèle, et peuvent être activés sur des modèles plus anciens et existants dans Unity Catalog. Il est toutefois recommandé d'utiliser MLflow 3.

Cet article décrit comment utiliser les jobs de déploiement MLflow dans le cadre de votre flux de travail de Machine Learning pour gérer le cycle de vie complet des modèles ML.

Que sont les Jobs de déploiement ?

Les jobs de déploiement vous permettent d'automatiser des tâches comme l'évaluation, l'approbation et le déploiement chaque fois qu'une nouvelle version de modèle est créée, s'intégrant parfaitement aux modèles Unity Catalog et aux Lakeflow Jobs. Ces jobs simplifient la configuration des pipelines de déploiement de modèles, intègrent des approbations par intervention humaine et fournissent des workflows gouvernés avec une visibilité claire sur la progression et le contexte historique de chaque version de modèle.

Avec les jobs de déploiement, le processus est entièrement automatisé ; ils se déclenchent automatiquement chaque fois qu'une nouvelle version de modèle est créée, affichant l'état d'exécution du job de déploiement directement sur les pages du modèle et de la version du modèle. Les informations historiques concernant chaque exécution de Job de déploiement sont facilement suivies dans les logs d'activité, ce qui garantit la transparence et la facilité de gestion.

Intégration avec le Suivi de modèles MLflow 3

Databricks recommande d'utiliser MLflow 3 Tracking pour enregistrer les modèles et effectuer l'évaluation dans le job de déploiement. Le nouveau client enregistrera automatiquement les métriques de la partie évaluation du job de déploiement, qui seront visibles dans l'interface utilisateur de la version du modèle Unity Catalog. Cela permettra aux utilisateurs d'utiliser les métriques, les paramètres et les traces centralisés sur la page des versions du modèle pour prendre des décisions éclairées quant au moment de faire progresser le modèle dans le cycle de vie du job de déploiement.

Intégration avec Unity Catalog CRÉER UN MODÈLE VERSION ACL

Les jobs de déploiement s'intègrent naturellement à l'ACL Unity Catalog Create Model Version récemment publiée pour compléter votre récit MLOps. Plus précisément, un utilisateur peut se voir accorder l'ACL CREATE MODEL VERSION pour enregistrer de nouvelles versions de modèle dans le modèle. Une fois que l'utilisateur juge un modèle suffisamment bon pour la production, il enregistre cette version dans le modèle Unity Catalog, ce qui déclenchera le job de déploiement pour évaluer automatiquement le modèle. À ce stade, un approbateur peut approuver manuellement cette version à déployer ou la rejeter.

important

Le job de déploiement se déclenchera automatiquement à l'aide des informations d'identification du propriétaire du modèle. Cela signifie que donner à un utilisateur l'autorisation CREATE MODEL VERSION sur le modèle Unity Catalog permet à l'utilisateur d'exécuter du code arbitraire dans le cadre du job. C'est pourquoi Databricks vous recommande de configurer le Job de déploiement en utilisant un Service Principal avec des permissions minimales afin d'éviter l'élévation des privilèges.

Exemples de Jobs de déploiement

Voici quelques exemples de Jobs de déploiement qui reflètent des cas d'utilisation courants. Veuillez noter qu'il ne s'agit que d'exemples, et qu'ils peuvent être personnalisés si nécessaire.

Un simple job de déploiement d'exemple se compose de 3 étapes : évaluation, approbation et déploiement. L'évaluation appelle mlflow.evaluate pour produire des métriques de validation sur la version du modèle fournie. L'approbation permet à un utilisateur privilégié de déterminer si ces métriques sont satisfaisantes et, le cas échéant, d'approuver le modèle. Enfin, le déploiement déploie la version du modèle vers un endpoint Model Serving Databricks.

L'image ci-dessous montre les tâches Lakeflow Jobs qui composent ce Job de déploiement simple, consistant en des tâches d'évaluation, d'approbation et de déploiement :

Un Job de déploiement simple composé de tâches d’évaluation, d’approbation et de déploiement.

Vous pouvez également créer un job de déploiement plus complexe. Par exemple, vous pourriez vouloir effectuer un déploiement progressif avec une étape de collecte des métriques dans le cadre du workflow. Pour créer ce job de déploiement, vous pourriez ajouter des tâches supplémentaires après la tâche d’approbation pour déployer le modèle à 1 %, le déployer à 10 %, collecter et vérifier les métriques, décider de poursuivre ou de revenir en arrière, puis finalement soit déployer le modèle à 100 %, soit revenir en arrière. L’image ci-dessous montre à quoi pourrait ressembler ce job de déploiement plus complexe :

Un Job de déploiement complexe qui inclut un déploiement par étapes et la collecte de métriques.

Créer un Job de déploiement

Les jobs de déploiement vous permettent de gérer le cycle de vie d'une version de modèle. Pour utiliser les jobs de déploiement, vous avez d'abord besoin de versions de modèle créées dans un modèle enregistré. Consultez les Notebooks d'exemples MLflow 3 pour les approches recommandées pour l'entraînement et l'enregistrement de modèles.

Databricks vous recommande de définir le champ Exécuter en tant que sur un service principal avec des autorisations minimales. De plus, pour la tâche d'approbation, Databricks vous recommande de désactiver les nouvelles tentatives, car la tâche est censée échouer au début. Cela empêche une attente plus longue et le signalement de plusieurs Logs d'erreurs.

Un job de déploiement doit avoir deux paramètres de job : model_name et model_version. Databricks recommande également de définir la limite d'exécutions concurrentes maximales à 1 (the default) afin d'éviter les conditions de concurrence de déploiement.

Il existe deux façons de créer un Job de déploiement : par programmation à l'aide d'un Notebook de déploiement, ou à l'aide de l'interface utilisateur. Dans les deux cas, vous devez fournir chacune de vos tâches de Job sous forme de Notebook.

Créer un job de déploiement par programmation à l'aide d'un Notebook (recommandé)

L’utilisation d’un notebook de déploiement pour créer par programme le job de déploiement est recommandée, car il utilise le Databricks SDK et qu’ainsi toutes les configurations sont facilement mises en place, la source de vérité se trouvant dans le code. Cette méthode vous permet également de déployer facilement plusieurs Job et d'autres Ressources sur plusieurs Workspace.

Pour les instructions ci-dessous, un template d'exemple simple est utilisé pour configurer le job de déploiement avec des tâches d'évaluation, d'approbation et de déploiement de base.

  1. Créez et enregistrez un Modèle du Unity Catalog. Par exemple, consultez l'exemple de workflow ML traditionnel MLflow 3.
  2. Créez un notebook qui définit la tâche d'évaluation. Par exemple, importez le notebook d’évaluation pour le ML classique afin d’évaluer le modèle créé à partir de l’exemple de ML traditionnel. Le notebook d'évaluation pour GenAI fournit un exemple d'évaluation d'un modèle externe GenAI. Mettez à jour les éléments REQUIS si nécessaire. Pour les autres modèles, utilisez ce notebook comme template et personnalisez-le pour évaluer votre modèle selon les besoins de votre cas particulier.
  3. Créez un Notebook qui définit la tâche d'approbation. Par exemple, importez le Notebook d'approbation dans votre Workspace. Plus de détails sur le fonctionnement de ce Notebook peuvent être trouvés dans la section Approbations. Vous pouvez également utiliser ce Notebook comme Template et le mettre à jour pour qu’il réponde à vos besoins.
  4. Créez un Notebook qui définit la tâche de déploiement. Par exemple, importez le notebook de déploiement ci-dessous dans votre Workspace. Vous pouvez également utiliser ce notebook comme Template et le mettre à jour pour l'adapter à vos besoins.
  5. Créez un Notebook qui crée et orchestre le Job de déploiement. Par exemple, importez le notebook du Job de déploiement dans votre Workspace. Ce notebook crée le Job Databricks qui devient le Job de déploiement. Assurez-vous de mettre à jour les éléments *nécessaires* dans le notebook pour définir correctement votre job, en utilisant votre modèle Unity Catalog et les tâches appropriées. Vous pouvez également utiliser ce Notebook comme Template et le mettre à jour pour l'adapter à vos besoins. Par exemple, vous voudrez peut-être inclure plus de tâches si vous avez un plan de déploiement plus complexe.
  6. Exécutez le Notebook de Job de déploiement pour créer votre Job de déploiement.

Créez un job de déploiement à l’aide de l’interface utilisateur des jobs

Les jobs peuvent également être créés à l'aide de l'interface utilisateur, au lieu d'utiliser le SDK dans le Template ci-dessus. Pour chaque tâche de Notebook cependant, les Notebooks doivent tout de même être créés manuellement et enregistrés quelque part dans votre Workspace. Pour le modèle d'instructions, un workflow de déploiement simple, avec des tâches d'évaluation, d'approbation et de déploiement, est supposé. Personnalisez les instructions en ajoutant d'autres tâches si vous avez un workflow de déploiement plus complexe.

  1. Créez et enregistrez un Modèle du Unity Catalog. Par exemple, consultez l'exemple de workflow ML traditionnel MLflow 3.

  2. Créez un notebook qui définit la tâche d'évaluation. Par exemple, importez le notebook d’évaluation pour le ML classique afin d’évaluer le modèle créé à partir de l’exemple de ML traditionnel. Le notebook d'évaluation pour GenAI fournit un exemple d'évaluation d'un modèle externe GenAI. Mettez à jour les éléments REQUIS si nécessaire. Pour les autres modèles, utilisez ce notebook comme template et personnalisez-le pour évaluer votre modèle selon les besoins de votre cas particulier.

  3. Créez un Notebook qui définit la tâche d'approbation. Par exemple, importez le Notebook d'approbation dans votre Workspace. Plus de détails sur le fonctionnement de ce Notebook peuvent être trouvés dans la section Approbations. Vous pouvez également utiliser ce Notebook comme Template et le mettre à jour pour qu’il réponde à vos besoins.

  4. Créez un Notebook qui définit la tâche de déploiement. Par exemple, importez le notebook de déploiement ci-dessous dans votre Workspace. Vous pouvez également utiliser ce notebook comme Template et le mettre à jour pour l'adapter à vos besoins.

  5. Créez le Job de déploiement dans l'interface utilisateur de Lakeflow Jobs :

    1. Dans le volet de navigation de gauche, cliquez sur + Nouveau > Job pour créer un nouveau job.

    2. Configurez chaque tâche. Par exemple, pour la tâche de déploiement :

      1. Nom de la tâche : déploiement
      2. Type : Notebook
      3. Source : Workspace
      4. Chemin d'accès : /Workspace/Users/<user.name@email.com>/deployment
      5. Compute : Serverless

      Pour plus d'informations sur la configuration, consultez les tâches de Notebook pour les Jobs.

  6. Une fois que vous avez terminé de créer chaque tâche, ajoutez vos paramètres de job. Dans le panneau de droite, cliquez sur Modifier les paramètres . Ajouter model_name et model_version.

Ci-dessous se trouve un exemple de création du Job Template ci-dessus à l'aide de l'interface utilisateur :

Job de déploiement créé à l&#39;aide de l&#39;interface utilisateur.

Connecter le Job de déploiement à un modèle

Après avoir créé le modèle Unity Catalog et le Job de déploiement, vous devez connecter le Job au modèle en tant que Job de déploiement. Vous pouvez utiliser l'interface utilisateur ou le faire par programmation dans le notebook de déploiement.

Après qu'un job de déploiement a été connecté à un modèle, il est lié sur la page du modèle.

Job de déploiement connecté.

Connecter le Job de déploiement à un modèle à l'aide de l'interface utilisateur

Sur la page du modèle, dans l'onglet **Vue d'ensemble**, sous **Job de déploiement**, cliquez sur **Connecter le job de déploiement**.

Cliquez sur Connecter le job de déploiement sur la page du modèle.

Sélectionnez votre Job de déploiement dans la liste déroulante. Vous pouvez également utiliser la barre de recherche pour rechercher des jobs par leur nom ou leur ID. Cliquez sur **Enregistrer les modifications**.

Sélectionnez le Job de déploiement à connecter.

Connectez le job de déploiement à un modèle à l'aide du client MLflow.

Le principal moyen de connecter le job de déploiement par programme est d'utiliser le client MLflow. Vous pouvez le faire soit lorsque vous créez un modèle enregistré en appelant client.create_registered_model(model_name, deployment_job_id=<your-created-job-id>), soit lorsque vous mettez à jour un modèle enregistré en appelant client.update_registered_model(model_name, deployment_job_id=<your-created-job-id>).

La principale façon de déconnecter le Job de déploiement par programme est également d'utiliser le client MLflow. Vous pouvez le faire en spécifiant une chaîne vide "" et en appelant la mise à jour avec celle-ci (par exemple, client.update_registered_model(model_name, deployment_job_id="")).

Utilisez un code similaire au suivant dans votre Notebook de déploiement:

Python
import mlflow
from mlflow.tracking.client import MlflowClient

client = MlflowClient(registry_uri="databricks-uc")
# model_name specifies the location of a model in Unity Catalog
# model_name should be in the format <catalog>.<schema>.<model>
try:
if client.get_registered_model(model_name):
client.update_registered_model(model_name, deployment_job_id=created_job.job_id)
except mlflow.exceptions.RestException:
client.create_registered_model(model_name, deployment_job_id=created_job.job_id)

Autorisations requises

Les autorisations suivantes sont requises pour se connecter et Trigger des Jobs de déploiement :

  • GÉRER ou PROPRIÉTAIRE sur le modèle pour connecter le Job de déploiement
  • Le propriétaire du modèle devra disposer des autorisations CAN MANAGE RUN ou supérieures sur le Job de déploiement pour le connecter.
    • REMARQUE : Ce champ de Job de déploiement peut également être mis à jour sur le modèle par une personne disposant de permissions MANAGE ou supérieures. Dans ce cas, l'utilisateur qui met à jour et le propriétaire du modèle devront disposer des autorisations CAN MANAGE RUN ou supérieures sur le Job de déploiement pour le connecter.

Trigger le Job de déploiement

Le Job de déploiement sera automatiquement Trigger sur toute nouvelle version de modèle créée, et il peut également être Trigger manuellement sur les versions existantes et précédemment déployées sur la page des versions de modèle en cliquant sur start le Job de déploiement .

start le Job de déploiement à partir de la page de version du modèle.

Le Job peut également être Trigger directement depuis l'interface utilisateur Jobs ou l'API. Le nom et la version appropriés du modèle doivent être spécifiés dans les paramètres du Job.

Autorisations requises

Les autorisations suivantes sont requises pour trigger les Jobs de déploiement :

  • Pour manuellement trigger ou réparer le job de déploiement à l'aide de l'interface utilisateur de la version du modèle, l'utilisateur doit disposer de CAN MANAGE RUN ou des ACLs supérieurs sur le job de déploiement (mêmes ACLs nécessaires pour trigger un job à l'aide de l'interface utilisateur des jobs).
  • Étant donné que le Job automatiquement Trigger lorsqu'une nouvelle version est créée et utilise les identifiants du propriétaire du modèle, ce dernier doit disposer d'ACL CAN MANAGE RUN ou supérieures sur le Job de déploiement.

Approuver le job de déploiement (expérimental)

Databricks fournit un mécanisme d'approbation expérimental pour les Jobs de déploiement, permettant un processus humain dans la boucle pour les Pipelines de ML. Après le Trigger d'un Job de déploiement, les métriques de l'exécution d'évaluation apparaissent sur la page de version du modèle. Après avoir examiné ces métriques, un approbateur peut approuver la version du modèle dans l'interface utilisateur en cliquant sur Approuver . Cette fonctionnalité utilise les tags Unity Catalog pour déterminer si la tâche d'approbation doit réussir ou échouer. Les tâches d'approbation sont identifiées par des noms de tâches de Job qui **start** avec « approval » (non sensible à la casse), et seront réussies lorsque l'étiquette Unity Catalog est définie sur Approved (soit en cliquant sur le bouton Approuver dans l'interface utilisateur, soit en la définissant manuellement).

Voici comment fonctionne le processus d'approbation :

  1. Exécution initiale : la première exécution du Job de déploiement échouera toujours lors d’une tâche d’approbation, car la version du modèle n’a pas encore été approuvée et ne possède donc pas la balise Unity Catalog requise.

L&#39;exécution initiale du job de déploiement échoue toujours lors de la tâche d&#39;approbation.

  1. Évaluation de l'approbation : l'approbateur examine la version du modèle et ses métriques d'évaluation, qui sont affichées sur la page de la version du modèle. Ceci permet à l'approbateur d'évaluer la qualité et la préparation de la version du modèle.

Examinez les métriques de la version du modèle.

  1. Action d’approbation : si l’approbateur juge la version du modèle satisfaisante, il clique sur le bouton Approuver dans la section de la barre latérale du Job de déploiement, sur la page de la version du modèle.

Bouton « Approuver » sur la page Versions du modèle dans la barre latérale du job de déploiement.

Cette action répare automatiquement l'exécution du Job et ajoute une balise Unity Catalog à la version du modèle, où :

  • La clé de balise correspond au nom de la tâche d’approbation. Par exemple, dans l'exemple de notebook d'approbation, ceci est Approval_Check.
  • La valeur du tag est définie sur Approved.
  1. Job Continuation : L'exécution du Job de déploiement réparé reprend automatiquement à partir de la tâche d'approbation. Cette fois, cela réussit car la balise Unity Catalog requise est maintenant présente. Il passe ensuite aux tâches ultérieures, telles que le déploiement.

Autorisations requises

Les autorisations suivantes sont nécessaires pour ajouter des tags Unity Catalog et Trigger des Jobs de déploiement :

  • APPLIQUER UN TAG sur le modèle Unity Catalog.
  • CAN MANAGE RUN sur le job de déploiement.

Tags gouvernés pour les approbations avancées

Vous pouvez également spécifier plus précisément qui a l'autorisation d'approuver et d'appliquer des tags à l'aide d'une politique de tags gouvernée pour un certain nom de tag. Lorsque vous utilisez une politique de tag gouvernée et spécifiez les permissions APPLY_TAG pour un utilisateur ou un groupe, vous pouvez :

  • Ayez plusieurs groupes d'approbation indépendants dans un Job de déploiement.

    • Par exemple, vous pouvez avoir deux tags distincts pour des approbations de groupe distinctes, comme : Approval_Legal et Approval_Security où vous :
      • Créez une politique de tags régis, afin que seule l'équipe juridique puisse définir le tag Approval_Legal.
      • Créez une politique de tag gouverné supplémentaire, afin que seule l'équipe de sécurité puisse définir le tag Approval_Security.
      • Ayez deux tâches d'approbation dans votre job de déploiement correspondant aux approbations juridiques et de sécurité.
      • Accordez aux deux équipes APPLY_TAG sur le modèle afin qu'elles puissent définir le tag, mais elles ne peuvent approuver que leurs contrôles respectifs.
  • Définissez une stratégie de balisage pour empêcher le propriétaire du modèle d'approuver le Job afin de vérifier qu'il y a une deuxième approbation.

  • Standardisez les contrôles d'approbation entre le métastore, le catalogue et le schéma avec des politiques de tags et des noms de tags cohérents.

Afficher l'état du Job de déploiement et le log d'activité

Une fois que des Jobs de déploiement ont été trigger sur les versions du modèle, le statut actuel de ces déploiements peut être consulté sur la page du modèle dans la tab **Aperçu**. Sous le statut, vous pouvez voir l'activité historique dans le log d'activité. Le log d'activité est également affiché sur la page de version du modèle.

Afficher le statut du job de déploiement et les logs d&#39;activité.

Autorisations requises

Les autorisations suivantes sont requises pour visualiser les jobs de déploiement et le log d'activité (identique à la visualisation du modèle) :

  • EXÉCUTER sur le modèle Unity Catalog.

Exemple de Notebooks Template de Job de déploiement

Les Notebooks d'exemple suivants peuvent être utilisés comme Template pour créer un Job de déploiement simple, composé de tâches d'évaluation, d'approbation et de déploiement. Assurez-vous de fournir les valeurs REQUIRED dans les Notebooks pour configurer le Job de déploiement de votre modèle.

Notebook d'évaluation pour GenAI

Exemple de notebook d’évaluation pour GenAI

Notebook d'évaluation pour le ML classique

Notebook d'évaluation exemple pour le ML classique

Notebook d'approbation

Exemple de Notebook d'approbation

Notebook de déploiement

Exemple de notebook de déploiement

Créer un Notebook de job de déploiement

Example Notebook pour créer une Job de déploiement

Étapes suivantes

Pour en savoir plus sur les nouvelles fonctionnalités de MLflow 3 et pour commencer, consultez l'article suivant :