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.
Vorbereiten eines Trainingsjobs zum Sammeln von TensorBoard-Ausgabedaten
Ein typischer Trainingsjob für Machine Learning in SageMaker AI besteht aus zwei Hauptschritten: der Vorbereitung eines Trainingsskripts und der Konfiguration eines SageMaker-AI-Schätzerobjekts des SageMaker AI Python SDK. In diesem Abschnitt können Sie die erforderlichen Änderungen überprüfen, um TensorBoard-kompatible Daten aus SageMaker-Trainingsjobs zu sammeln.
Voraussetzungen
Die folgende Liste enthält die Voraussetzungen für die Verwendung von SageMaker AI mit TensorBoard.
-
Eine SageMaker-AI-Domain, die mit Amazon VPC in Ihrem AWS-Konto eingerichtet ist.
Anweisungen zur Einrichtung einer Domain finden Sie unter Einstieg in die Domain von Amazon SageMaker AI mit der Schnelleinrichtung. Sie müssen auch Domain-Benutzerprofile für einzelne Benutzer hinzufügen, um auf das TensorBoard in SageMaker AI zugreifen zu können. Weitere Informationen finden Sie unter Benutzerprofil hinzufügen.
-
Die folgende Liste enthält die Mindestberechtigungen für die Verwendung von TensorBoard in SageMaker AI.
-
sagemaker:CreateApp -
sagemaker:DeleteApp -
sagemaker:DescribeTrainingJob -
sagemaker:Search -
s3:GetObject -
s3:ListBucket
-
Schritt 1: Ändern Ihres Trainingsskripts mit den Open-Source-Hilfsprogrammen von TensorBoard
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: TensorBoardX, TensorFlow Summary Writer, PyTorch Summary Writer oder SageMaker Debugger.
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
. Siehe auch die Abschnitte Verwenden von TensorBoard in PyTorch und Log-Skalare in den PyTorch-Tutorials. 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 nativen 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 mit PyTorch können Sie transformers.integrations.TensorBoardCallback
verwenden. Verwenden Sie für Transformers mit TensorFlow den
tf.keras.tensorboard.callbackund ü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 Schritt 2: Erstellen eines SageMaker-Trainings-Schätzerobjekts mit der TensorBoard-Ausgabekonfiguration müssen Sie die Pfade jedoch korrekt zuordnen, damit SageMaker AI den lokalen Pfad erfolgreich durchsuchen und die TensorBoard-Daten im S3-Ausgabe-Bucket speichern kann.
-
Anleitungen zum Ändern von Trainingsskripten mithilfe der Python-Bibliothek von SageMaker Debugger finden Sie unter Ihr Trainingsskript anpassen, um einen Hook zu registrieren.
Schritt 2: Erstellen eines SageMaker-Trainings-Schätzerobjekts mit der TensorBoard-Ausgabekonfiguration
Verwenden Sie die sagemaker.debugger.TensorBoardOutputConfig bei der Konfiguration eines Framework-Schätzers von SageMaker AI. Diese Konfigurations-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. Das folgende Codefragment zeigt ein Beispiel für die Vorbereitung eines TensorFlow-Schätzers mit dem TensorBoard-Ausgabekonfigurationsparameter.
Anmerkung
In diesem Beispiel wird davon ausgegangen, dass Sie das SageMaker Python SDK verwenden. Wenn Sie die Low-Level-SageMaker-API verwenden, sollten Sie Folgendes in die Anforderungssyntax der CreateTrainingJob-API aufnehmen.
"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 standardmäßige Unterstützung für Hyperparameter-Optimierungsaufträge von SageMaker AI, da die CreateHyperParameterTuningJob-API nicht in die TensorBoard-Ausgabekonfiguration für die Zuordnung integriert ist. Um die TensorBoard-Anwendung für Hyperparameter-Optimierungsaufträge zu verwenden, müssen Sie in Ihrem Trainingsskript Code für das Hochladen von Metriken auf Amazon S3 schreiben. Sobald die Metriken auf Amazon S3 hochgeladen wurden, können Sie den Bucket in die TensorBoard-App auf SageMaker AI laden.