View a markdown version of this page

Exemplos de Cadernos e exemplos de código para configurar o Debugger Hook - SageMaker IA da Amazon

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

Exemplos de Cadernos e exemplos de código para configurar o Debugger Hook

nota

O Amazon SageMaker Debugger não está mais aberto a novos clientes. Os clientes existentes podem continuar usando o serviço normalmente. AWS continua investindo em melhorias de segurança e disponibilidade para o Debugger, mas não planejamos introduzir novos recursos. Para obter mais informações, consulte Alteração na disponibilidade do depurador.

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.

Cadernos de exemplo da visualização do tensor

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.

    Um gráfico que delineia a distribuição dos gradientes.

    Esse caderno 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 Ele ilustra que o Debugger está configurado para salvar todos os tensores em um bucket do Amazon S3 e recuperar ReLu as saídas de ativação para a visualização. 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.

    Uma visualização das saídas de ativação do ReLU.

    Nesse caderno, a classe importada TensorPlot de tensor_plot.py é projetada para plotar redes neurais convolucionais (CNNs) que usam imagens bidimensionais como entradas. O script tensor_plot.py fornecido com o caderno 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.

  • Real-time Análise de tensores em um SageMaker notebook com MXNet

    Este exemplo orienta você na instalação dos componentes necessários para emitir 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 Depurador

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 criar um estimador de IA. 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 salva os tensores ems3://<output_path>/debug-output/, onde o <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 boto3 import sagemaker from sagemaker.train import ModelTrainer from sagemaker.core.debugger import DebuggerHookConfig, CollectionConfig from sagemaker.core.helper.session_helper import Session, get_execution_role # 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=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 ) from sagemaker.core import image_uris from sagemaker.train.configs import SourceCode, Compute training_image = image_uris.retrieve( framework="tensorflow", region=boto3.Session().region_name, version="2.9.0", py_version="py39", instance_type="ml.p3.2xlarge", image_scope="training" ) # construct a SageMaker ModelTrainer sagemaker_model_trainer=ModelTrainer( training_image=training_image, source_code=SourceCode(entry_script='directory/to/your_training_script.py'), role=get_execution_role(), base_job_name='debugger-demo-job', compute=Compute(instance_type="ml.p3.2xlarge", instance_count=1), # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_model_trainer.train()

Para ver uma lista das coleções integradas do Debugger, consulte Coleções do Debugger. Built-in

Salvar tensores usando coleções integradas modificadas do Depurador

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 criar um TensorFlow estimador de SageMaker IA. Você também pode usar isso para estimadores MXNet PyTorch, e XGBoost.

import boto3 import sagemaker from sagemaker.train import ModelTrainer from sagemaker.core.debugger import DebuggerHookConfig, CollectionConfig from sagemaker.core.helper.session_helper import Session, get_execution_role # 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=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 ) from sagemaker.core import image_uris from sagemaker.train.configs import SourceCode, Compute training_image = image_uris.retrieve( framework="tensorflow", region=boto3.Session().region_name, version="2.9.0", py_version="py39", instance_type="ml.p3.2xlarge", image_scope="training" ) # construct a SageMaker ModelTrainer sagemaker_model_trainer=ModelTrainer( training_image=training_image, source_code=SourceCode(entry_script='directory/to/your_training_script.py'), role=get_execution_role(), base_job_name='debugger-demo-job', compute=Compute(instance_type="ml.p3.2xlarge", instance_count=1), # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_model_trainer.train()

Para ver uma lista completa de CollectionConfig parâmetros, consulte Debugger API CollectionConfig .

Salvar tensores usando as coleções personalizadas do Depurador

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 TensorFlow estimadores MXNet e XGBoost. PyTorch

import boto3 import sagemaker from sagemaker.train import ModelTrainer from sagemaker.core.debugger import DebuggerHookConfig, CollectionConfig from sagemaker.core.helper.session_helper import Session, get_execution_role # 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=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 ) from sagemaker.core import image_uris from sagemaker.train.configs import SourceCode, Compute training_image = image_uris.retrieve( framework="tensorflow", region=boto3.Session().region_name, version="2.9.0", py_version="py39", instance_type="ml.p3.2xlarge", image_scope="training" ) # construct a SageMaker ModelTrainer sagemaker_model_trainer=ModelTrainer( training_image=training_image, source_code=SourceCode(entry_script='directory/to/your_training_script.py'), role=get_execution_role(), base_job_name='debugger-demo-job', compute=Compute(instance_type="ml.p3.2xlarge", instance_count=1), # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_model_trainer.train()

Para obter uma lista completa de CollectionConfig parâmetros, consulte Debugger CollectionConfig.