Surveiller les exécutions et les métriques des expériences Azure Machine LearningMonitor Azure ML experiment runs and metrics

S’APPLIQUE À : ouiÉdition de base ouiÉdition Entreprise                    (Mise à niveau vers l’édition Entreprise)APPLIES TO: yesBasic edition yesEnterprise edition                    (Upgrade to Enterprise edition)

Améliorez le processus de création de modèle avec le suivi de vos expériences et la supervision des métriques d'exécution.Enhance the model creation process by tracking your experiments and monitoring run metrics. Dans cet article, découvrez comment ajouter du code de journalisation à votre script d’entraînement, soumettre une exécution d’expérience, superviser cette exécution et inspecter les résultats dans Azure Machine Learning.In this article, learn how to add logging code to your training script, submit an experiment run, monitor that run, and inspect the results in Azure Machine Learning.

Notes

Azure Machine Learning peut aussi consigner des informations provenant d’autres sources pendant l’entraînement, notamment les exécutions du Machine Learning automatisé ou le conteneur Docker qui exécute le travail d’entraînement.Azure Machine Learning may also log information from other sources during training, such as automated machine learning runs, or the Docker container that runs the training job. Ces journaux ne sont pas documentés.These logs are not documented. Si vous rencontrez des problèmes et que vous contactez le support Microsoft, il pourra peut-être utiliser ces journaux pendant la résolution des problèmes.If you encounter problems and contact Microsoft support, they may be able to use these logs during troubleshooting.

Conseil

Les informations contenues dans ce document sont principalement destinées aux scientifiques des données et aux développeurs qui veulent superviser le processus d’entraînement du modèle.The information in this document is primarily for data scientists and developers who want to monitor the model training process. Si vous êtes un administrateur intéressé par la supervision de l’utilisation des ressources et des événements d’Azure Machine Learning, comme les quotas, les exécutions d’entraînement réalisées ou les déploiements de modèles terminés, consultez Supervision d’Azure Machine Learning.If you are an administrator interested in monitoring resource usage and events from Azure Machine learning, such as quotas, completed training runs, or completed model deployments, see Monitoring Azure Machine Learning.

Métriques pouvant être suiviesAvailable metrics to track

Les métriques suivantes peuvent être ajoutées à une exécution pendant l’entraînement d’une expérimentation.The following metrics can be added to a run while training an experiment. Pour afficher une liste plus détaillée des éléments qui peuvent être suivis lors d’une exécution, consultez la documentation de référence sur l’exécution de la classe.To view a more detailed list of what can be tracked on a run, see the Run class reference documentation.

TypeType Fonction PythonPython function NotesNotes
Valeurs scalairesScalar values Fonction :Function:
run.log(name, value, description='')

Exemple :Example:
run.log("accuracy", 0.95)run.log("accuracy", 0.95)
Journalisez une valeur numérique ou de chaîne dans l’exécution avec le nom donné.Log a numerical or string value to the run with the given name. La journalisation d’une métrique dans une exécution entraîne le stockage de cette métrique dans l’enregistrement d’exécution dans l’expérimentation.Logging a metric to a run causes that metric to be stored in the run record in the experiment. Vous pouvez consigner la même métrique plusieurs fois pendant une exécution, le résultat étant considéré comme un vecteur de cette métrique.You can log the same metric multiple times within a run, the result being considered a vector of that metric.
ListesLists Fonction :Function:
run.log_list(name, value, description='')

Exemple :Example:
run.log_list("accuracies", [0.6, 0.7, 0.87])run.log_list("accuracies", [0.6, 0.7, 0.87])
Journalisez une liste de valeurs dans l’exécution avec le nom donné.Log a list of values to the run with the given name.
LigneRow Fonction :Function:
run.log_row(name, description=None, **kwargs)
Exemple :Example:
run.log_row("Y over X", x=1, y=0.4)run.log_row("Y over X", x=1, y=0.4)
L’utilisation de log_row crée une métrique avec plusieurs colonnes, comme décrit dans kwargs.Using log_row creates a metric with multiple columns as described in kwargs. Chaque paramètre nommé génère une colonne avec la valeur spécifiée.Each named parameter generates a column with the value specified. Vous pouvez appeler log_row une seule fois pour consigner un tuple arbitraire ou plusieurs fois dans une boucle pour générer une table complète.log_row can be called once to log an arbitrary tuple, or multiple times in a loop to generate a complete table.
Table de charge de travailTable Fonction :Function:
run.log_table(name, value, description='')

