Aller au contenu principal

Suivi des Experimentation et observabilité

info

Aperçu

Cette fonctionnalité est en aperçu public.

AI Runtime s’intègre à MLflow pour fournir le suivi des expérimentations et l’observabilité. MLflow fournit un emplacement unique pour les parameters, les métriques, les métriques système GPU, les Logs et les artefacts d’une exécution, que vous développiez dans un Notebook, soumettiez une charge de travail avec la CLI databricks air ou planifiiez un Job.

Ce que fournit MLflow​

Une Experimentation MLflow regroupe les exécutions d’entraînement associées, et chaque exécution fournit un enregistrement permanent de la configuration et des résultats de l’entraînement.

  • Métriques et parameter : enregistrez la perte d’entraînement, les métriques d’évaluation, les taux d’apprentissage et les hyperparameters, puis comparez-les entre les exécutions.
  • Métriques système : consultez l’utilisation du GPU, du CPU et de la mémoire pour les exécutions gérées dans l’ Métriques système tab.
  • Log : affichez la sortie du Driver pour une charge de travail reposant sur un Job dans le tab Log de l’exécution.
  • Artefacts et modèles : stockez les fichiers de modèle, les configurations et autres sorties avec l’exécution. Utilisez un volume Unity Catalog pour les artefacts volumineux ou durables.
  • Partage et collaboration : accordez l’accès à une Experimentation afin que d’autres utilisateurs du Workspace puissent consulter et comparer ses exécutions. Voir Organiser les exécutions d’entraînement avec les expérimentations MLflow.
  • Intégrations de frameworks : utilisez les intégrations MLflow avec Hugging Face Transformers, PyTorch Lightning et d’autres bibliothèques prises en charge.

Pour les charges de travail associées à un job, telles que celles soumises avec databricks air run, l’exécution du job Databricks complète MLflow en enregistrant l’état d’exécution, le compute, les tentatives et la sortie du Driver.

Comment sont créées les exécutions MLflow​

How vous start ou rejoignez une exécution MLflow dépend de la façon dont vous start la charge de travail :

Comment exécuter la charge de travail

Comment l’exécution MLflow start

Comment sélectionner l’Experimentation

CLI Databricks (databricks air run)

Chaque tentative crée automatiquement une exécution.

Définissez experiment_name dans le fichier YAML de la charge de travail.

Notebook avec le SDK Databricks AI Runtime (.distributed())

Chaque appel crée automatiquement une exécution.

Appelez mlflow.set_experiment() avant .distributed(), ou définissez MLFLOW_EXPERIMENT_NAME.

Code exécuté directement dans un Notebook attaché

Aucune exécution n’est créée automatiquement. Utilisez mlflow.start_run() ou le log automatique.

Appelez mlflow.set_experiment() dans le Notebook.

Planifiée ai_runtime_task

La tâche crée automatiquement une exécution.

Définissez experiment dans la configuration de la tâche. Voir la tâche AI Runtime.

Comment exécuter la charge de travail

Comment l’exécution MLflow start

Comment sélectionner l’Experimentation

CLI Databricks (databricks air run)

Chaque tentative crée automatiquement une exécution.

Définissez experiment_name dans le fichier YAML de la charge de travail.

Notebook avec le SDK Databricks AI Runtime (.distributed())

Chaque appel crée automatiquement une exécution.

Appelez mlflow.set_experiment() avant .distributed(), ou définissez MLFLOW_EXPERIMENT_NAME.

Code exécuté directement dans un Notebook attaché

Aucune exécution n’est créée automatiquement. Utilisez mlflow.start_run() ou le log automatique.

Appelez mlflow.set_experiment() dans le Notebook.

Planifiée ai_runtime_task

La tâche crée automatiquement une exécution.

Définissez experiment dans la configuration de la tâche. Voir la tâche AI Runtime.

