SDK para Python (Boto3) - 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á.

SDK para Python (Boto3)

As regras integradas do Amazon SageMaker Debugger podem ser configuradas para uma tarefa de treinamento usando a função create_training_job() do cliente AWS Boto3 do SageMaker AI. Você precisa especificar o URI da imagem correto no parâmetro RuleEvaluatorImage e os exemplos a seguir demonstram como configurar o corpo da solicitação para a função create_training_job().

O código a seguir mostra um exemplo completo de como configurar o Debugger para o corpo da solicitação create_training_job() e iniciar uma tarefa de treinamento em us-west-2, supondo que um script de treinamento entry_point/train.py é preparado usando o TensorFlow. Para encontrar cadernos de exemplo ponta a ponta, consulte Criação de perfil da tarefa de treinamento de vários nós para várias GPUs do TensorFlow com o Amazon SageMaker Debugger (Boto3).

nota

Certifique-se de usar as imagens de contêiner do Docker corretas. Para encontrar imagens de contêiner de aprendizado profundo disponíveis de AWS, consulte Imagens de contêiner de aprendizado profundo disponíveis. Para encontrar uma lista completa das imagens do Docker disponíveis para usar as regras do Debugger, consulte Imagens do Docker para regras do Depurador.

import sagemaker, boto3 import datetime, tarfile # Start setting up a SageMaker session and a Boto3 SageMaker client session = sagemaker.Session() region = session.boto_region_name bucket = session.default_bucket() # Upload a training script to a default Amazon S3 bucket of the current SageMaker session source = 'source.tar.gz' project = 'debugger-boto3-test' tar = tarfile.open(source, 'w:gz') tar.add ('entry_point/train.py') # Specify the directory and name of your training script tar.close() s3 = boto3.client('s3') s3.upload_file(source, bucket, project+'/'+source) # Set up a Boto3 session client for SageMaker sm = boto3.Session(region_name=region).client("sagemaker") # Start a training job sm.create_training_job( TrainingJobName='debugger-boto3-'+datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'), HyperParameters={ 'sagemaker_submit_directory': 's3://'+bucket+'/'+project+'/'+source, 'sagemaker_program': '/entry_point/train.py' # training scrip file location and name under the sagemaker_submit_directory }, AlgorithmSpecification={ # Specify a training Docker container image URI (Deep Learning Container or your own training container) to TrainingImage. 'TrainingImage': '763104351884.dkr.ecr.us-west-2.amazonaws.com/tensorflow-training:2.4.1-gpu-py37-cu110-ubuntu18.04', 'TrainingInputMode': 'File', 'EnableSageMakerMetricsTimeSeries': False }, RoleArn='arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20201014T161125', OutputDataConfig={'S3OutputPath': 's3://'+bucket+'/'+project+'/output'}, ResourceConfig={ 'InstanceType': 'ml.p3.8xlarge', 'InstanceCount': 1, 'VolumeSizeInGB': 30 }, StoppingCondition={ 'MaxRuntimeInSeconds': 86400 }, DebugHookConfig={ 'S3OutputPath': 's3://'+bucket+'/'+project+'/debug-output', 'CollectionConfigurations': [ { 'CollectionName': 'losses', 'CollectionParameters' : { 'train.save_interval': '500', 'eval.save_interval': '50' } } ] }, DebugRuleConfigurations=[ { 'RuleConfigurationName': 'LossNotDecreasing', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': {'rule_to_invoke': 'LossNotDecreasing'} } ], ProfilerConfig={ 'S3OutputPath': 's3://'+bucket+'/'+project+'/profiler-output', 'ProfilingIntervalInMilliseconds': 500, 'ProfilingParameters': { 'DataloaderProfilingConfig': '{"StartStep": 5, "NumSteps": 3, "MetricsRegex": ".*", }', 'DetailedProfilingConfig': '{"StartStep": 5, "NumSteps": 3, }', 'PythonProfilingConfig': '{"StartStep": 5, "NumSteps": 3, "ProfilerName": "cprofile", "cProfileTimer": "total_time"}', 'LocalPath': '/opt/ml/output/profiler/' # Optional. Local path for profiling outputs } }, ProfilerRuleConfigurations=[ { 'RuleConfigurationName': 'ProfilerReport', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': {'rule_to_invoke': 'ProfilerReport'} } ] )

