Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
JSON (AWS CLI)
Las reglas integradas del depurador de Amazon SageMaker pueden configurarse para un trabajo de entrenamiento mediante los objetos DebugHookConfig, DebugRuleConfiguration, ProfilerConfig y ProfilerRuleConfiguration a través de la operación de la API CreateTrainingJob de SageMaker AI. Debe especificar el URI de imagen correcto en el parámetro RuleEvaluatorImage y, en los siguientes ejemplos, se explica cómo configurar las cadenas JSON para solicitar CreateTrainingJob.
El siguiente código muestra una plantilla JSON completa para ejecutar un trabajo de entrenamiento con los ajustes necesarios y las configuraciones del depurador. Guarde la plantilla como un archivo JSON en su directorio de trabajo y ejecute el trabajo de entrenamiento mediante CLI AWS. Por ejemplo, guarde el siguiente código como debugger-training-job-cli.json.
nota
Asegúrese de utilizar las imágenes del contenedor de Docker correctas. Para encontrar imágenes del contenedor de aprendizaje profundo AWS, consulte las imágenes de los contenedores de aprendizaje profundo disponibles
{ "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} }
Después de guardar el archivo JSON, ejecute el siguiente comando en su terminal. (Utilice ! al principio de la línea si usa un cuaderno de Jupyter).
aws sagemaker create-training-job --cli-input-json file://debugger-training-job-cli.json
Configurar una regla del depurador para depurar los parámetros del modelo
En el siguiente ejemplo de código se muestra cómo configurar una regla VanishingGradient integrada mediante esta API de SageMaker.
Permitir que el depurador recopile los tensores de salida
Especifique la configuración del enlace del depurador de la siguiente manera:
"DebugHookConfig": { "S3OutputPath": "s3://<default-bucket>/<training-job-name>/debug-output", "CollectionConfigurations": [ { "CollectionName": "gradients", "CollectionParameters" : { "save_interval": "500" } } ] }
Esto hará que el trabajo de entrenamiento guarde la colección de tensores, gradients, cada save_interval de 500 pasos. Para encontrar los valores disponibles CollectionName, consulte las colecciones integradas del depuradorCollectionParameters disponibles, consulte la clase sagemaker.debugger.CollectionConfig
Activar las reglas del depurador para depurar los tensores de salida
El siguiente ejemplo de API DebugRuleConfigurations muestra cómo ejecutar la regla VanishingGradientintegrada en la colección gradients guardada.
"DebugRuleConfigurations": [ { "RuleConfigurationName": "VanishingGradient", "RuleEvaluatorImage": "503895931360.dkr.ecr.us-east-1.amazonaws.com/sagemaker-debugger-rules:latest", "RuleParameters": { "rule_to_invoke": "VanishingGradient", "threshold": "20.0" } } ]
Con una configuración como la de este ejemplo, el depurador inicia un trabajo de evaluación de reglas para el trabajo de entrenamiento mediante la regla gradients de la colección de tensores VanishingGradient. Para ver una lista completa de las imágenes de Docker disponibles para usar las reglas del depurador, consulte Imágenes de Docker para reglas del depurador. Para encontrar los pares clave-valor de RuleParameters, consulte Lista de reglas integradas del depurador.
Configurar una regla integrada en el depurador para perfilar las métricas del sistema y del marco
El siguiente código de ejemplo muestra cómo especificar la operación de la API ProfilerConfig para permitir la recopilación de métricas del sistema y del marco.
Habilitar la creación de perfiles del depurador para recopilar métricas del sistema y del marco
Habilitar las reglas del depurador para perfilar las métricas
En el siguiente ejemplo de código se muestra cómo configurar la regla 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 ver una lista completa de las imágenes de Docker disponibles para usar las reglas del depurador, consulte Imágenes de Docker para reglas del depurador. Para encontrar los pares clave-valor de RuleParameters, consulte Lista de reglas integradas del depurador.
Actualización de la configuración de creación de perfiles del depurador mediante la API de UpdateTrainingJob
La configuración de los perfiles del depurador puede actualizarse mientras se ejecuta el trabajo de entrenamiento mediante la operación de la API UpdateTrainingJob. Configure los nuevos objetos ProfilerConfig y ProfilerRuleConfiguration y especifique el nombre del trabajo de entrenamiento en el 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" }
Agregación de la configuración de reglas personalizadas del depurador a la API de CreateTrainingJob
Es posible configurar una regla personalizada para un trabajo de entrenamiento mediante los objetos DebugHookConfig y DebugRuleConfiguration de la operación de la API CreateTrainingJob. El siguiente ejemplo de código muestra cómo configurar una regla ImproperActivation personalizada escrita con la biblioteca smdebug mediante esta API de SageMaker. En este ejemplo se supone que ha escrito la regla personalizada en el archivo custom_rules.py y la ha cargado en un bucket de Amazon S3. El ejemplo proporciona imágenes de Docker prediseñadas que puede usar para ejecutar sus reglas personalizadas. Se enumeran en URI de imagen del depurador de Amazon SageMaker para evaluadores de reglas personalizadas. Especifique la dirección URL del registro para la imagen de Docker prediseñada en el 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 ver una lista completa de las imágenes de Docker disponibles para usar las reglas del depurador, consulte Imágenes de Docker para reglas del depurador. Para encontrar los pares clave-valor de RuleParameters, consulte Lista de reglas integradas del depurador.