Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bereiten Sie einen Schulungsjob vor, um TensorBoard Ausgangsdaten zu sammeln
Ein typischer Trainingsjob für maschinelles Lernen SageMaker besteht aus zwei Hauptschritten: der Vorbereitung eines Trainingsskripts und der Konfiguration eines SageMaker Schätzobjekts für SageMaker PythonSDK. In diesem Abschnitt erfahren Sie mehr über die erforderlichen Änderungen, um TensorBoard kompatible Daten aus SageMaker Trainingsjobs zu sammeln.
Voraussetzungen
In der folgenden Liste sind die Voraussetzungen aufgeführt, SageMaker mit TensorBoard denen Sie beginnen können.
-
Eine SageMaker Domain, die bei Amazon VPC in Ihrem AWS Konto eingerichtet ist.
Anweisungen zur Einrichtung einer Domain finden Sie unter Onboarding to Amazon SageMaker domain using quick setup. Sie müssen auch Domain-Benutzerprofile hinzufügen, damit einzelne Benutzer darauf zugreifen können SageMaker. TensorBoard Weitere Informationen finden Sie unter Benutzerprofil hinzufügen.
-
Die folgende Liste enthält die Mindestberechtigungen für die Verwendung TensorBoard von SageMaker.
-
sagemaker:CreateApp
-
sagemaker:DeleteApp
-
sagemaker:DescribeTrainingJob
-
sagemaker:Search
-
s3:GetObject
-
s3:ListBucket
-
Schritt 1: Ändern Sie Ihr Trainingsskript mit TensorBoard Open-Source-Hilfstools
Stellen Sie sicher, dass Sie festlegen, welche Ausgabetensoren und Skalare erfasst werden sollen, und ändern Sie die Codezeilen in Ihrem Trainingsskript mit einem der folgenden Tools: TensorBoard X, TensorFlow Summary Writer, Summary Writer oder PyTorch Debugger. SageMaker
Stellen Sie außerdem sicher, dass Sie den TensorBoard Datenausgabepfad als Protokollverzeichnis (log_dir
) für den Rückruf im Trainingscontainer angeben.
Weitere Informationen zu Rückrufen pro Framework finden Sie in den folgenden Ressourcen.
-
Verwenden Sie für PyTorch torch.utils.tensorboard. SummaryWriter
. Weitere Informationen finden Sie in den PyTorchTutorials TensorBoard in den Abschnitten Verwenden von Skalaren PyTorch und Log-Skalaren . Alternativ können Sie TensorBoardX Summary Writer verwenden. LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=torch.utils.tensorboard.writer.SummaryWriter(log_dir=LOG_DIR)
-
Verwenden Sie für TensorFlow den systemeigenen Callback für TensorBoard tf.keras.callbacks. TensorBoard
. LOG_DIR="/opt/ml/output/tensorboard" tensorboard_callback=tf.keras.callbacks.TensorBoard( log_dir=LOG_DIR, histogram_freq=1)
-
Für Transformers with PyTorch können Sie transformers.integrations verwenden. TensorBoardCallback
. Verwenden Sie für Transformers with TensorFlow den
tf.keras.tensorboard.callback
und übergeben Sie ihn an den Keras-Callback in Transformers.Tipp
Sie können jedoch auch einen anderen lokalen Ausgabepfad für den Container verwenden. In müssen Sie jedoch die Pfade korrekt zuordnenSchritt 2: Erstellen Sie ein SageMaker Trainingsschätzungsobjekt mit der Ausgabekonfiguration TensorBoard , um den lokalen Pfad erfolgreich SageMaker zu durchsuchen und die TensorBoard Daten im S3-Ausgabe-Bucket zu speichern.
-
Anleitungen zum Ändern von Trainingsskripten mithilfe der SageMaker Debugger-Python-Bibliothek finden Sie unterAnpassung Ihres Trainingsskripts zur Registrierung eines Hooks.
Schritt 2: Erstellen Sie ein SageMaker Trainingsschätzungsobjekt mit der Ausgabekonfiguration TensorBoard
Verwenden Sie sagemaker.debugger.TensorBoardOutputConfig
bei der Konfiguration einen SageMaker Framework-Estimator. Diese Konfiguration API ordnet den S3-Bucket, den Sie zum Speichern von TensorBoard Daten angeben, dem lokalen Pfad im Trainingscontainer zu (/opt/ml/output/tensorboard
). Übergeben Sie das Objekt des Moduls an den tensorboard_output_config
Parameter der Schätzerklasse. Der folgende Codeausschnitt zeigt ein Beispiel für die Vorbereitung eines TensorFlow Schätzers mit dem TensorBoard Ausgabekonfigurationsparameter.
Anmerkung
In diesem Beispiel wird davon ausgegangen, dass Sie SageMaker Python verwendenSDK. Wenn Sie die Low-Level-Version verwenden SageMaker API, sollten Sie Folgendes in die Anforderungssyntax von aufnehmen. CreateTrainingJobAPI
"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
)
Anmerkung
Die TensorBoard Anwendung bietet keine out-of-the-box Unterstützung für SageMaker Hyperparameter-Tuning-Jobs, da sie nicht in die TensorBoard Ausgabekonfiguration für das Mapping integriert CreateHyperParameterTuningJob
APIist. Um die TensorBoard Anwendung für Hyperparameter-Tuning-Jobs zu verwenden, müssen Sie in Ihrem Trainingsskript Code für das Hochladen von Metriken auf Amazon S3 schreiben. Sobald die Metriken in einen Amazon S3 S3-Bucket hochgeladen wurden, können Sie den Bucket anschließend in die TensorBoard Anwendung laden SageMaker.