Para configurar uma regra do Debugger para depurar os parâmetros do modelo

O exemplo de código a seguir mostra como configurar uma regra integrada VanishingGradient usando esta API do SageMaker.

Para habilitar o Debugger para coletar tensores de saída

Especifique a configuração do hook do Debugger da seguinte forma:

DebugHookConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/debug-output', 'CollectionConfigurations': [ { 'CollectionName': 'gradients', 'CollectionParameters' : { 'train.save_interval': '500', 'eval.save_interval': '50' } } ] }

Isso fará com que a tarefa de treinamento salve uma coleção, gradients, a cada save_interval de 500 etapas. Para encontrar os valores de CollectionName disponíveis, consulte coleções integradas do Debugger na documentação da biblioteca de clientes do SMDebug. Para encontrar as chaves e valores de parâmetros CollectionParameters disponíveis, consulte a classe sagemaker.debugger.CollectionConfig na documentação do SageMaker Python SDK.

Para habilitar as regras do Debugger para depurar os tensores de saída

O exemplo de API DebugRuleConfigurations a seguir mostra como executar a regra integrada doVanishingGradient na coleção gradients salva.

DebugRuleConfigurations=[ { 'RuleConfigurationName': 'VanishingGradient', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': { 'rule_to_invoke': 'VanishingGradient', 'threshold': '20.0' } } ]

Com uma configuração como a desse exemplo, o Debugger inicia uma tarefa de avaliação de regra para a tarefa de treinamento usando a regra VanishingGradient na coleção do tensor de gradients. Para encontrar uma lista completa das imagens do Docker disponíveis para usar as regras do Debugger, consulte Imagens do Docker para regras do Depurador. Para encontrar os pares de valores-chave para RuleParameters, consulte Lista de regras integradas do Depurador.

Para configurar a regra integrada do Debugger para criar perfis do sistema e métricas do framework

O código de exemplo a seguir mostra como especificar a operação de API ProfilerConfig para habilitar a coleta de métricas do sistema e do framework.

Para habilitar a criação de perfil do Debugger para coletar métricas do sistema e da estrutura

Target Step
ProfilerConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/profiler-output', # Optional. Path to an S3 bucket to save profiling outputs # Available values for ProfilingIntervalInMilliseconds: 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000 (1 minute) milliseconds. 'ProfilingIntervalInMilliseconds': 500, 'ProfilingParameters': { 'DataloaderProfilingConfig': '{ "StartStep": 5, "NumSteps": 3, "MetricsRegex": ".*" }', 'DetailedProfilingConfig': '{ "StartStep": 5, "NumSteps": 3 }', 'PythonProfilingConfig': '{ "StartStep": 5, "NumSteps": 3, "ProfilerName": "cprofile", # Available options: cprofile, pyinstrument "cProfileTimer": "total_time" # Include only when using cprofile. Available options: cpu, off_cpu, total_time }', 'LocalPath': '/opt/ml/output/profiler/' # Optional. Local path for profiling outputs } }
Target Time Duration
ProfilerConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/profiler-output', # Optional. Path to an S3 bucket to save profiling outputs # Available values for ProfilingIntervalInMilliseconds: 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000 (1 minute) milliseconds. 'ProfilingIntervalInMilliseconds': 500, 'ProfilingParameters': { 'DataloaderProfilingConfig': '{ "StartTimeInSecSinceEpoch": 12345567789, "DurationInSeconds": 10, "MetricsRegex": ".*" }', 'DetailedProfilingConfig': '{ "StartTimeInSecSinceEpoch": 12345567789, "DurationInSeconds": 10 }', 'PythonProfilingConfig': '{ "StartTimeInSecSinceEpoch": 12345567789, "DurationInSeconds": 10, "ProfilerName": "cprofile", # Available options: cprofile, pyinstrument "cProfileTimer": "total_time" # Include only when using cprofile. Available options: cpu, off_cpu, total_time }', 'LocalPath': '/opt/ml/output/profiler/' # Optional. Local path for profiling outputs } }

Para habilitar as regras do Debugger para criar perfil das métricas

O código de exemplo a seguir mostra como configurar a regra ProfilerReport.

ProfilerRuleConfigurations=[ { 'RuleConfigurationName': 'ProfilerReport', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': { 'rule_to_invoke': 'ProfilerReport', 'CPUBottleneck_cpu_threshold': '90', 'IOBottleneck_threshold': '90' } } ]

Para encontrar uma lista completa das imagens do Docker disponíveis para usar as regras do Debugger, consulte Imagens do Docker para regras do Depurador. Para encontrar os pares de valores-chave para RuleParameters, consulte Lista de regras integradas do Depurador.

Atualizar a configuração de perfil do Debugger usando a operação de API UpdateTrainingJob

A configuração de perfil do Debugger pode ser atualizada enquanto sua tarefa de treinamento está em execução usando a função update_training_job() do cliente AWS Boto3 do SageMaker AI. Configure os novos objetos ProfilerConfig e ProfileRuleConfiguration e especifique o nome da tarefa de treinamento para o parâmetro TrainingJobName.

ProfilerConfig={ 'DisableProfiler': boolean, 'ProfilingIntervalInMilliseconds': number, 'ProfilingParameters': { 'string' : 'string' } }, ProfilerRuleConfigurations=[ { 'RuleConfigurationName': 'string', 'RuleEvaluatorImage': 'string', 'RuleParameters': { 'string' : 'string' } } ], TrainingJobName='your-training-job-name-YYYY-MM-DD-HH-MM-SS-SSS'

Adicione configuração de regra personalizada do Debugger à operação de API CreateTrainingJob

Uma regra personalizada pode ser configurada para uma tarefa de treinamento usando os objetos DebugHookConfig e DebugRuleConfiguration usando a função create_training_job() do cliente AWS Boto3 do SageMaker AI. O exemplo de código a seguir mostra como configurar uma regra ImproperActivation personalizada escrita com a biblioteca smdebug usando essa operação de API do SageMaker. Este exemplo pressupõe que você tenha escrito a regra personalizada no arquivo custom_rules.py e o tenha carregado em um bucket do Amazon S3. O exemplo fornece imagens pré-criadas do Docker que podem ser usadas para executar as regras personalizadas. Elas estão listadas em URLs de registro do Amazon SageMaker Debugger para avaliadores de regras personalizadas.. Você especifica o endereço de registro de URL para a imagem pré-criada do Docker no parâmetro RuleEvaluatorImage.

DebugHookConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/debug-output', 'CollectionConfigurations': [ { 'CollectionName': 'relu_activations', 'CollectionParameters': { 'include_regex': 'relu', 'save_interval': '500', 'end_step': '5000' } } ] }, DebugRulesConfigurations=[ { 'RuleConfigurationName': 'improper_activation_job', 'RuleEvaluatorImage': '552407032007.dkr.ecr.ap-south-1.amazonaws.com/sagemaker-debugger-rule-evaluator:latest', 'InstanceType': 'ml.c4.xlarge', 'VolumeSizeInGB': 400, 'RuleParameters': { 'source_s3_uri': 's3://bucket/custom_rules.py', 'rule_to_invoke': 'ImproperActivation', 'collection_names': 'relu_activations' } } ]

Para encontrar uma lista completa das imagens do Docker disponíveis para usar as regras do Debugger, consulte Imagens do Docker para regras do Depurador. Para encontrar os pares de valores-chave para RuleParameters, consulte Lista de regras integradas do Depurador.