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.
Rubriques
Ouvrir le bloc-notes dans Studio
Pour ouvrir le bloc-notes
-
Authentifiez-vous à Studio.
-
Dans la barre latérale gauche, choisissez l'icône File Browser (Explorateur de fichiers) (
).
-
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.
-
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.
-
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
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
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.
-
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.
-
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 :
-
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 :
-
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. -
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
-
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.
-
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é.
-
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
ettrain: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
-
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.
-
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.
-
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.
-
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
-
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).
-
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 :