Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Préparation d’une tâche d’entraînement pour collecter les données de sortie TensorBoard
Une tâche d’entraînement classique pour le machine learning dans SageMaker AI comprend deux étapes principales : la préparation d’un script d’entraînement et la configuration d’un objet estimateur SageMaker dans le kit SageMaker AI Python SDK. Dans cette section, vous pourrez apprendre les modifications nécessaires pour collecter des données compatibles avec TensorBoard à partir des tâches d’entraînement SageMaker.
Prérequis
La liste suivante indique les conditions préalables pour commencer à utiliser le profileur SageMaker AI avec TensorBoard.
-
Un domaine SageMaker AI configuré avec Amazon VPC dans votre compte AWS.
Pour obtenir des instructions sur la configuration d’un domaine, consultez Intégration au domaine Amazon SageMaker AI à l’aide d’une configuration rapide. Vous devez également ajouter des profils utilisateur de domaine pour que des utilisateurs individuels puissent accéder à TensorBoard sur SageMaker AI. Pour plus d’informations, consultez Ajouter des profils utilisateur.
-
La liste suivante représente l’ensemble minimal d’autorisations pour utiliser TensorBoard sur SageMaker AI.
-
sagemaker:CreateApp -
sagemaker:DeleteApp -
sagemaker:DescribeTrainingJob -
sagemaker:Search -
s3:GetObject -
s3:ListBucket
-
Étape 1 : modifier votre script d’entraînement avec les outils d’assistance TensorBoard open source
Veillez à déterminer les tenseurs et les scalaires de sortie à collecter et à modifier les lignes de code de votre script d’entraînement à l’aide de l’un des outils suivants : TensorBoardX, TensorFlow Summary Writer, PyTorch Summary Writer ou SageMaker Debugger.
Assurez-vous également de spécifier le chemin de sortie des données TensorBoard en tant que répertoire du journal (log_dir) pour le rappel dans le conteneur d’entraînement.
Pour plus d’informations sur les rappels par framework, consultez les ressources suivantes.
-
Pour PyTorch, utilisez torch.utils.tensorboard.SummaryWriter
. Consultez également les sections Utilisation de TensorBoard dans PyTorch et Scalaires de journaux dans les Didacticiels PyTorch (langue française non garantie). Vous pouvez également utiliser TensorBoardX Summary Writer . LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=torch.utils.tensorboard.writer.SummaryWriter(log_dir=LOG_DIR) -
Pour TensorFlow, utilisez le rappel natif de TensorBoard, tf.keras.callbacks.TensorBoard
. LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=tf.keras.callbacks.TensorBoard( log_dir=LOG_DIR, histogram_freq=1) -
Pour Transformers avec PyTorch, vous pouvez utiliser transformers.integrations.TensorBoardCallback
. Pour Transformers avec TensorFlow, utilisez
tf.keras.tensorboard.callbacket transmettez-le au rappel keras dans les transformateurs.Astuce
Vous pouvez également utiliser un chemin de sortie local du conteneur différent. Cependant, dans Étape 2 : créer un objet estimateur d’entraînement SageMaker avec la configuration de sortie TensorBoard, vous devez mapper correctement les chemins pour que SageMaker AI puisse correctement rechercher le chemin local et enregistrer les données TensorBoard dans le compartiment de sortie S3.
-
Pour obtenir des conseils sur la modification des scripts d’entraînement à l’aide de la bibliothèque SageMaker Debugger Python, consultez Adaptation de votre script d’entraînement pour enregistrer un hook.
Étape 2 : créer un objet estimateur d’entraînement SageMaker avec la configuration de sortie TensorBoard
Utilisez sagemaker.debugger.TensorBoardOutputConfig lors de la configuration d’un estimateur de framework SageMaker AI. Cette API de configuration mappe le compartiment S3 que vous spécifiez pour enregistrer les données TensorBoard avec le chemin local dans le conteneur d’entraînement (/opt/ml/output/tensorboard). Passez l’objet du module au paramètre tensorboard_output_config de la classe d’estimateur. L’extrait de code suivant présente un exemple de préparation d’un estimateur TensorFlow avec le paramètre de configuration de sortie TensorBoard.
Note
Cet exemple part du principe que vous utilisez le kit SageMaker Python SDK. Si vous utilisez l’API SageMaker de bas niveau, vous devez inclure ce qui suit dans la syntaxe de demande de l’API CreateTrainingJob.
"TensorBoardOutputConfig": { "LocalPath": "/opt/ml/output/tensorboard", "S3OutputPath": "s3_output_bucket" }
from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import TensorBoardOutputConfig # Set variables for training job information, # such as s3_out_bucket and other unique tags. ... LOG_DIR="/opt/ml/output/tensorboard" output_path = os.path.join( "s3_output_bucket", "sagemaker-output", "date_str", "your-training_job_name" ) tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=os.path.join(output_path, 'tensorboard'), container_local_output_path=LOG_DIR ) estimator = TensorFlow( entry_point="train.py", source_dir="src", role=role, image_uri=image_uri, instance_count=1, instance_type="ml.c5.xlarge", base_job_name="your-training_job_name", tensorboard_output_config=tensorboard_output_config, hyperparameters=hyperparameters)
Note
L’application TensorBoard ne fournit pas de support prêt à l’emploi pour les tâches de réglage d’hyperparamètres de SageMaker AI, car l’API CreateHyperParameterTuningJob n’est pas intégrée à la configuration de sortie TensorBoard pour le mappage. Pour utiliser l’application TensorBoard pour ls tâches de réglage d’hyperparamètres, vous devez écrire du code pour charger les métriques sur Amazon S3 dans votre script d’entraînement. Une fois les métriques chargées dans un compartiment Amazon S3, vous pouvez charger le compartiment dans l’application TensorBoard sur SageMaker AI.