JSON (AWS CLI) - 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á.

JSON (AWS CLI)

As regras integradas do Amazon SageMaker Debugger podem ser configuradas para um trabalho de treinamento usando os ProfilerRuleConfigurationobjetos DebugHookConfig,, DebugRuleConfigurationProfilerConfig, e por meio da operação da SageMaker API de IA CreateTrainingJob. Você precisa especificar o URI correto da imagem no RuleEvaluatorImage parâmetro, e os exemplos a seguir explicam como configurar as cadeias de caracteres JSON a serem solicitadas. CreateTrainingJob

O código a seguir mostra um modelo JSON completo para executar uma tarefa de treinamento com as configurações exigidas e as configurações do Debugger. Salve o modelo como um arquivo JSON em seu diretório de trabalho e execute o trabalho de treinamento usando a AWS CLI. Por exemplo, salve o código a seguir como debugger-training-job-cli.json.

nota

Certifique-se de usar as imagens de contêiner do Docker corretas. Para encontrar imagens de contêineres de aprendizado AWS profundo, consulte Imagens de contêineres 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.

{ "TrainingJobName": "debugger-aws-cli-test", "RoleArn": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-YYYYMMDDT123456", "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 }, "HyperParameters": { "sagemaker_program": "entry_point/tf-hvd-train.py", "sagemaker_submit_directory": "s3://sagemaker-us-west-2-111122223333/debugger-boto3-profiling-test/source.tar.gz" }, "OutputDataConfig": { "S3OutputPath": "s3://sagemaker-us-west-2-111122223333/debugger-aws-cli-test/output" }, "DebugHookConfig": { "S3OutputPath": "s3://sagemaker-us-west-2-111122223333/debugger-aws-cli-test/debug-output", "CollectionConfigurations": [ { "CollectionName": "losses", "CollectionParameters" : { "train.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://sagemaker-us-west-2-111122223333/debugger-aws-cli-test/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/" } }, "ProfilerRuleConfigurations": [ { "RuleConfigurationName": "ProfilerReport", "RuleEvaluatorImage": "895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest", "RuleParameters": {"rule_to_invoke": "ProfilerReport"} } ], "ResourceConfig": { "InstanceType": "ml.p3.8xlarge", "InstanceCount": 1, "VolumeSizeInGB": 30 }, "StoppingCondition": { "MaxRuntimeInSeconds": 86400 } }

Depois de salvar o arquivo JSON, execute o seguinte comando em seu terminal: (Use ! no início da linha se você usa o caderno Jupyter.)

aws sagemaker create-training-job --cli-input-json file://debugger-training-job-cli.json

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

Os exemplos de código a seguir mostram como configurar uma VanishingGradient regra integrada usando essa SageMaker API.

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" : { "save_interval": "500" } } ] }

Isso fará com que a tarefa de treinamento salve a coleção de tensores, gradients, a cada save_interval de 500 etapas. Para encontrar CollectionName os valores disponíveis, consulte Debugger Built-in Collections na documentação da biblioteca SMDebug cliente. Para encontrar as chaves e valores de CollectionParameters parâmetros disponíveis, consulte a sagemaker.debugger.CollectionConfigclasse na documentação do SDK do SageMaker Python.

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": "503895931360.dkr.ecr.us-east-1.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 da ProfilerConfig API para permitir a coleta de métricas do sistema e da estrutura.

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

Target Step
"ProfilerConfig": { // Optional. Path to an S3 bucket to save profiling outputs "S3OutputPath": "s3://<default-bucket>/<training-job-name>/profiler-output", // 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 }", // For PythonProfilingConfig, // available ProfilerName options: cProfile, Pyinstrument // available cProfileTimer options only when using cProfile: cpu, off_cpu, total_time "PythonProfilingConfig": "{ \"StartStep\": 5, \"NumSteps\": 3, \"ProfilerName\": \"cProfile\", \"cProfileTimer\": \"total_time\" }", // Optional. Local path for profiling outputs "LocalPath": "/opt/ml/output/profiler/" } }
Target Time Duration
"ProfilerConfig": { // Optional. Path to an S3 bucket to save profiling outputs "S3OutputPath": "s3://<default-bucket>/<training-job-name>/profiler-output", // 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 }", // For PythonProfilingConfig, // available ProfilerName options: cProfile, Pyinstrument // available cProfileTimer options only when using cProfile: cpu, off_cpu, total_time "PythonProfilingConfig": "{ \"StartTimeInSecSinceEpoch\": 12345567789, \"DurationInSeconds\": 10, \"ProfilerName\": \"cProfile\", \"cProfileTimer\": \"total_time\" }", // Optional. Local path for profiling outputs "LocalPath": "/opt/ml/output/profiler/" } }

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.

Atualização da configuração de perfil do Depurador com API UpdateTrainingJob

A configuração do perfil do depurador pode ser atualizada enquanto seu trabalho de treinamento está em execução usando a operação da API. UpdateTrainingJob Configure novos ProfilerRuleConfigurationobjetos ProfilerConfige especifique o nome do trabalho de treinamento para o TrainingJobName parâmetro.

{ "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 a configuração de regra personalizada do Depurador à API CreateTrainingJob

Uma regra personalizada pode ser configurada para um trabalho de treinamento usando os DebugRuleConfigurationobjetos DebugHookConfige na operação da CreateTrainingJobAPI. O exemplo de código a seguir mostra como configurar uma ImproperActivation regra personalizada escrita com a biblioteca smdebug usando essa operação de SageMaker API. 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 Imagem do Amazon SageMaker Debugger URIs 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.