Didacticiel de suivi et de comparaison - Amazon SageMaker

Didacticiel de suivi et de comparaison

Ce didacticiel montre comment suivre visuellement et comparer des essais dans une expérience d'entraînement de modèle à l'aide d'Amazon SageMaker Studio. La base du didacticiel est le bloc-notes MNIST Handwritten Digits Classification Experiment.

Il est prévu que cette rubrique soit affichée en parallèle avec Studio avec le bloc-notes MNIST ouvert. Lorsque vous parcourez les cellules, les sections de ce document mettent en évidence le code pertinent et montrent comment observer les résultats dans Studio. Certains extraits de code ont été modifiés par souci de brièveté.

Pour nettoyer les ressources créées par le bloc-notes, veuillez consulter Nettoyer les ressources Amazon SageMaker Experiment.

Pour obtenir un didacticiel qui présente d'autres fonctions de Studio, veuillez consulter Présentation d'Amazon SageMaker Studio.

Prérequis

  • Copie locale de l'exemple de bloc-notes MNIST et du fichier mnist.py compagnon. Les deux fichiers sont disponibles dans le dossier sagemaker_experiments/mnist-handwritten-digits-classification-experiment du référentiel aws/amazon-sagemaker-examples. Pour télécharger les fichiers, choisissez chaque lien, cliquez avec le bouton droit sur le bouton Brut, puis choisissez Enregistrer sous.

  • Un compte IAM Identity Center ou IAM pour vous authentifier à SageMaker Studio. Pour plus d'informations, consultez Intégration à Amazon SageMaker Domain.

Ouvrir le bloc-notes dans Studio

Pour ouvrir le bloc-notes

  1. Authentifiez-vous à Studio.

  2. Dans la barre latérale gauche, choisissez l'icône File Browser (Explorateur de fichiers) ( ).

  3. Dans la partie supérieure du volet de l'Explorateur de fichiers, choisissez l'icône Flèche vers le haut et une boîte de dialogue File Upload (Chargement de fichier) s'ouvre. Recherchez et choisissez vos versions locales des fichiers mnist-handwritten-digits-classification-experiment.ipynb et mnist.py, puis choisissez Ouvrir.

  4. Les deux fichiers sont répertoriés dans l'explorateur de fichiers. Double-cliquez sur le fichier de bloc-notes téléchargé pour ouvrir le bloc-notes dans un nouvel onglet.

  5. En haut à droite du bloc-notes, assurez-vous que le noyau est Python 3 (Data Science). Si ce n'est pas le cas, choisissez le nom actuel du noyau pour ouvrir la liste déroulante Select Kernel (Sélectionner le noyau). Choisissez Python 3 (Data Science) puis Sélectionner.

Installation du kit SDK Experiments et importation des modules

Le kit SDK Amazon SageMaker Experiments pour Python est distinct du kit SDK Amazon SageMaker pour Python, qui est préinstallé dans SageMaker Studio. Exécutez les premières cellules du bloc-notes pour installer le kit SDK Experiments et importer les modules Experiments. Les sections pertinentes des cellules de bloc-notes sont affichées ci-dessous.

import sys !{sys.executable} -m pip install sagemaker-experiments
import sagemaker from sagemaker import get_execution_role from sagemaker.session import Session from sagemaker.analytics import ExperimentAnalytics from smexperiments.experiment import Experiment from smexperiments.trial import Trial from smexperiments.trial_component import TrialComponent from smexperiments.tracker import Tracker

Transformation et suivi des données d'entrée

Les cellules suivantes créent un compartiment Amazon S3 et un dossier dans le compartiment nommé mnist. Dans Studio, l'explorateur de fichiers affiche le dossier mnist. Les données d'entrée sont téléchargées dans le dossier mnist/MNIST/raw, normalisé, puis les données transformées sont chargées dans le dossier mnist/MNIST/processed. Vous pouvez explorer en détail le dossier mnist pour afficher, mais pas ouvrir, les fichiers de données.

Votre écran doit se présenter comme suit :

