Configura Debugger per salvare i SageMaker tensori - Amazon SageMaker

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à.

Configura Debugger per salvare i SageMaker tensori

I tensori sono raccolte di dati di parametri aggiornati dal passaggio successivo e successivo di ogni iterazione di allenamento. SageMaker Debugger raccoglie i tensori di output per analizzare lo stato di un processo di formazione. SageMaker Le operazioni di Debugger CollectionConfige DebuggerHookConfigAPI forniscono metodi per raggruppare i tensori in raccolte e salvarli in un bucket S3 di destinazione.

Nota

Dopo aver configurato e attivato correttamente, SageMaker Debugger salva i tensori di output in un bucket S3 predefinito, se non diversamente specificato. Il formato dell'URI del bucket S3 predefinito è s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/.

Durante la costruzione di uno SageMaker stimatore, attiva Debugger specificando il parametro. SageMaker debugger_hook_config Le fasi seguenti includono esempi di come configurare debugger_hook_config utilizzando le operazioni API CollectionConfig e DebuggerHookConfig per estrarre i tensori dai processi di addestramento e salvarli.

Configurare le raccolte di tensori utilizzando l'API CollectionConfig

Usa l'operazione API CollectionConfig per configurare le raccolte di tensori. Debugger fornisce raccolte di tensori predefinite che coprono una varietà di espressioni regolari (regex) di parametri se si utilizzano framework di deep learning e algoritmi di machine learning supportati da Debugger. Come mostrato nel codice di esempio seguente, aggiungi le raccolte di tensori integrate di cui desideri eseguire il debug.

from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig(name="weights"), CollectionConfig(name="gradients") ]

Le raccolte precedenti impostano l'hook Debugger per salvare i tensori ogni 500 fasi in base al valore predefinito "save_interval".

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

Se desideri personalizzare le raccolte integrate, ad esempio modificando gli intervalli di salvataggio e l'espressione regolare dei tensori, usa il seguente modello CollectionConfig per regolare i parametri.

from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="tensor_collection", parameters={ "key_1": "value_1", "key_2": "value_2", ... "key_n": "value_n" } ) ]

Per ulteriori informazioni sulle chiavi dei parametri disponibili, CollectionConfigconsulta Amazon SageMaker Python SDK. Ad esempio, il seguente esempio di codice mostra come regolare gli intervalli di salvataggio della raccolta dei tensori “perdite” nelle diverse fasi dell'addestramento: salva la perdita ogni 100 fasi nella fase di addestramento e la perdita di convalida ogni 10 fasi nella fase di convalida.

from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="losses", parameters={ "train.save_interval": "100", "eval.save_interval": "10" } ) ]

Configurare l'API DebuggerHookConfig per salvare i tensori

Utilizza l'API DebuggerHookConfig per creare un debugger_hook_config oggetto utilizzando l'collection_configsoggetto creato nel passaggio precedente.

from sagemaker.debugger import DebuggerHookConfig debugger_hook_config=DebuggerHookConfig( collection_configs=collection_configs )

Debugger salva i tensori di output di addestramento del modello nel bucket S3 predefinito. Il formato dell'URI del bucket S3 predefinito è s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/.

Se desideri specificare un URI esatto del bucket S3, usa il seguente esempio di codice:

from sagemaker.debugger import DebuggerHookConfig debugger_hook_config=DebuggerHookConfig( s3_output_path="specify-your-s3-bucket-uri" collection_configs=collection_configs )

Per ulteriori informazioni, consulta DebuggerHookConfig nell'SDK Amazon Python SageMaker .

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 di visualizzazione Tensor

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

  • Analisi tensoriale interattiva in SageMaker Studio Notebook con MXNet

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

    Grafico che traccia la distribuzione dei gradienti di uno strato convoluzionale con un problema di gradiente di fuga

    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 formazione sul modello MXNet Gluon utilizzando Amazon Debugger. SageMaker Illustra che Debugger è impostato per salvare tutti i tensori in un bucket Amazon S3 e recupera gli output di attivazione per la visualizzazione. ReLu 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 tensoriale in tempo reale su un SageMaker notebook con MXNet

    Questo esempio ti guida nell'installazione dei componenti necessari per l'emissione di tensori in un processo di SageMaker formazione di Amazon e nell'utilizzo delle operazioni dell'API Debugger per accedere a tali tensori durante l'esecuzione della formazione. 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 delle configurazioni degli hook di Debugger per costruire uno stimatore. SageMaker TensorFlow È possibile utilizzarlo anche per gli estimatori PyTorch MXNet e XGBoost.

Nota

Nel seguente codice di esempio, il parametro s3_output_path per DebuggerHookConfig è facoltativo. Se non lo specificate, Debugger salva i tensori in, dove è il percorso di output predefinito dei lavori di s3://<output_path>/debug-output/ formazione. <output_path> 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 utilizzando le raccolte integrate di Debugger modificate

È possibile modificare le raccolte integrate di Debugger utilizzando l'operazione API CollectionConfig. L'esempio seguente mostra come modificare la raccolta integrata losses e costruire uno stimatore. SageMaker TensorFlow È possibile utilizzarlo anche per gli estimatori MXNet e XGBoost. PyTorch

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 CollectionConfig parametri, consulta Debugger API. CollectionConfig

Salvare i tensori utilizzando la raccolta personalizzata 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. È possibile utilizzarlo per gli TensorFlow stimatori MXNet e PyTorch 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 CollectionConfig parametri, consulta Debugger. CollectionConfig