Visualiser les tenseurs de sortie Amazon SageMaker Debugger dans TensorBoard - Amazon SageMaker

Visualiser les tenseurs de sortie Amazon SageMaker Debugger dans TensorBoard

Utilisez SageMaker Debugger pour créer des fichiers de tenseurs de sortie compatibles avec TensorBoard. Chargez les fichiers à visualiser dans TensorBoard et analysez vos tâches d'entraînement SageMaker. Debugger génère automatiquement des fichiers de tenseurs de sortie compatibles avec TensorBoard. Pour toute configuration de hook que vous personnalisez pour enregistrer les tenseurs de sortie, Debugger peut créer des résumés scalaires, des distributions et des histogrammes que vous pouvez importer dans TensorBoard.


            Diagramme d'architecture du mécanisme de sauvegarde du tenseur de sortie Debugger.

Vous pouvez activer cela en transmettant les objets DebuggerHookConfig et TensorBoardOutputConfig à un objet estimator.

La procédure suivante explique comment enregistrer les scalaires, les pondérations et les biais sous forme de tenseurs, d'histogrammes et de distributions complets pouvant être visualisés avec TensorBoard. Debugger les enregistre dans le chemin local du conteneur d'entraînement (le chemin par défaut est /opt/ml/output/tensors) et se synchronise avec les emplacements Amazon S3 transmis via les objets de configuration de sortie Debugger.

Pour enregistrer des fichiers de tenseurs de sortie compatibles avec TensorBoard à l'aide de Debugger

  1. Configurez un objet de configuration tensorboard_output_config pour enregistrer la sortie TensorBoard à l'aide de la classe TensorBoardOutputConfig Debugger. Pour le paramètre s3_output_path, spécifiez le compartiment S3 par défaut de la session SageMaker actuelle ou d'un compartiment S3 préféré. Cet exemple n'ajoute pas le paramètre container_local_output_path ; à la place, il est défini sur le chemin local par défaut /opt/ml/output/tensors.

    import sagemaker from sagemaker.debugger import TensorBoardOutputConfig bucket = sagemaker.Session().default_bucket() tensorboard_output_config = TensorBoardOutputConfig( s3_output_path='s3://{}'.format(bucket) )

    Pour plus d'informations, consultez l'API Debugger TensorBoardOutputConfig dans le kit SDK Python Amazon SageMaker.

  2. Configurez le hook Debugger et personnalisez les valeurs des paramètres du hook. Par exemple, le code suivant configure un hook Debugger pour enregistrer toutes les sorties scalaires toutes les 100 étapes dans les phases d'entraînement et toutes les 10 étapes dans les phases de validation, les paramètres weights toutes les 500 étapes (la valeur par défaut save_interval pour enregistrer les collections de tenseurs est 500), et les paramètres bias toutes les 10 étapes globales jusqu'à ce que l'étape globale atteigne 500.

    from sagemaker.debugger import CollectionConfig, DebuggerHookConfig hook_config = DebuggerHookConfig( hook_parameters={ "train.save_interval": "100", "eval.save_interval": "10" }, collection_configs=[ CollectionConfig("weights"), CollectionConfig( name="biases", parameters={ "save_interval": "10", "end_step": "500", "save_histogram": "True" } ), ] )

    Pour en savoir plus sur les API de configuration de Debugger, veuillez consulter les API CollectionConfig et DebuggerHookConfig de Debugger dans le kit SDK Python Amazon SageMaker.

  3. Créez un estimateur SageMaker avec les paramètres Debugger transmettant les objets de configuration. L'exemple de modèle suivant montre comment créer un estimateur SageMaker générique. Vous pouvez remplacer estimator et Estimator par les classes parentes d'estimateur et les classes d'estimateur d'autres cadres SageMaker. Les estimateurs de cadre SageMaker disponibles pour cette fonctionnalité sont TensorFlow, PyTorch et MXNet.

    from sagemaker.estimator import Estimator estimator = Estimator( ... # Debugger parameters debugger_hook_config=hook_config, tensorboard_output_config=tensorboard_output_config ) estimator.fit()

    La méthode estimator.fit() démarre une tâche d'entraînement, et Debugger écrit les fichiers de tenseurs de sortie en temps réel sur le chemin de sortie Debugger S3 et sur le chemin de sortie TensorBoard S3. Pour récupérer les chemins de sortie, utilisez les méthodes d'estimateur suivantes :

    • Pour le chemin de sortie Debugger S3, utilisez estimator.latest_job_debugger_artifacts_path().

    • Pour le chemin de sortie TensorBoard S3, utilisez estimator.latest_job_tensorboard_artifacts_path().

  4. Une fois l'entraînement terminé, vérifiez les noms des tenseurs de sortie enregistrés :

    from smdebug.trials import create_trial trial = create_trial(estimator.latest_job_debugger_artifacts_path()) trial.tensor_names()
  5. Vérifiez les données de sortie TensorBoard dans Amazon S3 :

    tensorboard_output_path=estimator.latest_job_tensorboard_artifacts_path() print(tensorboard_output_path) !aws s3 ls {tensorboard_output_path}/
  6. Téléchargez les données de sortie TensorBoard sur votre instance de bloc-notes. Par exemple, la commande AWS CLI suivante télécharge les fichiers TensorBoard sous /logs/fit dans le répertoire de travail actuel de votre instance de bloc-notes.

    !aws s3 cp --recursive {tensorboard_output_path} ./logs/fit
  7. Compressez le répertoire de fichiers dans un fichier TAR à télécharger sur votre ordinateur local.

    !tar -cf logs.tar logs
  8. Téléchargez et extrayez le fichier TAR TensorBoard dans un répertoire de votre appareil, lancez un serveur de bloc-notes Jupyter, ouvrez un nouveau bloc-notes et exécutez l'application TensorBoard.

    !tar -xf logs.tar %load_ext tensorboard %tensorboard --logdir logs/fit

La capture d'écran animée suivante illustre les étapes 5 à 8. Elle montre comment télécharger le fichier TAR TensorBoard Debugger et charger le fichier dans un bloc-notes Jupyter sur votre appareil local.


            Capture d'écran animée montrant comment télécharger et charger le fichier TensorBoard Debugger sur votre machine locale.