La dernière cellule de la section Ensemble de données crée un suivi pour la tâche de transformation. Le suivi journalise les paramètres de normalisation et l'URI du compartiment Amazon S3 où le jeu de données transformé est stocké. Dans une section ultérieure, nous montrons comment trouver ces informations dans Studio. Dans les sections ultérieures, le suivi est utilisé pour suivre l'expérience et les essais.

with Tracker.create(display_name="Preprocessing", sagemaker_boto_client=sm) as tracker: tracker.log_parameters({ "normalization_mean": 0.1307, "normalization_std": 0.3081, }) tracker.log_input(name="mnist-dataset", media_type="s3/uri", value=inputs)

Créer et suivre une expérience

La procédure suivante crée et suit une expérience pour déterminer l'effet de l'hyperparamètre num_hidden_channel du modèle. Dans le cadre de l'expérience, cinq essais sont créés à l'intérieur d'une boucle, un pour chaque valeur de l'hyperparamètre num_hidden_channel. Plus tard dans le bloc-notes, vous allez comparer les résultats de ces cinq essais.

  1. Dans la barre latérale gauche de Studio, choisissez l'icône SageMaker resources (Ressources SageMaker) ( ). Dans le menu déroulant, choisissez Experiments and trials (Expériences et essais) pour afficher la liste des expériences dans votre compte.

  2. Exécutez la cellule suivante.

    mnist_experiment = Experiment.create( experiment_name=f"mnist-hand-written-digits-classification-{int(time.time())}", description="Classification of mnist hand-written digits", sagemaker_boto_client=sm) print(mnist_experiment)

    Sortie :

    Experiment(sagemaker_boto_client=<botocore.client.SageMaker object at 0x7f7152b326d8>, experiment_name='mnist-hand-written-digits-classification-1575947870', description='Classification of mnist hand-written digits', experiment_arn='arn:aws:sagemaker:us-east-2:acct-id:experiment/mnist-hand-written-digits-classification-1575947870')

    Après l'exécution du code, la liste des expériences contient une entrée pour l'expérience. Son affichage peut prendre un moment et vous devrez peut-être actualiser la liste des expériences. Votre écran doit se présenter comme suit :

  3. Exécutez la cellule suivante.

    preprocessing_trial_component = tracker.trial_component

    Après l'exécution du code, la liste des expériences contient une entrée nommée Unassigned trial components (Composants d'essai non attribués). L'entrée du composant d'essai est l'étape de prétraitement des données précédemment créée. Double-cliquez sur le composant d'essai pour la vérification. Le composant d'essai n'est pas associé à une expérience pour le moment. Votre écran doit se présenter comme suit :

  4. Choisissez l'icône Home dans le chemin de navigation en haut de l'explorateur d'expériences. Là, double-cliquez sur votre expérience pour afficher la liste des essais de l'expérience.

  5. Le code suivant crée des essais pour l'expérience. Chaque essai entraîne un modèle en utilisant un nombre différent pour l'hyperparamètre num_hidden_channel. Le composant d'essai de prétraitement est ajouté à chaque essai pour un suivi complet (par exemple, à des fins d'audit). Le code indique également des définitions pour les métriques suivantes :

    • Perte d'entraînement

    • Perte d'essai

    • Précision du test

    Les définitions indiquent à SageMaker de capturer ces métriques à partir de la sortie du journal de l'algorithme. Les métriques sont utilisées ultérieurement pour évaluer et comparer les modèles.

    preprocessing_trial_component = tracker.trial_component for i, num_hidden_channel in enumerate([2, 5, 10, 20, 32]): trial_name = f"cnn-training-job-{num_hidden_channel}-hidden-channels-{int(time.time())}" cnn_trial = Trial.create( trial_name=trial_name, experiment_name=mnist_experiment.experiment_name, sagemaker_boto_client=sm, ) hidden_channel_trial_name_map[num_hidden_channel] = trial_name cnn_trial.add_trial_component(preprocessing_trial_component) estimator = PyTorch( py_version='py3', framework_version='1.1.0', ..., hyperparameters={ 'hidden_channels': num_hidden_channel, ... }, metric_definitions=[ {'Name':'train:loss', 'Regex':'Train Loss: (.*?);'}, {'Name':'test:loss', 'Regex':'Test Average loss: (.*?),'}, {'Name':'test:accuracy', 'Regex':'Test Accuracy: (.*?)%;'} ], enable_sagemaker_metrics=True, ) cnn_training_job_name = "cnn-training-job-{}".format(int(time.time())) estimator.fit( inputs={'training': inputs}, job_name=cnn_training_job_name, experiment_config={ "TrialName": cnn_trial.trial_name, "TrialComponentDisplayName": "Training", }, )

    La liste d'essai est automatiquement mise à jour au fur et à mesure que chaque tâche d'entraînement s'exécute. Il faut quelques minutes pour que chaque essai soit affiché. Votre écran doit se présenter comme suit :