Après que votre code a start l’exécution correcte ou l’a rejointe, utilisez l’API de suivi MLflow pour enregistrer les données d’entraînement personnalisées. Pour les frameworks pris en charge, vous pouvez utiliser la journalisation automatique au lieu d’ajouter des appels de journalisation individuels. Pour les modèles de deep learning, consultez le workflow de deep learning MLflow 3.

Utilisez les pratiques suivantes lors de la configuration du suivi MLflow :

  • Définissez step sur une valeur pertinente, comme le batch global ou l’époque. Effectuez un log à intervalles réguliers plutôt qu’à chaque batch. MLflow limite le nombre d’étapes de métriques par exécution. Consultez Limites des ressources.
  • Pour l’entraînement distribué, journalisez une métrique uniquement depuis le rang 0 afin que chaque valeur soit enregistrée une seule fois.
  • Pour les workflows de Notebook, utilisez des chemins absolus d’Experimentation, tels que /Users/<username>/my-experiment ou /Workspace/Shared/<team>/my-experiment. Placez les expérimentations que vous souhaitez partager dans un dossier de Workspace partagé.
  • Stockez les checkpoints volumineux et persistants dans un volume Unity Catalog. Pour les méthodes de checkpointing, consultez Améliorer les performances et la résilience de l’entraînement sur AI Runtime.
remarque

Utilisez MLflow 3.7 ou une version ultérieure pour les exemples de cette page.

Suivez les charges de travail de la CLI Databricks​

Lorsque vous soumettez une charge de travail avec databricks air run, AI Runtime crée une exécution de Job Databricks pour les détails d’exécution et une exécution MLflow pour les données d’Experimentation. La soumission d’origine et ses nouvelles tentatives partagent une même exécution de job, tandis que chaque tentative crée une exécution MLflow distincte dans la même experimentation afin que vous puissiez comparer les tentatives.

Les métriques système du GPU, du CPU et de la mémoire sont automatiquement collectées pour chaque exécution gérée et apparaissent dans le tab Métriques système de MLflow.

Tab des métriques système d’une exécution MLflow affichant les métriques du GPU, du CPU et de la mémoire.

Configurez et consignez dans l’exécution​

Utilisez le fichier YAML de charge de travail pour sélectionner l’Experimentation et configurer éventuellement le nom de l’exécution et l’emplacement de l’artefact. L’exemple suivant affiche uniquement les champs MLflow :

YAML
experiment_name: my-training
mlflow_run_name: baseline-lr3e5
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training

Pour connaître les exigences des champs, les valeurs default et les valeurs prises en charge, consultez la référence YAML Workload.

AI Runtime expose l’identifiant de l’exécution gérée via MLFLOW_RUN_ID. Pour consigner vos propres parameter, métriques et artefacts dans cette exécution, rouvrez-la via l’ API de suivi MLflow:

Python
import os

import mlflow

# Log from rank 0 only because all nodes share the same MLFLOW_RUN_ID.
if os.environ.get("RANK", "0") == "0":
with mlflow.start_run(run_id=os.environ["MLFLOW_RUN_ID"]):
mlflow.log_param("learning_rate", 3e-4)
for step, loss in enumerate(training_losses):
mlflow.log_metric("train_loss", loss, step=step)

Rechercher des exécutions et des Logs​

Les logs sont disponibles via le CLI Databricks et la page d’exécution MLflow. Utilisez les commandes suivantes pour rechercher des charges de travail, examiner une charge de travail et Stream ou download les Logs :

Bash
databricks air list --all-status
databricks air get <job-run-id>
databricks air logs <job-run-id>
databricks air logs <job-run-id> --node 2
databricks air logs <job-run-id> --download-to ./logs/

Suivez les charges de travail des Notebooks​

Depuis un notebook, vous pouvez exécuter du code directement dans la session attachée ou lancer un entraînement distribué via le décorateur @distributed du SDK Databricks AI Runtime.

Exécuter du code directement dans un notebook​