Exemple :Example:
run.log_table("Y over X", {"x":[1, 2, 3], "y":[0.6, 0.7, 0.89]})run.log_table("Y over X", {"x":[1, 2, 3], "y":[0.6, 0.7, 0.89]})
Journalisez un objet dictionnaire dans l’exécution avec le nom donné.Log a dictionary object to the run with the given name.
ImagesImages Fonction :Function:
run.log_image(name, path=None, plot=None)

Exemple :Example:
run.log_image("ROC", plot=plt)
Journalisez une image dans l’enregistrement d’exécution.Log an image to the run record. Utilisez log_image pour consigner un fichier image ou un tracé matplotlib dans l’exécution.Use log_image to log an image file or a matplotlib plot to the run. Ces images seront visibles et comparables dans l’enregistrement d’exécution.These images will be visible and comparable in the run record.
Étiqueter une exécutionTag a run Fonction :Function:
run.tag(key, value=None)

Exemple :Example:
run.tag("selected", "yes")run.tag("selected", "yes")
Étiquetez l’exécution avec une clé de chaîne et une valeur de chaîne facultative.Tag the run with a string key and optional string value.
Charger un fichier ou un répertoireUpload file or directory Fonction :Function:
run.upload_file(name, path_or_stream)

Exemple :Example:
run.upload_file("best_model.pkl", "./model.pkl")run.upload_file("best_model.pkl", "./model.pkl")
Chargez un fichier sur l’enregistrement d’exécution.Upload a file to the run record. Les exécutions capturent automatiquement le fichier dans le répertoire de sortie spécifié, par défaut « ./outputs » pour la plupart des types d’exécutions.Runs automatically capture file in the specified output directory, which defaults to "./outputs" for most run types. Utilisez upload_file uniquement quand des fichiers supplémentaires doivent être chargés ou qu’aucun répertoire de sortie n’est spécifié.Use upload_file only when additional files need to be uploaded or an output directory is not specified. Nous vous suggérons d’ajouter outputs au nom afin qu’il soit chargé sur le répertoire outputs.We suggest adding outputs to the name so that it gets uploaded to the outputs directory. Vous pouvez répertorier tous les fichiers qui sont associés à cet enregistrement d’exécution en appelant run.get_file_names()You can list all of the files that are associated with this run record by called run.get_file_names()

Notes

Les métriques pour les valeurs scalaires, listes, lignes et tables peuvent être de type float, integer ou string.Metrics for scalars, lists, rows, and tables can have type: float, integer, or string.

Choisir une option de journalisationChoose a logging option

Si vous souhaitez suivre ou superviser votre expérimentation, vous devez ajouter du code pour démarrer la journalisation quand vous envoyez l’exécution.If you want to track or monitor your experiment, you must add code to start logging when you submit the run. Voici comment déclencher l’envoi d’exécution :The following are ways to trigger the run submission:

  • Run.start_logging : ajoutez des fonctions de journalisation à votre script d’entraînement et démarrez une session de journalisation interactive dans l’expérimentation spécifiée.Run.start_logging - Add logging functions to your training script and start an interactive logging session in the specified experiment. start_logging crée une exécution interactive pour une utilisation dans des scénarios tels que des notebooks.start_logging creates an interactive run for use in scenarios such as notebooks. Toutes les métriques qui sont consignées pendant la session sont ajoutées à l’enregistrement d’exécution dans l’expérimentation.Any metrics that are logged during the session are added to the run record in the experiment.
  • ScriptRunConfig : ajoutez des fonctions de journalisation à votre script d’entraînement et chargez l’intégralité du dossier de script avec l’exécution.ScriptRunConfig - Add logging functions to your training script and load the entire script folder with the run. ScriptRunConfig est une classe pour la définition des configurations pour les exécutions de script.ScriptRunConfig is a class for setting up configurations for script runs. Avec cette option, vous pouvez ajouter le code de supervision pour être informé de la fin de l’opération ou pour obtenir un widget visuel à superviser.With this option, you can add monitoring code to be notified of completion or to get a visual widget to monitor.

Configurer l’espace de travailSet up the workspace

Avant d’ajouter la journalisation et d’envoyer une expérience, vous devez configurer l’espace de travail.Before adding logging and submitting an experiment, you must set up the workspace.

  1. Chargez l’espace de travail.Load the workspace. Pour en savoir plus sur la définition de la configuration de l’espace de travail, consultez le fichier de configuration de l’espace de travail.To learn more about setting the workspace configuration, see workspace configuration file.

[!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-within-notebook/train-within-notebook.ipynb?name=load_ws)][!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-within-notebook/train-within-notebook.ipynb?name=load_ws)]

Option 1 : Utiliser start_loggingOption 1: Use start_logging

