Notebook di esempio ed esempi di codice per configurare l’hook Debugger - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Notebook di esempio ed esempi di codice per configurare l’hook Debugger

Le sezioni seguenti forniscono notebook ed esempi di codice su come utilizzare l’hook Debugger per salvare, accedere e visualizzare i tensori di output.

Notebook di esempio per la visualizzazione dei tensori

I due esempi di notebook seguenti mostrano l'utilizzo avanzato di Debugger Amazon SageMaker per la visualizzazione dei tensori. Debugger offre una visione trasparente dell'addestramento dei modelli di deep learning.

  • Analisi interattiva dei tensori nel notebook SageMaker Studio con MXNet

    Questo esempio di notebook mostra come visualizzare i tensori salvati utilizzando Debugger Amazon SageMaker. Visualizzando i tensori, è possibile vedere come cambiano i valori del tensore durante l'addestramento degli algoritmi di deep learning. In questo notebook, è presente un processo di addestramento con una rete neurale mal configurata e viene usato Debugger Amazon SageMaker per aggregare e analizzare i tensori, inclusi i gradienti, gli output di attivazione e i pesi. Ad esempio, il grafico seguente mostra la distribuzione dei gradienti di un livello convoluzionale che soffre di un problema di gradiente di fuga.

    Un grafico che traccia la distribuzione dei gradienti.

    questo notebook illustra anche come una buona impostazione iniziale dell'iperparametro migliora il processo di addestramento generando gli stessi grafici di distribuzione del tensore.

  • Visualizzazione e debug dei tensori dall’addestramento del modello MxNet

    Questo esempio di notebook mostra come salvare e visualizzare i tensori da un processo di addestramento del modello MxNet Gluon utilizzando Debugger Amazon SageMaker. Vedremo che Debugger è impostato per salvare tutti i tensori in un bucket Amazon S3 e recupera gli output di attivazione ReLU per la visualizzazione. La figura seguente mostra una visualizzazione tridimensionale degli output di attivazione ReLU. La combinazione di colori è impostata affinché il blu indichi un valore vicino a 0 e il giallo dei valori vicini a 1.

    Visualizzazione degli output di attivazione ReLU

    In questo notebook, la classe TensorPlot importata da tensor_plot.py è progettata per tracciare reti neurali convoluzionali (CNN) che acquisiscono immagini bidimensionali per gli input. Lo script tensor_plot.py fornito con il notebook recupera i tensori utilizzando Debugger e visualizza la CNN. È possibile eseguire questo notebook su SageMaker Studio per riprodurre la visualizzazione del tensore e implementare il proprio modello di rete neurale convoluzionale.

  • Analisi dei tensori in tempo reale in un notebook SageMaker con MXNet

    Questo esempio ti guida nell'installazione dei componenti necessari per l'emissione di tensori in un processo di addestramento di Amazon SageMaker e nell'utilizzo delle operazioni API Debugger per accedere a tali tensori durante l'esecuzione dell’addestramento. Un modello CNN gluon viene addestrato sul set di dati Fashion MNIST. Mentre il processo è in esecuzione, vedrai come Debugger recupera gli output di attivazione del primo livello convoluzionale da ciascuno dei 100 batch e li visualizza. Inoltre, questo ti mostrerà come visualizzare i pesi una volta completato il processo.

Salvare i tensori utilizzando le raccolte integrate di Debugger

Puoi utilizzare raccolte integrate di tensori utilizzando l'API CollectionConfig e salvarle utilizzando l'API DebuggerHookConfig. L’esempio seguente mostra come utilizzare le impostazioni predefinite della configurazione dell’hook Debugger per creare uno strumento di stima TensorFlow di SageMaker AI. Puoi anche utilizzarlo per gli strumenti di valutazione MXNet, PyTorch e XGBoost.

Nota

Nel seguente codice di esempio, il parametro s3_output_path per DebuggerHookConfig è facoltativo. Se non lo specifichi, Debugger salva i tensori in s3://<output_path>/debug-output/, dove <output_path> è il percorso di output predefinito dei processo di addestramento di SageMaker. Per esempio:

"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()

Per visualizzare un elenco delle raccolte integrate di Debugger, consulta Raccolte integrate di Debugger.

Salvare i tensori modificando le raccolte integrate di Debugger

È possibile modificare le raccolte integrate di Debugger utilizzando l'operazione API CollectionConfig. L’esempio seguente mostra come modificare la raccolta losses integrata e creare uno strumento di stima TensorFlow di SageMaker AI. Puoi anche utilizzarlo per gli strumenti di valutazione MXNet, PyTorch e XGBoost.

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()

Per un elenco completo dei parametri CollectionConfig, consulta API CollectionConfig di Debugger.

Salvare i tensori utilizzando le raccolte personalizzate di Debugger

È inoltre possibile scegliere di salvare una quantità ridotta di tensori anziché i tensori completi, ad esempio, se si desidera ridurre la quantità di dati salvati nel bucket Amazon S3. Nell'esempio seguente viene illustrato come personalizzare la configurazione dell'hook di Debugger per specificare i tensori di destinazione che si desidera salvare. Puoi utilizzarlo per gli strumenti di valutazione TensorFlow, MXNet, PyTorch e XGBoost.

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()

Per un elenco completo dei parametri CollectionConfig, consulta CollectionConfig di Debugger.