Le code exécuté directement dans un Notebook attaché ne crée pas automatiquement d’exécution MLflow. Sélectionnez une expérimentation, puis start une exécution ou activez la journalisation automatique :

Python
import mlflow

mlflow.set_experiment("/Users/<username>/my-experiment")

with mlflow.start_run(run_name="baseline"):
train()

Pour activer le log automatique de PyTorch Lightning, utilisez le modèle suivant :

Python
mlflow.pytorch.autolog()

with mlflow.start_run(run_name="lightning-baseline"):
trainer.fit(model, datamodule=datamodule)

Pour les Transformers de Hugging Face, configurez TrainingArguments comme suit :

Python
from transformers import TrainingArguments

args = TrainingArguments(
output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
report_to="mlflow",
run_name="llama7b-sft-lr3e5",
logging_steps=50,
)

Utilisez le SDK Databricks AI Runtime​

Pour l’entraînement distribué depuis un Notebook, utilisez le décorateur @distributed de l’SDK Databricks AI Runtime (databricks-sdk-air). Le SDK est disponible dans l’espace de noms databricks.air dans la version 6 ou ultérieure de l’environnement GPU, ou sous la forme serverless_gpu dans la version 5 ou antérieure de l’environnement GPU.

Python
from databricks.air import distributed

@distributed()
def train():
# Training code
...

train.distributed()

Chaque appel .distributed() crée automatiquement une exécution MLflow. L’Experimentation par défaut est /Users/{WORKSPACE_USER}/{notebook-name}. Pour sélectionner une autre experimentation, définissez-la avant d’appeler .distributed():

Python
mlflow.set_experiment("/Users/<username>/my-experiment")
train.distributed()

Lorsque vous appelez .distributed() pendant une exécution active, AI Runtime crée une exécution enfant imbriquée :

Python
with mlflow.start_run() as parent_run:
train.distributed()

Pour reprendre une exécution précédente, définissez MLFLOW_RUN_ID avant .distributed():

Python
import os

os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
train.distributed()

Utilisez le lien d’exécution dans le résultat de la cellule ou le panneau Experimentation du Notebook pour ouvrir l’exécution MLflow.

Afficher les Logs​

  • Sortie du notebook : la sortie standard et les erreurs du code d’entraînement s’affichent dans la sortie de la cellule du notebook.
  • MLflow Logs : pour les charges de travail de Notebook adossées à des Job, telles que les appels .distributed(remote=True), le tab Logs de MLflow affiche la sortie de l’exécution du Job associé.

Surveillez les ressources GPU en temps réel​

Le volet Ressources GPU du Notebook affiche en temps réel les taux d’utilisation du GPU et de la mémoire, ainsi que la température, pour les charges de travail à nœud unique et multinœuds. Utilisez le MLflow System metrics tab lorsque vous avez besoin d’un enregistrement persistant associé à une exécution.

Pour ouvrir le volet, connectez le notebook à AI Runtime, puis cliquez sur Icône de puce. Ressources GPU dans le volet de droite.

Volet des ressources GPU affichant les métriques d&#39;utilisation, de mémoire et de température pour chaque GPU.

Le volet interroge les métriques toutes les 10 secondes et conserve jusqu’à 2 heures d’historique. Cliquez sur Icône refresh. Refresh pour récupérer les dernières valeurs. Après 5 minutes d’inactivité, le volet se met en pause. Rouvrez-le pour reprendre le monitoring.

Résoudre les problèmes d’accès aux Logs​

L’tab Logs de la page d’une exécution MLflow diffuse la sortie de l’exécution du Job Databricks associé. L’accès à l’Experimentation MLflow n’implique pas l’accès au Job.

Si l’tab affiche Vous n’avez pas accès à ces logs , demandez à un utilisateur disposant de l’autorisation Gestion autorisée ou à un administrateur du workspace de vous accorder au moins l’autorisation Consultation autorisée sur le job. Consultez Contrôler l’accès à un job.

Limites globales dans Databricks​

Consultez les Limites des ressources.