Visualisation des tenseurs de sortie Amazon SageMaker Debugger dans TensorBoard
Important
Cette page est obsolète et est remplacée par celle d’Amazon SageMaker AI avec TensoBoard, qui fournit une expérience TensorBoard complète intégrée à l’entraînement SageMaker et aux fonctionnalités de contrôle d’accès du domaine SageMaker AI. Pour en savoir plus, consultez TensorBoard dans Amazon SageMaker AI.
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.
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
-
Configurez un objet de configuration
tensorboard_output_configpour enregistrer la sortie TensorBoard à l'aide de la classeTensorBoardOutputConfigDebugger. Pour le paramètres3_output_path, spécifiez le compartiment S3 par défaut de la session SageMaker AI actuelle ou d’un compartiment S3 préféré. Cet exemple n'ajoute pas le paramètrecontainer_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
TensorBoardOutputConfigdans le kit SDK Python Amazon SageMaker. -
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
weightstoutes les 500 étapes (la valeur par défautsave_intervalpour enregistrer les collections de tenseurs est 500), et les paramètresbiastoutes 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, consultez les API
CollectionConfigetDebuggerHookConfigde Debugger dans le kit Amazon SageMaker Python SDK. -
Construisez un estimateur SageMaker AI avec les paramètres Debugger transmettant les objets de configuration. L’exemple de modèle suivant montre comment créer un estimateur SageMaker AI générique. Vous pouvez remplacer
estimatoretEstimatorpar les classes et les classes parentes d’estimateurs d’autres cadres SageMaker AI. Les estimateurs de cadre SageMaker AI disponibles pour cette fonctionnalité sontTensorFlow,PyTorchetMXNet.from sagemaker.estimatorimportEstimatorestimator =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().
-
-
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() -
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}/ -
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/fitdans le répertoire de travail actuel de votre instance de bloc-notes.!aws s3 cp --recursive {tensorboard_output_path}./logs/fit -
Compressez le répertoire de fichiers dans un fichier TAR à télécharger sur votre ordinateur local.
!tar -cf logs.tar logs -
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.