start_logging crée une exécution interactive pour une utilisation dans des scénarios tels que des notebooks.start_logging creates an interactive run for use in scenarios such as notebooks. Toutes les métriques qui sont consignées pendant la session sont ajoutées à l’enregistrement d’exécution dans l’expérimentation.Any metrics that are logged during the session are added to the run record in the experiment.

L’exemple suivant entraîne un simple modèle Ridge sklearn localement dans un notebook Jupyter local.The following example trains a simple sklearn Ridge model locally in a local Jupyter notebook. Pour en savoir plus sur l’envoi d’expérimentations dans différents environnements, consultez Configurer des cibles de calcul pour l’entraînement de modèle avec Azure Machine Learning.To learn more about submitting experiments to different environments, see Set up compute targets for model training with Azure Machine Learning.

Chargement des donnéesLoad the data

Cet exemple utilise le jeu de données « diabète », un petit jeu de données bien connu fourni avec scikit-learn.This example uses the diabetes dataset, a well-known small dataset that comes with scikit-learn. Cette cellule charge le jeu de données et le divise en jeux d’entraînement et de test aléatoires.This cell loads the dataset and splits it into random training and testing sets.

[!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-within-notebook/train-within-notebook.ipynb?name=load_data)][!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-within-notebook/train-within-notebook.ipynb?name=load_data)]

Ajouter un suiviAdd tracking

Ajoutez le suivi d’expérimentation à l’aide du kit de développement logiciel (SDK) Azure Machine Learning et chargez un modèle persistant sur l’enregistrement d’exécution de l’expérimentation.Add experiment tracking using the Azure Machine Learning SDK, and upload a persisted model into the experiment run record. Le code suivant ajoute des balises, des journaux d’activité, puis charge un fichier de modèle sur l’exécution de l’expérimentation.The following code adds tags, logs, and uploads a model file to the experiment run.

[!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-within-notebook/train-within-notebook.ipynb?name=create_experiment)][!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-within-notebook/train-within-notebook.ipynb?name=create_experiment)]

Le script se termine par run.complete(), ce qui marque l’exécution comme terminée.The script ends with run.complete(), which marks the run as completed. Cette fonction est généralement utilisée dans les scénarios de notebooks interactifs.This function is typically used in interactive notebook scenarios.

Option n°2 : Utiliser ScriptRunConfigOption 2: Use ScriptRunConfig

ScriptRunConfig est une classe destinée à la définition des configurations pour les exécutions de script.ScriptRunConfig is a class for setting up configurations for script runs. Avec cette option, vous pouvez ajouter le code de supervision pour être informé de la fin de l’opération ou pour obtenir un widget visuel à superviser.With this option, you can add monitoring code to be notified of completion or to get a visual widget to monitor.

Cet exemple s’appuie sur le modèle Ridge sklearn de base ci-dessus.This example expands on the basic sklearn Ridge model from above. Il effectue un simple balayage des paramètres sur les valeurs alpha du modèle pour capturer les métriques et les modèles entraînés dans les exécutions sous l’expérimentation.It does a simple parameter sweep to sweep over alpha values of the model to capture metrics and trained models in runs under the experiment. L’exemple est exécuté localement dans un environnement géré par l’utilisateur.The example runs locally against a user-managed environment.

  1. Créez un script d’entraînement train.py.Create a training script train.py.

    [!code-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train.py)][!code-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train.py)]

  2. Le script train.py fait référence à mylib.py, qui permet d’obtenir la liste des valeurs alpha à utiliser dans le modèle Ridge.The train.py script references mylib.py which allows you to get the list of alpha values to use in the ridge model.

    [!code-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/mylib.py)][!code-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/mylib.py)]

  3. Configurez un environnement local géré par l’utilisateur.Configure a user-managed local environment.

    [!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb?name=user_managed_env)][!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb?name=user_managed_env)]

  4. Envoyez le script train.py à exécuter dans l’environnement géré par l’utilisateur.Submit the train.py script to run in the user-managed environment. L’intégralité de ce dossier de script est envoyée pour l’entraînement, dont le fichier mylib.py.This whole script folder is submitted for training, including the mylib.py file.

    [!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb?name=src)] [!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb?name=run)][!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb?name=src)] [!notebook-python[] (~/MachineLearningNotebooks/how-to-use-azureml/training/train-on-local/train-on-local.ipynb?name=run)]

Gérer une exécutionManage a run

L’article Start, monitor and cancel training runs (Démarrer, surveiller et annuler des exécutions d’entraînement) met en avant les flux de travail Azure Machine Learning spécifiques pour la gestion de vos expériences.The Start, monitor, and cancel training runs article highlights specific Azure Machine Learning workflows for how to manage your experiments.

