As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configurar o SageMaker depurador para salvar tensores
Os tensores são coleções de dados de parâmetros atualizados da passagem para trás e para frente de cada iteração de treinamento. SageMaker O Debugger coleta os tensores de saída para analisar o estado de um trabalho de treinamento. SageMaker As operações do depurador CollectionConfig
DebuggerHookConfig
nota
Depois de configurado e ativado adequadamente, o SageMaker Debugger salva os tensores de saída em um bucket S3 padrão, a menos que especificado de outra forma. O formato do URI padrão do bucket do S3 é s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/
.
Ao construir um SageMaker estimador, ative o SageMaker Debugger especificando o parâmetro. debugger_hook_config
As etapas a seguir incluem exemplos de como configurar as operações debugger_hook_config
usando as operações da API CollectionConfig
e DebuggerHookConfig
para retirar tensores de seus trabalhos de treinamento e salvá-los.
Configurar coleções de tensores usando a API CollectionConfig
Use a operação CollectionConfig
da API para configurar coleções de tensores. O Debugger fornece coleções de tensores pré-criadas que abrangem uma variedade de expressões regulares (regex) de parâmetros se estiver usando estruturas de aprendizado profundo e algoritmos de aprendizado de máquina compatíveis com o Debugger. Conforme mostrado no código de exemplo a seguir, adicione as coleções de tensores integradas que você deseja depurar.
from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig(name="weights"), CollectionConfig(name="gradients") ]
As coleções anteriores configuraram o gancho Debugger para salvar os tensores a cada 500 etapas com base no valor padrão "save_interval"
.
Para obter uma lista completa das coleções integradas do Debugger disponíveis, consulte Coleções integradas do Debugger
Se quiser personalizar as coleções integradas, como alterar os intervalos de salvamento e o regex do tensor, use o modelo CollectionConfig
a seguir para ajustar os parâmetros.
from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="
tensor_collection
", parameters={ "key_1
": "value_1
", "key_2
": "value_2
", ... "key_n
": "value_n
" } ) ]
Para obter mais informações sobre as chaves de parâmetros disponíveis, consulte o CollectionConfig
from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="
losses
", parameters={ "train.save_interval
": "100
", "eval.save_interval
": "10
" } ) ]
dica
Esse objeto de configuração da coleção de tensores pode ser usado para operações da DebuggerHookAPI Config e Rule.
Configurar a API DebuggerHookConfig
para salvar tensores
Use a API DebuggerHookConfigdebugger_hook_config
objeto usando o collection_configs
objeto que você criou na etapa anterior.
from sagemaker.debugger import DebuggerHookConfig debugger_hook_config=DebuggerHookConfig( collection_configs=
collection_configs
)
O Debugger salva os tensores de saída de treinamento do modelo no bucket S3 padrão. O formato do URI padrão do bucket do S3 é s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/.
Se você quiser especificar um URI exato do bucket do S3, use o exemplo de código a seguir:
from sagemaker.debugger import DebuggerHookConfig debugger_hook_config=DebuggerHookConfig( s3_output_path="
specify-your-s3-bucket-uri
" collection_configs=collection_configs
)
Para obter mais informações, consulte DebuggerHookConfig
Exemplos de Cadernos e exemplos de código para configurar o Debugger Hook
As seções a seguir fornecem cadernos e exemplos de código de como usar o hook do Debugger para salvar, acessar e visualizar tensores de saída.
Tópicos
Blocos de anotações de exemplo da visualização de tensores
Os dois exemplos de notebooks a seguir mostram o uso avançado do Amazon SageMaker Debugger para visualizar tensores. O Debugger fornece uma visão transparente do treinamento de modelos de aprendizado profundo.
-
Análise interativa de tensores no SageMaker Studio Notebook com MXNet
Este exemplo de notebook mostra como visualizar tensores salvos usando o Amazon SageMaker Debugger. Com a visualização dos tensores, você pode ver como os valores dos tensores mudam ao treinar algoritmos de aprendizado profundo. Esse notebook inclui um trabalho de treinamento com uma rede neural mal configurada e usa o Amazon SageMaker Debugger para agregar e analisar tensores, incluindo gradientes, saídas de ativação e pesos. Por exemplo, o gráfico a seguir mostra a distribuição de gradientes de uma camada convolucional que está sofrendo de um problema de desaparecimento de gradiente.
Esse bloco de anotações também ilustra como uma boa configuração inicial de hiperparâmetros aprimora o processo de treinamento gerando os mesmos gráficos de distribuição de tensores.
-
Visualizar e depurar tensores no treinamento de modelos do MXNet
Este exemplo de notebook mostra como salvar e visualizar tensores de um trabalho de treinamento do modelo MXNet Gluon usando o Amazon Debugger. SageMaker Isso ilustra que o Debugger está configurado para salvar todos os tensores em um bucket do Amazon S3 e recuperar as saídas de ativação para a visualização. ReLu A figura a seguir mostra uma visualização tridimensional das saídas de ReLu ativação. O esquema de cores está definido como azul para indicar valores próximos a 0 e amarelo para indicar valores próximos a 1.
Nesse bloco de anotações, a classe importada
TensorPlot
detensor_plot.py
é projetada para plotar redes neurais convolucionais (CNNs) que usam imagens bidimensionais como entradas. O scripttensor_plot.py
fornecido com o bloco de anotações recupera os tensores usando o Debugger e visualiza a CNN. Você pode executar esse notebook no SageMaker Studio para reproduzir a visualização do tensor e implementar seu próprio modelo de rede neural convolucional. -
Análise de tensores em tempo real em um SageMaker notebook com o MXNet
Este exemplo orienta você na instalação dos componentes necessários para a emissão de tensores em um trabalho de SageMaker treinamento da Amazon e no uso das operações da API Debugger para acessar esses tensores durante a execução do treinamento. Um modelo CNN de glúon é treinado no conjunto de dados Fashion MNIST. Enquanto a tarefa estiver em execução, você verá como o Debugger recupera as saídas de ativação da primeira camada convolucional de cada um dos 100 lotes e as visualiza. Além disso, isso mostrará como visualizar os pesos após a conclusão do trabalho.
Salvar tensores usando coleções integradas do Debugger
Você pode usar coleções integradas de tensores usando a API CollectionConfig
e salvá-las usando a API DebuggerHookConfig
. O exemplo a seguir mostra como usar as configurações padrão das configurações do gancho do Debugger para construir um estimador. SageMaker TensorFlow Você também pode utilizar isso para estimadores MXNet e XGBoost. PyTorch
nota
No código de exemplo a seguir, o parâmetro s3_output_path
para DebuggerHookConfig
é opcional. Se você não especificar, o Debugger salvará os tensoress3://<output_path>/debug-output/
, onde <output_path>
é o caminho de saída padrão dos trabalhos de treinamento. SageMaker Por exemplo: .
"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()
Para ver uma lista de coleções integradas do Debugger, consulte Coleções internas do Debugger
Salvar tensores usando coleções integradas modificadas do Debugger
Você pode modificar as coleções integradas do Debugger usando a operação da API CollectionConfig
. O exemplo a seguir mostra como ajustar a losses
coleção integrada e construir um SageMaker TensorFlow estimador. Você também pode usar isso para estimadores 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()
Para ver uma lista completa dos CollectionConfig
parâmetros, consulte Debugger API CollectionConfig
Salvar tensores usando as coleções personalizadas do Debugger
Também é possível salvar um número reduzido de tensores em vez do conjunto completo de tensores, (por exemplo, se quiser reduzir a quantidade de dados salvos no bucket do Amazon S3). O exemplo a seguir mostra como personalizar a configuração de hook do Debugger para especificar os tensores de destino que você deseja salvar. Você pode usar isso para estimadores TensorFlow 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()
Para obter uma lista completa dos CollectionConfig
parâmetros, consulte Debugger CollectionConfig