Démarrer, surveiller et suivre l’historique des exécutions
S’APPLIQUE À : SDK Python azureml v1
S’APPLIQUE À : Extension ml Azure CLI v1
Le Kit de développement logiciel (SDK) Azure Machine Learning pour Python v1 et l’interface de ligne de commande de Machine Learning fournissent diverses méthodes permettant d’analyser, d’organiser et de suivre vos exécutions d’apprentissage et d’expérimentation. L’historique des exécutions ML est un élément important d’un processus de développement ML explicable et reproductible.
Conseil
Pour plus d’informations sur l’utilisation de studio, consultez Suivre, surveiller et analyser les exécutions avec studio.
Si vous utilisez le Kit de développement logiciel (SDK) Azure Machine Learning v2, consultez les articles suivants :
Cet article explique comment effectuer les tâches suivantes :
- Analyse des performances d’exécution.
- Identification et recherche d’exécutions.
- Recherche sur l’historique des exécutions.
- Annulation ou mise en échec d’exécutions.
- Création d’exécutions enfants.
- Analyse de l’état d’exécution par notification par e-mail.
Conseil
Si vous recherchez des informations sur la supervision du service Azure Machine Learning et des services Azure associés, consultez Guide pratique pour superviser Azure Machine Learning. Si vous recherchez des informations sur les modèles de supervision déployés en tant que services web, consultez Collecter les données des modèles et Superviser avec Application Insights.
Prérequis
Vous devez disposer des éléments suivants :
Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayez la version gratuite ou payante d’Azure Machine Learning dès aujourd’hui.
Le Kit de développement logiciel (SDK) Azure Machine Learning pour Python (version 1.0.21 ou ultérieure). Pour installer ou mettre à jour la dernière version du SDK, consultez Installer ou mettre à jour le SDK.
Pour installer votre version du Kit de développement logiciel (SDK) Azure Machine Learning, utilisez le code suivant :
print(azureml.core.VERSION)
Azure CLI et l’extension CLI pour Azure Machine Learning.
Important
Certaines des commandes Azure CLI de cet article utilisent l’extension
azure-cli-ml
, ou v1, pour Azure Machine Learning. La prise en charge de l’extension v1 se termine le 30 septembre 2025. Vous pourrez installer et utiliser l’extension v1 jusqu’à cette date.Nous vous recommandons de passer à l’extension
ml
, ou v2, avant le 30 septembre 2025. Pour plus d’informations sur l’extension v2, consultez Extension Azure ML CLI et le SDK Python v2.
Analyse des performances d’exécution
Démarrer une exécution et son processus de journalisation
S’APPLIQUE À : SDK Python azureml v1
Configurez votre expérience en important les classes Set up your experiment by importing the Workspace, Experiment, Run, et ScriptRunConfig depuis le package azureml.core.
import azureml.core from azureml.core import Workspace, Experiment, Run from azureml.core import ScriptRunConfig ws = Workspace.from_config() exp = Experiment(workspace=ws, name="explore-runs")
Démarrez une exécution et son processus de journalisation à l’aide de la méthode
start_logging()
.notebook_run = exp.start_logging() notebook_run.log(name="message", value="Hello from run!")
Surveiller l’état d’une exécution
S’APPLIQUE À : SDK Python azureml v1
Obtenir l’état d’une exécution avec la méthode
get_status()
.print(notebook_run.get_status())
Pour obtenir l’ID d’exécution, la durée d’exécution et des détails supplémentaires sur l’exécution, utilisez la méthode
get_details()
.print(notebook_run.get_details())
Lorsque votre exécution se termine correctement, utilisez la méthode
complete()
pour la marquer comme terminé.notebook_run.complete() print(notebook_run.get_status())
Si vous utilisez le modèle de conception
with...as
de Python, l’exécution se marque automatiquement comme étant terminée quand l’exécution est en dehors de l’étendue. Vous n’avez pas besoin de marquer manuellement l’exécution comme étant terminée.with exp.start_logging() as notebook_run: notebook_run.log(name="message", value="Hello from run!") print(notebook_run.get_status()) print(notebook_run.get_status())
Identifier et rechercher des exécutions
Dans Azure Machine Learning, vous pouvez utiliser des balises et propriétés pour vous aider dans l’organisation et l’interrogation d’exécutions en vue de rechercher des informations importantes.
Ajouter des propriétés et des balises
S’APPLIQUE À : SDK Python azureml v1
Pour ajouter des métadonnées de recherche à vos exécutions, utilisez la méthode
add_properties()
. Par exemple, le code suivant ajoute la propriété"author"
à l’exécution :local_run.add_properties({"author":"azureml-user"}) print(local_run.get_properties())
Les propriétés sont immuables et créent enregistrement permanent à des fins d’audit. L’exemple de code suivant génère une erreur, car nous avons déjà ajouté
"azureml-user"
comme valeur de propriété"author"
dans le code précédent :try: local_run.add_properties({"author":"different-user"}) except Exception as e: print(e)
Contrairement aux propriétés, les étiquettes sont modifiables. Pour ajouter des informations consultables et ayant du sens pour les utilisateurs de votre expérience, utilisez la méthode
tag()
.local_run.tag("quality", "great run") print(local_run.get_tags()) local_run.tag("quality", "fantastic run") print(local_run.get_tags())
Vous pouvez également ajouter des balises de chaîne simples. Quand ces étiquettes apparaissent dans le dictionnaire des étiquettes, leur valeur est
None
.local_run.tag("worth another look") print(local_run.get_tags())
Interroger des propriétés et des balises
Vous pouvez interroger des exécutions au sein d’une expérience pour renvoyer une liste d’exécutions qui correspondent aux propriétés et balises spécifiques.
S’APPLIQUE À : SDK Python azureml v1
list(exp.get_runs(properties={"author":"azureml-user"},tags={"quality":"fantastic run"})) list(exp.get_runs(properties={"author":"azureml-user"},tags="worth another look"))
Annulation ou mise en échec d’exécutions
Si vous constatez une erreur ou si votre exécution prend trop de temps, vous pouvez l’annuler.
S’APPLIQUE À : SDK Python azureml v1
Pour annuler une exécution à l’aide du Kit de développement logiciel (SDK), utilisez la méthode cancel()
:
src = ScriptRunConfig(source_directory='.', script='hello_with_delay.py')
local_run = exp.submit(src)
print(local_run.get_status())
local_run.cancel()
print(local_run.get_status())
Si votre exécution se termine, mais contient une erreur (par exemple, utilisation d’un script d’entraînement incorrect), vous pouvez utiliser la méthode fail()
la marquer comme ayant échoué.
local_run = exp.submit(src)
local_run.fail()
print(local_run.get_status())
Créer des exécutions enfants
S’APPLIQUE À : SDK Python azureml v1
Créez des exécutions enfants pour regrouper les exécutions associées, comme pour différentes itérations de réglage des hyperparamètres.
Notes
Les exécutions enfants peuvent uniquement être créées à l’aide du Kit de développement logiciel (SDK).
Cet exemple de code utilise le script hello_with_children.py
de création d’un lot de cinq exécutions enfants issues d’une exécution envoyée à l’aide de la méthode child_run()
:
!more hello_with_children.py
src = ScriptRunConfig(source_directory='.', script='hello_with_children.py')
local_run = exp.submit(src)
local_run.wait_for_completion(show_output=True)
print(local_run.get_status())
with exp.start_logging() as parent_run:
for c,count in enumerate(range(5)):
with parent_run.child_run() as child:
child.log(name="Hello from child run", value=c)
Notes
Dès qu’elles sont hors de portée, les exécutions enfants sont automatiquement marquées comme étant terminées.
Pour créer efficacement de nombreuses exécutions enfants, utilisez la méthode create_children()
. Chaque création se traduisant par un appel réseau, la création d’un lot d’exécutions est plus efficace que la création d’exécutions une à une.
Envoyer des exécutions enfants
Les exécutions enfants peuvent également être envoyées à partir d’une exécution parente. Cela vous permet de créer des hiérarchies d’exécutions parentes et enfants. Vous ne pouvez pas créer une exécution enfant sans parent : même si l’exécution parente ne fait rien d’autre que de lancer des exécutions enfants, il est toujours nécessaire de créer la hiérarchie. Les états de toutes les exécutions sont indépendants : un parent peut afficher l’état de réussite "Completed"
même si une ou plusieurs exécutions enfants ont été annulées ou ont échoué.
Vous pouvez souhaiter que vos exécutions enfants utilisent une configuration d’exécution différente de celle de l’exécution parente. Par exemple, vous pouvez utiliser une configuration basée sur l’UC et moins puissante pour le parent, tout en utilisant des configurations basées sur le GPU pour les enfants. Un autre souhait courant consiste à passer à chaque enfant des données et des arguments différents. Pour personnaliser une exécution enfant, créez un objet ScriptRunConfig
pour l’exécution enfant.
Important
Pour soumettre une exécution enfant à partir d’une exécution parente sur un ordinateur distant, vous devez d’abord vous connecter à l’espace de travail dans le code de l’exécution parente. Par défaut, l’objet de contexte d’exécution d’une exécution distante ne dispose pas d’informations d’identification permettant de soumettre des exécutions enfants. Utilisez un principal de service ou les informations d’identification d’une identité managée pour vous connecter. Pour plus d’informations sur l’authentification, consultez Configurer l’authentification.
Le code ci-dessous :
- Récupère une ressource de calcul nommée
"gpu-cluster"
dans l’espace de travailws
- Itère sur différentes valeurs d’argument à passer aux objets
ScriptRunConfig
des enfants - Crée et envoie une nouvelle exécution enfant à l’aide de la ressource de calcul personnalisée et de l’argument
- Bloque jusqu’à ce que toutes les exécutions enfants soient terminées
# parent.py
# This script controls the launching of child scripts
from azureml.core import Run, ScriptRunConfig
compute_target = ws.compute_targets["gpu-cluster"]
run = Run.get_context()
child_args = ['Apple', 'Banana', 'Orange']
for arg in child_args:
run.log('Status', f'Launching {arg}')
child_config = ScriptRunConfig(source_directory=".", script='child.py', arguments=['--fruit', arg], compute_target=compute_target)
# Starts the run asynchronously
run.submit_child(child_config)
# Experiment will "complete" successfully at this point.
# Instead of returning immediately, block until child runs complete
for child in run.get_children():
child.wait_for_completion()
Pour créer efficacement de nombreuses exécutions enfants avec des configurations, des arguments et des entrées identiques, utilisez la méthode create_children()
. Chaque création se traduisant par un appel réseau, la création d’un lot d’exécutions est plus efficace que la création d’exécutions une à une.
Dans une exécution enfant, vous pouvez afficher l’ID d’exécution parente :
## In child run script
child_run = Run.get_context()
child_run.parent.id
Interroger les exécutions enfants
Pour interroger les exécutions enfants d’un parent spécifique, utilisez la méthode get_children()
.
L’argument recursive = True
vous permet d’interroger une arborescence imbriquée d’enfants et de petits-enfants.
print(parent_run.get_children())
Connexion à l’exécution parente ou racine
Vous pouvez utiliser le champ Run.parent
pour accéder à l’exécution qui a lancé l’exécution enfant actuelle. Run.parent
est souvent utilisé pour regrouper les résultats des journaux en un seul endroit. Les exécutions enfants s’exécutent de façon asynchrone et il n’y a aucune garantie de classement ou de synchronisation au-delà de la capacité du parent à attendre la fin de l’exécution de ses enfants.
# in child (or even grandchild) run
def root_run(self : Run) -> Run :
if self.parent is None :
return self
return root_run(self.parent)
current_child_run = Run.get_context()
root_run(current_child_run).log("MyMetric", f"Data from child run {current_child_run.id}")
Analyse de l’état d’exécution par notification par e-mail
Dans le portail Azure, dans la barre de navigation de gauche, sélectionnez l’onglet Analyse.
Sélectionnez Paramètres de diagnostic, puis sélectionnez +Ajouter un paramètre de diagnostic.
Dans le paramètre de diagnostic :
- Sous Détails de la catégorie, sélectionnez AmlRunStatusChangedEvent.
- Dans Détails de la destination, sélectionnez Envoyer à l’espace de travail Log Analytics et spécifiez l’abonnement et l’espace de travail Log Analytics.
Notes
L’espace de travail Azure Log Analytics est un type de ressource Azure différent de celui de l’espace de travail Azure Machine Learning service. S’il n’existe aucune option dans cette liste, vous pouvez créer un espace de travail Log Analytics.
Dans l’onglet Journaux, ajoutez une nouvelle règle d’alerte.
Découvrez comment créer et gérer les alertes de journal à l’aide d’Azure Monitor.
Exemples de notebooks
Les notebooks suivants illustrent les concepts de cet article :
Pour en savoir plus sur les API de journalisation, consultez Notebook de l’API de journalisation.
Pour plus d’informations sur la gestion des exécutions avec le Kit de développement logiciel (SDK) Azure Machine Learning, consultez le notebook sur la gestion des exécutions.
Étapes suivantes
- Pour savoir comment enregistrer les mesures de vos expériences, consultez Enregistrer des métriques pendant les exécutions d’entraînement.
- Pour découvrir comment superviser les ressources et les journaux dans Azure Machine Learning, consultez Supervision d’Azure Machine Learning.