Afficher les détails de l’exécutionView run details

Afficher les exécutions actives ou en file d’attente dans le navigateurView active/queued runs from the browser

Les cibles de calcul utilisées pour l’entraînement des modèles sont des ressources partagées.Compute targets used to train models are a shared resource. Par conséquent, il peut arriver que plusieurs exécutions soient actives ou se trouvent en file d’attente au même moment.As such, they may have multiple runs queued or active at a given time. Pour voir les exécutions d’une cible de calcul dans votre navigateur, effectuez les étapes suivantes :To see the runs for a specific compute target from your browser, use the following steps:

  1. Dans Azure Machine Learning Studio, sélectionnez votre espace de travail, puis sélectionnez Calcul sur le côté gauche de la page.From the Azure Machine Learning studio, select your workspace, and then select Compute from the left side of the page.

  2. Sélectionnez Clusters d’entraînement pour afficher la liste des cibles de calcul utilisées pour l’entraînement.Select Training Clusters to display a list of compute targets used for training. Ensuite, sélectionnez le cluster.Then select the cluster.

    Sélectionner le cluster d’entraînement

  3. Sélectionnez Exécutions.Select Runs. La liste des exécutions qui utilisent ce cluster s’affiche.The list of runs that use this cluster is displayed. Pour voir les détails d’une exécution, utilisez le lien qui se trouve dans la colonne Exécution.To view details for a specific run, use the link in the Run column. Pour voir les détails d’une expérience, utilisez le lien qui se trouve dans la colonne Expérience.To view details for the experiment, use the link in the Experiment column.

    Sélectionner des exécutions pour le cluster d’entraînement

    Conseil

    Une exécution peut contenir des exécutions enfants. De fait, une tâche d’entraînement peut créer plusieurs entrées.A run can contain child runs, so one training job can result in multiple entries.

Une fois l’exécution terminée, elle n’est plus affichée dans cette page.Once a run completes, it is no longer displayed on this page. Pour voir des informations sur les exécutions terminées, consultez la section Expériences dans le studio, puis sélectionnez l’expérience et l’exécution.To view information on completed runs, visit the Experiments section of the studio and select the experiment and run. Pour plus d’informations, consultez la section Interroger les métriques d’exécution.For more information, see the Query run metrics section.

Superviser l’exécution avec le widget de notebook JupyterMonitor run with Jupyter notebook widget

Quand vous utilisez la méthode ScriptRunConfig pour envoyer des exécutions, vous pouvez vérifier la progression de l’exécution avec un widget Jupyter.When you use the ScriptRunConfig method to submit runs, you can watch the progress of the run with a Jupyter widget. Comme l’envoi de l’exécution, le widget est asynchrone et fournit des mises à jour automatiques toutes les 10 à 15 secondes jusqu’à ce que la tâche soit terminée.Like the run submission, the widget is asynchronous and provides live updates every 10-15 seconds until the job completes.

  1. Affichez le widget Jupyter en attendant la fin de l’exécution.View the Jupyter widget while waiting for the run to complete.

    from azureml.widgets import RunDetails
    RunDetails(run).show()
    

    Capture d’écran du widget de notebook Jupyter

    Vous pouvez également obtenir un lien vers le même affichage dans votre espace de travail.You can also get a link to the same display in your workspace.

    print(run.get_portal_url())
    
  2. [Pour l’exécution de Machine Learning automatisé] Pour accéder aux graphiques à partir d’une exécution précédente.[For automated machine learning runs] To access the charts from a previous run. Remplacez <<experiment_name>> par le nom d’une expérience appropriée :Replace <<experiment_name>> with the appropriate experiment name:

    from azureml.widgets import RunDetails
    from azureml.core.run import Run
    
    experiment = Experiment (workspace, <<experiment_name>>)
    run_id = 'autoML_my_runID' #replace with run_ID
    run = Run(experiment, run_id)
    RunDetails(run).show()
    

    Widget de notebook Jupyter pour le Machine Learning automatisé

Pour afficher d’autres détails sur un pipeline, cliquez sur le pipeline que vous souhaitez explorer dans la table. Les graphiques apparaissent dans une fenêtre contextuelle d’Azure Machine Learning Studio.To view further details of a pipeline click on the Pipeline you would like to explore in the table, and the charts will render in a pop-up from the Azure Machine Learning studio.

Obtenir des résultats du journal lors de l’achèvementGet log results upon completion

