Partage via


Déboguer des travaux et superviser la progression de l’entraînement

L’entraînement d’un modèle Machine Learning est un processus itératif qui nécessite beaucoup d’expérimentations. Avec l’expérience de travail interactif Azure Machine Learning, les scientifiques des données peuvent utiliser le SDK Python Azure Machine Learning, l’interface CLI Azure Machine Learning ou le studio Azure pour accéder au conteneur où s’exécute leur travail. Après avoir accédé au conteneur de travaux, les utilisateurs peuvent effectuer des itérations sur les scripts d’entraînement, superviser la progression de l’entraînement ou déboguer le travail à distance comme ils le font généralement sur leurs ordinateurs locaux. Pour interagir avec les travaux, vous pouvez utiliser différentes applications d’entraînement, notamment JupyterLab, TensorBoard ou VS Code, ou vous connecter au conteneur de travaux directement avec SSH.

L’entraînement interactif est pris en charge sur les clusters de calcul Azure Machine Learning et le cluster Kubernetes avec Azure Arc.

Prérequis

  • Consultez le guide pratique sur l’entraînement avec Azure Machine Learning.
  • Pour plus d’informations, consultez ce lien pour VS Code afin de configurer l’extension Azure Machine Learning.
  • Vérifiez que les packages openssh-server et ipykernel ~=6.0 sont installés dans votre environnement de travail (ces packages sont installés par défaut dans tous les environnements d’entraînement organisés Azure Machine Learning).
  • Les applications interactives ne peuvent pas être activées sur des exécutions d’entraînement distribuées si le type de distribution n’est pas PyTorch, TensorFlow ou MPI. La configuration d’entraînement distribué personnalisée (configuration d’un entraînement à plusieurs nœuds sans utiliser les frameworks de distribution ci-dessus) n’est pas prise en charge actuellement.
  • Pour utiliser SSH, vous avez besoin d’une paire de clés SSH. Vous pouvez utiliser la commande ssh-keygen -f "<filepath>" pour générer une paire de clés publiques et privées.

Interagir avec votre conteneur de travaux

En spécifiant des applications interactives au moment de la création du travail, vous pouvez vous connecter directement au conteneur sur le nœud de calcul où s’exécute votre travail. Quand vous avez accès au conteneur de travaux, vous pouvez tester ou déboguer votre travail dans le même environnement que celui dans lequel il s’exécuterait. Vous pouvez également utiliser VS Code pour attacher le débogueur au processus en cours d’exécution et effectuer le débogage comme vous le feriez localement.

Activer pendant la soumission d’un travail

  1. Créez un travail à partir du volet de navigation de gauche dans le portail du studio.

  2. Choisissez cluster de calcul ou calcul attaché (Kubernetes) comme type de calcul, choisissez la cible de calcul et spécifiez le nombre de nœuds dont vous avez besoin dans Instance count.

Capture d’écran montrant la sélection d’un emplacement de calcul pour un travail.

  1. Suivez l’Assistant pour choisir l’environnement dans lequel vous souhaitez démarrer le travail.

  2. À l’étape Script d’entraînement, ajoutez votre code d’entraînement (et les données d’entrée/sortie) et référencez-le dans votre commande pour qu’il soit monté sur votre travail.

Capture d’écran montrant la vérification d’un travail préparé et la fin de la création.

Vous pouvez placer sleep <specific time> à la fin de votre commande pour spécifier la durée pendant laquelle vous souhaitez réserver la ressource de calcul. Le format est le suivant :

  • sleep 1s
  • sleep 1m
  • sleep 1h
  • sleep 1d

Vous pouvez également utiliser la commande sleep infinity pour maintenir le travail en vie indéfiniment.

Notes

Si vous utilisez sleep infinity, vous devez annuler le travail manuellement pour abandonner la ressource de calcul (et arrêter la facturation).

  1. Dans les paramètres du Calcul, développez l’option pour Applications d’entraînement. Sélectionnez au moins une application d’entraînement que vous souhaitez utiliser pour interagir avec le travail. Si vous ne sélectionnez pas d’application, la fonctionnalité de débogage ne sera pas disponible.

Capture d’écran montrant la sélection d’une application d’entraînement que l’utilisateur utilisera pour un travail.

  1. Vérifiez et créez le travail.

Se connecter aux points de terminaison

Pour interagir avec votre travail en cours d’exécution, sélectionnez le bouton Déboguer et superviser sur la page des détails du travail.

Capture d’écran montrant l’emplacement du panneau Déboguer et superviser pour les travaux interactifs.