Comparer et analyser les essais

Cette section dévie du bloc-notes et montre comment comparer et analyser les modèles entraînés à l'aide de l'interface utilisateur SageMaker Studio.

Pour afficher les détails d'un essai

  1. Cliquez deux fois sur l'un des essais pour afficher la liste des composants de l'essai associés à ce dernier. Il existe une tâche de prétraitement et d'entraînement pour chaque essai. Double-cliquez sur l'un des composants pour ouvrir un nouvel onglet qui affiche des informations sur chaque composant.

  2. Sous Trial stages (Étapes d'essai), choisissez Preprocessing (Prétraitement). Dans le menu Describe Trial Component (Décrire le composant d'essai), choisissez Parameters (Paramètres) pour afficher les paramètres de normalisation précédemment enregistrés. Ensuite, choisissez Artifacts (Artefacts) pour afficher l'URI du compartiment Amazon S3 où le jeu de données transformé a été stocké.

  3. Sous Trial stages (Étapes d'essai), choisissez Training (Entraînement). Dans le menu Describe Trial Component (Décrire le composant d'essai), sélectionnez les éléments suivants pour afficher des informations sur le composant d'essai de la tâche d'entraînement.

    • Metrics (Mesures)test:loss, test:accuracy et train:loss

    • Parameters (Paramètres) – Valeurs de l'hyperparamètre et informations d'instance

    • Artifacts (Artefacts) – Stockage Amazon S3 pour le jeu de données en entrée et le modèle en sortie

    • AWS Settings (Paramètres) – Nom de la tâche, ARN, statut, heure de création, durée de l'entraînement, temps facturable, informations sur l'instance, etc.

Pour afficher la liste des essais classés par test:accuracy

  1. Choisissez le nom de l'expérience sur la piste de navigation ci-dessus de TRIAL COMPONENTS (COMPOSANTS DE L'ESSAI) pour afficher la liste des essais.

  2. Choisissez les cinq essais. Maintenez la touche CTRL/CMD enfoncée et sélectionnez chaque essai. Cliquez avec le bouton droit sur la sélection, puis choisissez Open in trial component list (Ouvrir dans la liste des composants de l'essai). Un nouvel onglet s'ouvre pour afficher chaque essai et chaque composant de l'essai.

  3. Si le volet PROPRIÉTÉS DE LA TABLE n'est pas ouvert, choisissez l'icône des paramètres ( ) dans le coin supérieur droit pour l'ouvrir. Désélectionnez tout sauf Essai, Métriques et Tâche d'entraînement. Cliquez sur l'icône des paramètres pour fermer le volet.

  4. Choisissez l'en-tête de colonne test:accuracy (test:precision) pour trier la liste en diminuant la précision maximale du test. Votre écran doit se présenter comme suit :

Pour afficher un graphique de test:loss par rapport à num_hidden_channel

  1. Dans le volet TRIAL COMPONENTS (COMPOSANT DE L'ESSAI), choisissez les cinq essais, puis Add chart (Ajouter un graphique). Sélectionnez dans la zone du graphique pour ouvrir dans le volet des préférences CHART PROPERTIES (PROPRIÉTÉS DU GRAPHIQUE).

  2. Dans CHART PROPERTIES (PROPRIÉTÉS DU GRAPHIQUE), choisissez les options suivantes :

    • Data type (Type de données)Summary statistics (Statistiques récapitulatives)

    • Chart type (Type de graphique)Line (Ligne)

    • X-axis (Axe X)hidden-channels

    • Y-axis (Axe Y)test:lost_last

    • Color (Couleur)None (Aucune)

    Votre écran doit se présenter comme suit :