L’entraînement et la supervision du modèle se produisent en arrière-plan afin que vous puissiez exécuter d’autres tâches pendant que vous attendez.Model training and monitoring occur in the background so that you can run other tasks while you wait. Vous pouvez également attendre que l’entraînement du modèle soit terminé avant d’exécuter davantage de code.You can also wait until the model has completed training before running more code. Quand vous utilisez ScriptRunConfig, vous pouvez employer run.wait_for_completion(show_output = True) pour indiquer quand l’entraînement du modèle est terminé.When you use ScriptRunConfig, you can use run.wait_for_completion(show_output = True) to show when the model training is complete. L’indicateur show_output vous donne une sortie détaillée.The show_output flag gives you verbose output.

Interroger les métriques d’exécutionQuery run metrics

Vous pouvez afficher les métriques d’un modèle entraîné à l’aide de run.get_metrics().You can view the metrics of a trained model using run.get_metrics(). Vous pouvez désormais obtenir toutes les métriques qui ont été consignées dans l’exemple ci-dessus pour déterminer le meilleur modèle.You can now get all of the metrics that were logged in the example above to determine the best model.

Affichez cette expérience dans votre espace de travail dans Azure Machine Learning Studio.View the experiment in your workspace in Azure Machine Learning studio

Une fois l’exécution d’une expérimentation terminée, vous pouvez accéder à l’enregistrement d’exécution de l’expérimentation.When an experiment has finished running, you can browse to the recorded experiment run record. Vous pouvez accéder à l’historique à partir d’Azure Machine Learning Studio.You can access the history from the Azure Machine Learning studio.

Accédez à l’onglet Expériences et sélectionnez votre expérience.Navigate to the Experiments tab and select your experiment. Vous êtes dirigé vers le tableau de bord d’exécution de l’expérience, sur lequel vous pouvez voir les métriques et graphiques suivis qui sont journalisés pour chaque exécution.You are brought to the experiment run dashboard, where you can see tracked metrics and charts that are logged for each run. Dans ce cas, nous avons consigné MSE et les valeurs alpha.In this case, we logged MSE and the alpha values.

Exécution des détails dans Azure Machine Learning Studio

Vous pouvez descendre dans la hiérarchie jusqu’à une exécution spécifique pour en afficher les sorties ou les journaux d’activité ou télécharger la capture instantanée de l’expérience que vous avez envoyée afin de pouvoir partager le dossier de l’expérience avec d’autres utilisateurs.You can drill down to a specific run to view its outputs or logs, or download the snapshot of the experiment you submitted so you can share the experiment folder with others.

Affichage de graphiques dans des détails d’exécutionViewing charts in run details

Il existe différentes manières d’utiliser les API de journalisation pour enregistrer différents types de métriques au cours d’une exécution et de les afficher sous forme de graphiques dans Azure Machine Learning Studio.There are various ways to use the logging APIs to record different types of metrics during a run and view them as charts in Azure Machine Learning studio.

Valeur connectéeLogged Value Exemple de codeExample code Afficher dans le portailView in portal
Journaliser un tableau de valeurs numériquesLog an array of numeric values run.log_list(name='Fibonacci', value=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]) graphique en courbes à variable uniquesingle-variable line chart
Journaliser une valeur numérique avec le même nom de métrique utilisé à plusieurs reprises (comme à l’intérieur d’une boucle for)Log a single numeric value with the same metric name repeatedly used (like from within a for loop) for i in tqdm(range(-10, 10)): run.log(name='Sigmoid', value=1 / (1 + np.exp(-i))) angle = i / 2.0 Graphique en courbes à variable uniqueSingle-variable line chart
Journaliser une ligne avec 2 colonnes numériques à plusieurs reprisesLog a row with 2 numerical columns repeatedly run.log_row(name='Cosine Wave', angle=angle, cos=np.cos(angle)) sines['angle'].append(angle) sines['sine'].append(np.sin(angle)) Graphique en courbes à deux variablesTwo-variable line chart
Journaliser un table avec 2 colonnes numériquesLog table with 2 numerical columns run.log_table(name='Sine Wave', value=sines) Graphique en courbes à deux variablesTwo-variable line chart

Exemples de notebooksExample notebooks

Les notebooks suivants illustrent les concepts de cet article :The following notebooks demonstrate concepts in this article:

Découvrez comment exécuter des notebooks dans l’article Utiliser des notebooks Jupyter pour explorer ce service.Learn how to run notebooks by following the article Use Jupyter notebooks to explore this service.

Étapes suivantesNext steps

Essayez de suivre les étapes suivantes pour savoir comment utiliser le kit SDK Azure Machine Learning pour Python :Try these next steps to learn how to use the Azure Machine Learning SDK for Python: