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.
Konfigurieren Sie den SageMaker Debugger zum Speichern von Tensoren
Tensoren sind Datensammlungen aktualisierter Parameter aus den Rückwärts- und Vorwärtsdurchläufen jeder Trainingsiteration. SageMaker Der Debugger sammelt die Ausgabetensoren, um den Status eines Trainingsjobs zu analysieren. SageMaker Debugger CollectionConfig
DebuggerHookConfig
Anmerkung
Nach der ordnungsgemäßen Konfiguration und Aktivierung speichert der SageMaker Debugger die Ausgabetensoren in einem Standard-S3-Bucket, sofern nicht anders angegeben. Das Format des Standard-S3-Buckets URI ist. s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/
Aktivieren Sie beim Erstellen eines SageMaker Schätzers den SageMaker Debugger, indem Sie den Parameter angeben. debugger_hook_config
Die folgenden Schritte enthalten Beispiele dafür, wie Sie die DebuggerHookConfig
API Operationen „CollectionConfig
und“ einrichten, debugger_hook_config
mit denen Sie Tensoren aus Ihren Trainingsaufgaben herausziehen und speichern können.
Konfigurieren Sie Tensor-Sammlungen mit dem CollectionConfig
API
Verwenden Sie den CollectionConfig
API Vorgang, um Tensorsammlungen zu konfigurieren. Debugger bietet vorgefertigte Tensorsammlungen, die eine Vielzahl von regulären Ausdrücken (Regex) von Parametern abdecken, wenn Debugger-unterstützte Deep-Learning-Frameworks und Algorithmen für Machine Learning verwendet werden. Fügen Sie, wie im folgenden Beispielcode gezeigt, die integrierten Tensorsammlungen hinzu, die Sie debuggen möchten.
from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig(name="weights"), CollectionConfig(name="gradients") ]
Die vorherigen Sammlungen haben den Debugger-Hook so eingerichtet, dass er die Tensoren alle 500 Schritte basierend auf dem "save_interval"
Standardwert speichert.
Eine vollständige Liste der verfügbaren integrierten Debugger-Sammlungen finden Sie unter Integrierte Debugger-Sammlungen
Wenn Sie die integrierten Sammlungen anpassen möchten, z. B. die Speicherintervalle und den Tensor-Regex ändern möchten, verwenden Sie die folgende CollectionConfig
Vorlage, um die Parameter anzupassen.
from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="
tensor_collection
", parameters={ "key_1
": "value_1
", "key_2
": "value_2
", ... "key_n
": "value_n
" } ) ]
Weitere Informationen zu verfügbaren Parameterschlüsseln finden Sie CollectionConfig
from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="
losses
", parameters={ "train.save_interval
": "100
", "eval.save_interval
": "10
" } ) ]
Tipp
Dieses Konfigurationsobjekt für die Tensorsammlung kann sowohl für Regeloperationen als auch für DebuggerHookConfigAPIRegeloperationen verwendet werden.
Konfigurieren Sie das DebuggerHookConfig
API zum Speichern von Tensoren
Verwenden Sie die DebuggerHookConfigdebugger_hook_config
Objekt mit dem collection_configs
Objekt zu erstellen, das Sie im vorherigen Schritt erstellt haben.
from sagemaker.debugger import DebuggerHookConfig debugger_hook_config=DebuggerHookConfig( collection_configs=
collection_configs
)
Der Debugger speichert die Ausgabetensoren für das Modelltraining im Standard-S3-Bucket. Das Format des Standard-S3-Buckets URI ist s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/.
Wenn Sie einen exakten S3-Bucket angeben möchtenURI, verwenden Sie das folgende Codebeispiel:
from sagemaker.debugger import DebuggerHookConfig debugger_hook_config=DebuggerHookConfig( s3_output_path="
specify-amzn-s3-demo-bucket-uri
" collection_configs=collection_configs
)
Weitere Informationen finden Sie DebuggerHookConfig
Beispiel-Notebooks und Codebeispiele zur Konfiguration des Debugger-Hooks
Die folgenden Abschnitte enthalten Notebooks und Codebeispiele zur Verwendung des Debugger-Hooks zum Speichern, Zugreifen und Visualisieren von Ausgabetensoren.
Themen
Beispiel-Notebooks für Tensorvisualisierungen
Die folgenden beiden Notebook-Beispiele zeigen die erweiterte Verwendung von Amazon SageMaker Debugger zur Visualisierung von Tensoren. Der Debugger bietet einen transparenten Einblick in das Training von Deep-Learning-Modellen.
-
Interaktive Tensoranalyse in Studio Notebook mit SageMaker MXNet
Dieses Notebook-Beispiel zeigt, wie gespeicherte Tensoren mit Amazon SageMaker Debugger visualisiert werden. Durch die Visualisierung der Tensoren können Sie leicht sehen, wie sich die Tensorwerte ändern, während Sie Deep-Learning-Algorithmen trainieren. Dieses Notizbuch beinhaltet eine Trainingsaufgabe mit einem schlecht konfigurierten neuronalen Netzwerk und verwendet Amazon SageMaker Debugger, um Tensoren, einschließlich Gradienten, Aktivierungsausgaben und Gewichtungen, zu aggregieren und zu analysieren. Das folgende Diagramm zeigt beispielsweise die Verteilung der Gradienten eines Convolutional Layers (faltenden Layers), bei dem ein Problem in Zusammenhang mit dem Verschwinden des Gradienten vorliegt.
Dieses Notebooks veranschaulicht auch, wie eine gute anfängliche Hyperparametereinstellung den Trainingsprozess verbessert, indem die gleichen Tensorverteilungsdiagramme generiert werden.
-
Visualisierung und Debuggen von Tensoren aus dem Modelltraining MXNet
Dieses Notebook-Beispiel zeigt, wie Tensoren aus einem MXNet Gluon-Modell-Trainingsjob mit Amazon SageMaker Debugger gespeichert und visualisiert werden. Es zeigt, dass der Debugger so eingestellt ist, dass er alle Tensoren in einem Amazon S3 S3-Bucket speichert und ReLu Aktivierungsausgaben für die Visualisierung abruft. Die folgende Abbildung zeigt eine dreidimensionale Visualisierung der ReLu Aktivierungsausgaben. Im Hinblick auf das Farbschema bedeutet Blau, dass es sich um Werte nahe 0 handelt, und Gelb, dass die Werte nahe 1 sind.
In diesem Notizbuch
tensor_plot.py
dient dieTensorPlot
Klasse, aus der importiert wurde, der Darstellung neuronaler Faltungsnetzwerke (CNNs), die zweidimensionale Bilder als Eingaben verwenden. Das mit dem Notizbuch geliefertetensor_plot.py
Skript ruft Tensoren mithilfe des Debuggers ab und visualisiert die. CNN Sie können dieses Notizbuch in SageMaker Studio ausführen, um die Tensorvisualisierung zu reproduzieren und Ihr eigenes neuronales Faltungsnetzmodell zu implementieren. -
Tensoranalyse in Echtzeit in einem Notebook mit SageMaker MXNet
Dieses Beispiel führt Sie durch die Installation der erforderlichen Komponenten für die Ausgabe von Tensoren in einem SageMaker Amazon-Schulungsjob und die Verwendung der API Debugger-Operationen, um während des Trainings auf diese Tensoren zuzugreifen. Ein CNN Gluon-Modell wird anhand des Fashion-Datensatzes trainiert. MNIST Während der Auftrag ausgeführt wird, werden Sie sehen, wie der Debugger die Aktivierungsausgaben der ersten Faltungsschicht aus jedem der 100 Batches abruft und sie visualisiert. Außerdem erfahren Sie, wie Sie Gewichte nach Abschluss der Arbeit visualisieren.
Speichern von Tensoren mit integrierten Debugger-Sammlungen
Sie können integrierte Sammlungen von Tensoren mit dem verwenden CollectionConfig
API und sie mit dem speichern. DebuggerHookConfig
API Das folgende Beispiel zeigt, wie die Standardeinstellungen von Debugger-Hook-Konfigurationen verwendet werden, um einen SageMaker TensorFlow Schätzer zu erstellen. Sie können dies auch für MXNet PyTorch, und XGBoost Schätzer verwenden.
Anmerkung
Im folgenden Beispielcode ist der s3_output_path
Parameter für DebuggerHookConfig
optional. Wenn Sie ihn nicht angeben, speichert der Debugger die Tensoren unters3://<output_path>/debug-output/
, wo dies der Standardausgabepfad für Trainingsjobs <output_path>
ist. SageMaker Beispielsweise:
"s3://sagemaker-us-east-1-111122223333/sagemaker-debugger-training-YYYY-MM-DD-HH-MM-SS-123/debug-output"
import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import DebuggerHookConfig, CollectionConfig # use Debugger CollectionConfig to call built-in collections collection_configs=[ CollectionConfig(name="weights"), CollectionConfig(name="gradients"), CollectionConfig(name="losses"), CollectionConfig(name="biases") ] # configure Debugger hook # set a target S3 bucket as you want sagemaker_session=sagemaker.Session() BUCKET_NAME=sagemaker_session.default_bucket() LOCATION_IN_BUCKET='debugger-built-in-collections-hook' hook_config=DebuggerHookConfig( s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'. format(BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET), collection_configs=collection_configs ) # construct a SageMaker TensorFlow estimator sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-demo-job', instance_count=1, instance_type="
ml.p3.2xlarge
", framework_version="2.9.0
", py_version="py39
", # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_estimator.fit()
Eine Liste der integrierten Debugger-Sammlungen finden Sie unter Integrierte Debugger-Sammlungen
Speichern von Tensoren mit integrierten Debugger-Sammlungen
Sie können die integrierten Sammlungen des Debuggers mithilfe der Operation ändern. CollectionConfig
API Das folgende Beispiel zeigt, wie Sie die integrierte losses
Sammlung optimieren und einen SageMaker TensorFlow Schätzer erstellen können. Sie können dies auch für MXNet PyTorch, und XGBoost Schätzer verwenden.
import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import DebuggerHookConfig, CollectionConfig # use Debugger CollectionConfig to call and modify built-in collections collection_configs=[ CollectionConfig( name="losses", parameters={"save_interval": "50"})] # configure Debugger hook # set a target S3 bucket as you want sagemaker_session=sagemaker.Session() BUCKET_NAME=sagemaker_session.default_bucket() LOCATION_IN_BUCKET='debugger-modified-collections-hook' hook_config=DebuggerHookConfig( s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'. format(BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET), collection_configs=collection_configs ) # construct a SageMaker TensorFlow estimator sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-demo-job', instance_count=1, instance_type="
ml.p3.2xlarge
", framework_version="2.9.0
", py_version="py39
", # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_estimator.fit()
Eine vollständige Liste der CollectionConfig
Parameter finden Sie unter Debugger CollectionConfig API
Speichern von reduzierten Tensoren mit benutzerdefinierten Debugger-Sammlungen
Sie können auch eine reduzierte Anzahl an Tensoren anstelle des vollständigen Satzes von Tensoren speichern, um beispielsweise die in Ihrem Amazon-S3-Bucket gespeicherte Datenmenge zu verringern. Das folgende Beispiel zeigt, wie Sie die Debugger-Hook-Konfiguration ändern, um Zieltensoren zum Speichern anzugeben. Sie können dies für TensorFlow, MXNet PyTorch, und XGBoost Schätzer verwenden.
import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import DebuggerHookConfig, CollectionConfig # use Debugger CollectionConfig to create a custom collection collection_configs=[ CollectionConfig( name="custom_activations_collection", parameters={ "include_regex": "relu|tanh", # Required "reductions": "mean,variance,max,abs_mean,abs_variance,abs_max" }) ] # configure Debugger hook # set a target S3 bucket as you want sagemaker_session=sagemaker.Session() BUCKET_NAME=sagemaker_session.default_bucket() LOCATION_IN_BUCKET='debugger-custom-collections-hook' hook_config=DebuggerHookConfig( s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'. format(BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET), collection_configs=collection_configs ) # construct a SageMaker TensorFlow estimator sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-demo-job', instance_count=1, instance_type="
ml.p3.2xlarge
", framework_version="2.9.0
", py_version="py39
", # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_estimator.fit()
Eine vollständige Liste der CollectionConfig
Parameter finden Sie unter Debugger CollectionConfig