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
etipykernel ~=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
Créez un travail à partir du volet de navigation de gauche dans le portail du studio.
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
.
Suivez l’Assistant pour choisir l’environnement dans lequel vous souhaitez démarrer le travail.
À 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.
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).
- 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.
- 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.
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.
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.
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.
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.
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.
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.
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.
- 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).
Quand le travail a été soumis, connectez-vous à VS Code, puis sélectionnez le débogueur intégré.
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.
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.
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
- Découvrez plus d’informations sur comment et où déployer un modèle.