Aller au contenu principal

Suivi et observabilité de l’Experimentation

AI Runtime s’intègre à MLflow pour fournir des outils de suivi des expérimentations, d’observabilité et de debugging. MLflow offre un emplacement unique pour les parameter d'exécution, les indicateurs, les indicateurs système du GPU, les journaux et les artefacts, que vous développiez dans un Notebook, que vous soumettiez une charge de travail avec la CLI databricks air ou que vous planifiiez un Job.

Ce que propose MLflow​

Une expérimentation MLflow groupe les exécutions d'entraînement associées et chaque exécution fournit un enregistrement persistant de la configuration d'entraînement et des résultats.

  • Indicateurs et paramètres : enregistrez la perte d’entraînement, les indicateurs d’évaluation, les taux d’apprentissage et les hyperparamètres, puis comparez-les d’une exécution à l’autre.
  • Indicateurs du système : Affichez l’utilisation du GPU, du CPU et de la mémoire pour les exécutions gérées sous le Indicateurs du système tab.
  • Affichage des Log : affichez la sortie du Driver pour une charge de travail basée sur un Job sous le tab Log de l’exécution. Voir Afficher les logs dans le tab MLflow Logs.
  • Artefacts et modèles : Stockez les fichiers de modèle, les configurations et les autres sorties avec l'exécution. Utilisez un volume Unity Catalog pour les artefacts volumineux ou durables.
  • Partage et collaboration : accordez un accès à une Experimentation pour que les autres utilisateurs du Workspace puissent afficher et comparer ses exécutions. Voir Organiser des exécutions d'entraînement avec des expérimentations MLflow.
  • Intégrations de frameworks : utilisez les intégrations de MLflow avec Hugging Face Transformers, PyTorch Lightning et d'autres bibliothèques prises en charge.

Pour les charges de travail basées sur des jobs, telles que celles soumises avec databricks air run, l'exécution du job Databricks complète MLflow en enregistrant le statut d'exécution, le compute, les tentatives et la sortie du driver.

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

La façon dont vous start ou rejoignez une exécution MLflow dépend de la manière 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 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 associé

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 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 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 associé

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 Tâche AI Runtime.

Une fois que votre code a start ou rejoint l'exécution correcte, utilisez l'API de suivi MLflow pour enregistrer des données d'entraînement personnalisées. Pour les frameworks pris en charge, vous pouvez utiliser le log automatique au lieu d'ajouter des appels de log individuels. Pour les modèles de deep learning, voir flux de travail de deep learning MLflow 3.

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

  • Définissez step sur une valeur significative comme le batch global ou l’époque. Enregistrez à un intervalle plutôt qu’à chaque batch. MLflow limite le nombre d’étapes de métriques par exécution. Voir Limites des ressources.
  • Pour la formation distribuée, journalisez une métrique à partir du rang 0 uniquement afin que chaque valeur soit enregistrée une seule fois.
  • Pour les workflows de Notebook, utilisez des chemins d’Experimentation absolus, 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 des checkpoints volumineux et durables dans un volume Unity Catalog. Pour obtenir des modèles de checkpointing, consultez Améliorer les performances et la résilience de l'entraînement dans AI Runtime.
remarque

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

Suivre les workloads de la CLI Databricks​

Lorsque vous soumettez un workload avec databricks air run, AI Runtime crée une exécution de Job Databricks pour les détails de l'exécution et une exécution MLflow pour les données d'Experimentation. La soumission initiale et ses nouvelles tentatives partagent une exécution de Job, tandis que chaque tentative crée une exécution MLflow séparée dans la même Experimentation afin que vous puissiez comparer les tentatives.

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

tab de metrics système d&#39;une exécution MLflow montrant les metrics GPU, CPU et mémoire.

Configurer et enregistrer dans l'exécution​

Utilisez le 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 montre les champs MLflow nécessaires :

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

Pour les exigences de champ, les default et les valeurs prises en charge, consultez la Référence YAML de Workload.

AI Runtime expose l'identifiant d'exécution managé via MLFLOW_RUN_ID. Pour Log vos propres parameters, mesures et artefacts dans cette exécution, rouvrez-la avec 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)

Trouver des exécutions et des logs​

Les logs sont disponibles via la CLI Databricks et la page d'exécution MLflow. Utilisez les commandes suivantes pour trouver des workloads, inspecter un workload et streamer ou download des 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/

Suivre les workloads de notebook​

Depuis un notebook, vous pouvez exécuter du code directement dans la session associée ou exécuter 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 associé ne crée pas automatiquement une exécution MLflow. Sélectionnez une expérimentation, puis start une exécution ou activez le log 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 modè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,
)

Utiliser le SDK Databricks AI Runtime​

Pour l'entraînement distribué à partir d'un notebook, utilisez le décorateur @distributed du SDK Databricks AI Runtime (databricks-sdk-air). Le SDK est disponible sous l’espace de nom databricks.air dans la version 6 et supérieure de l’environnement GPU, ou comme serverless_gpu dans la version 5 et infé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'Expérimentation default 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() dans 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 la sortie de la cellule ou dans le panneau Experimentation du Notebook pour ouvrir l’exécution MLflow.

Afficher les logs​

  • Sortie du notebook : les sorties et les erreurs standard du code d'entraînement apparaissent dans la sortie de la cellule du notebook.
  • Logs MLflow : pour les workloads de Notebook basées sur des Jobs comme les appels .distributed(remote=True), le tab Logs MLflow affiche la sortie de l’exécution du Job associé.

Surveiller les ressources GPU en temps réel​

Le panneau Ressources GPU du notebook affiche l'utilisation en temps réel du GPU, la mémoire et la température des charges de travail à nœud unique et à nœuds multiples. Utilisez le tab Métriques système de MLflow lorsque vous avez besoin d'un enregistrement persistant lié à une exécution.

Pour ouvrir le panneau, connectez le notebook à AI Runtime, puis cliquez sur Icône de puce. Ressources GPU dans le panneau latéral droit.

Volet des ressources GPU affichant des métriques d’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 de 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.

Afficher les logs dans le tab MLflow Logs​

Le tab Logs sur une page d’exécution MLflow affiche la sortie d’un workload AI Runtime pris en charge par un job. Pour l’ouvrir, allez sur la page de l’exécution et cliquez sur Logs .

Pour les nouvelles exécutions, le tab Logs remplace les fichiers de log précédemment stockés dans le tab Artefacts de l’exécution, qui sont dépréciés. Les exécutions créées précédemment conservent leurs fichiers de log dans le tab Artefacts .

Depuis le Logs tab, vous pouvez :

  • Rechercher : affiche uniquement les lignes contenant un terme de recherche.
  • Filtrer par nœud, niveau et période : sélectionnez un nœud unique d'une charge de travail à plusieurs nœuds, n'affichez que les lignes d'info, d'avertissement ou d'erreur, ou réduisez la vue à une période donnée.
  • Suivre une charge de travail en cours : pendant que l'exécution est active, une nouvelle sortie apparaît au fur et à mesure. Faites défiler vers le haut pour suspendre le suivi.
  • Copier et download : copiez les lignes chargées ou download chaque ligne correspondant aux filtres actuels.

Rétention des logs​

Les Logs sont disponibles sur le tab Logs pendant 60 jours.

Dépanner l'accès aux logs​

L'tab Log sur une page d'exécution MLflow Stream 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 le 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 Lecture seule sur le job. Voir Contrôler l'accès à un job.

Limites globales dans Databricks​

Voir Limites des ressources.