Si vous cliquez sur les applications dans le panneau, un nouvel onglet s’ouvre pour les applications. Vous pouvez accéder aux applications uniquement quand elles sont à l’état En cours d’exécution et seul le propriétaire du travail est autorisé à y accéder. Si vous effectuez l’entraînement sur plusieurs nœuds, vous pouvez choisir celui avec lequel vous souhaitez interagir.

Capture d’écran des informations du panneau de droite pour les travaux interactifs. Le contenu correspondant varie en fonction des données des utilisateurs.

Le démarrage du travail et des applications d’entraînement spécifiés au moment de la création du travail peut prendre quelques minutes.

Interagir avec les applications

Quand vous sélectionnez les points de terminaison pour interagir avec votre travail, vous êtes dirigé vers le conteneur utilisateur sous votre répertoire de travail. Vous pouvez alors accéder à votre code, à vos entrées, à vos sorties et à vos journaux. Si vous rencontrez des problèmes quand vous vous connectez aux applications, consultez les journaux des applications et fonctionnalités interactives, que vous trouverez sous system_logs->interactive_capability, sous l’onglet Sorties + journaux.

Capture d’écran montrant l’emplacement du panneau des journaux interactifs pour les travaux interactifs.

  • Vous pouvez ouvrir un terminal à partir de Jupyter Lab et commencer à interagir dans le conteneur de travaux. Vous pouvez également effectuer des itérations directement sur votre script d’entraînement avec Jupyter Lab.

    Capture d’écran du panneau de contenu de Jupyter Lab pour les travaux interactifs.

  • Vous pouvez également interagir avec le conteneur de travaux dans VS Code. Pour attacher un débogueur à un travail pendant la soumission du travail et suspendre l’exécution, consultez cette section.

    Remarque

    Les espaces de travail avec liaison privée ne sont actuellement pas pris en charge lors de l’interaction avec le conteneur de travaux avec VS Code.

    Capture d’écran du panneau VS Code pour les travaux interactifs à la première ouverture. Cette capture montre l’exemple de fichier Python créé pour générer deux lignes.

  • Si vous avez journalisé des événements tensorflow pour votre travail, vous pouvez utiliser TensorBoard pour superviser les métriques quand votre travail est en cours d’exécution.

    Capture d’écran du panneau tensorboard pour les travaux interactifs à la première ouverture. Ces informations varient en fonction des données des clients

Terminer le travail

Quand vous avez terminé l’entraînement interactif, vous pouvez également accéder à la page des détails du travail pour annuler le travail et ainsi libérer la ressource de calcul. Vous pouvez aussi utiliser az ml job cancel -n <your job name> dans l’interface CLI ou ml_client.job.cancel("<job name>") dans le SDK.

Capture d’écran de l’option d’annulation de travail pour les travaux interactifs, montrant son emplacement pour la sélection par l’utilisateur

Attacher un débogueur à un travail

Pour soumettre un travail avec un débogueur attaché en suspendant l’exécution, vous pouvez utiliser debugpy et VS Code (debugpy doit être installé dans votre environnement de travail).

Remarque

Les espaces de travail avec liaison privée ne sont actuellement pas pris en charge lorsque vous joignez un débogueur à un travail dans VS Code.

  1. Pendant la soumission du travail (par le biais de l’interface utilisateur, de l’interface CLI ou du SDK), utilisez la commande debugpy pour exécuter votre script Python. Par exemple, la capture d’écran suivante montre un exemple de commande qui utilise debugpy afin d’attacher le débogueur pour un script TensorFlow (tfevents.py peut être remplacé par le nom de votre script d’entraînement).

Capture d’écran montrant la configuration de debugpy pour les travaux interactifs

  1. Quand le travail a été soumis, connectez-vous à VS Code, puis sélectionnez le débogueur intégré.

    Capture d’écran montrant l’emplacement d’ouverture du débogueur dans le panneau de gauche pour les travaux interactifs

  2. Utilisez la configuration de débogage « Attachement à distance » pour effectuer l’attachement au travail soumis et transférer le chemin et le port que vous avez configurés dans votre commande de soumission de travail. Vous trouverez également ces informations sur la page des détails du travail.

    Capture d’écran des travaux interactifs terminés

    Capture d’écran du bouton d’ajout d’attachement à distance pour les travaux interactifs

  3. Définissez des points d’arrêt et suivez l’exécution de votre travail comme vous le feriez dans votre workflow de débogage local.

    Capture d’écran montrant l’emplacement d’un exemple de point d’arrêt défini dans l’éditeur Visual Studio Code

Notes

Si vous utilisez debugpy pour démarrer votre travail, il ne s’exécutera que si vous attachez le débogueur dans VS Code et que vous exécutez le script. Si vous n’effectuez pas ces opérations, la ressource de calcul sera réservée jusqu’à l’annulation du travail.

Étapes suivantes