

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Kit SDK for Python (Boto3)
<a name="debugger-built-in-rules-api.Boto3"></a>

Les règles intégrées d'Amazon SageMaker Debugger peuvent être configurées pour une tâche de formation à l'aide de la [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_training_job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_training_job)fonction du client AWS Boto3 AI SageMaker . Vous devez spécifier l'URI d'image approprié dans le paramètre `RuleEvaluatorImage`. Les exemples suivants vous expliquent comment configurer le corps de requête pour la fonction [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_training_job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_training_job).

Le code suivant montre un exemple complet de configuration du débogueur pour le corps de la `create_training_job()` requête et de démarrage d'une tâche de formation dans`us-west-2`, en supposant qu'un script de formation `entry_point/train.py` soit préparé à l'aide de. TensorFlow Pour trouver un end-to-end exemple de bloc-notes, consultez [Profiling TensorFlow Multi GPU Multi Node Training Job with Amazon SageMaker Debugger (Boto3](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-debugger/tensorflow_profiling/tf-resnet-profiling-multi-gpu-multi-node-boto3.html)).

**Note**  
Assurez-vous d'utiliser les images de conteneur Docker appropriées. Pour trouver des images de AWS Deep Learning Containers [disponibles, consultez la section Images de Deep Learning Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) disponibles. Pour obtenir une liste complète des images Docker disponibles pour l'utilisation des règles Debugger, consultez [Images Docker pour les règles Debugger](debugger-reference.md#debugger-docker-images-rules).

```
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'}
        }
    ]
)
```

## Pour configurer une règle Debugger pour le débogage des paramètres de modèle
<a name="debugger-built-in-rules-api-debug.Boto3"></a>

Les exemples de code suivants montrent comment configurer une `VanishingGradient` règle intégrée à l'aide de cette SageMaker API. 

**Pour activer Debugger afin de collecter les tenseurs de sortie**

Spécifiez la configuration du hook Debugger comme suit :

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

Ainsi, la tâche d'entraînement enregistre une collection de tenseurs, `gradients`, chaque `save_interval` sur 500 étapes. Pour trouver les `CollectionName` valeurs disponibles, consultez la section [Collections intégrées au Debugger](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#built-in-collections) dans la documentation de la *bibliothèque SMDebug cliente*. Pour trouver les clés et les valeurs de `CollectionParameters` paramètres disponibles, consultez la [https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.CollectionConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.CollectionConfig)classe dans la *documentation du SDK SageMaker Python*.

**Pour activer les règles Debugger pour le débogage des tenseurs de sortie**

L'exemple d'API `DebugRuleConfigurations` suivant montre comment exécuter la règle `VanishingGradient` intégrée sur la collection `gradients` enregistrée.

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

Avec une configuration telle que celle de cet exemple, Debugger lance une tâche d'évaluation des règles pour votre tâche d'entraînement à l'aide de la règle `VanishingGradient` sur la collection de tenseurs `gradients`. Pour obtenir une liste complète des images Docker disponibles pour l'utilisation des règles Debugger, consultez [Images Docker pour les règles Debugger](debugger-reference.md#debugger-docker-images-rules). Pour voir les paires clé-valeur pour `RuleParameters`, consultez [Liste des règles intégrées à Debugger](debugger-built-in-rules.md).

## Pour configurer une règle intégrée Debugger pour le profilage des métriques système et de cadre
<a name="debugger-built-in-rules-api-profile.Boto3"></a>

L'exemple de code suivant montre comment spécifier le fonctionnement de l' ProfilerConfig API pour permettre la collecte des métriques du système et du framework.

**Pour activer le profilage Debugger pour collecter les métriques du système et du framework**

------
#### [ 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
    }
}
```

------

**Pour activer les règles Debugger pour le profilage des métriques**

L'exemple de code suivant montre comment configurer la règle `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'
        }
    }
]
```

Pour obtenir une liste complète des images Docker disponibles pour l'utilisation des règles Debugger, consultez [Images Docker pour les règles Debugger](debugger-reference.md#debugger-docker-images-rules). Pour voir les paires clé-valeur pour `RuleParameters`, consultez [Liste des règles intégrées à Debugger](debugger-built-in-rules.md).

## Mettre à jour la configuration du profilage Debugger à l'aide de l'opération d'API `UpdateTrainingJob`
<a name="debugger-updatetrainingjob-api.Boto3"></a>

La configuration du profilage du débogueur peut être mise à jour pendant que votre tâche de formation est en cours d'exécution à l'aide de la [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.update_training_job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.update_training_job)fonction du client AWS Boto3 AI SageMaker . Configurez [ProfilerConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProfilerConfig.html)les nouveaux [ProfilerRuleConfiguration](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProfilerRuleConfiguration.html)objets et spécifiez le nom de la tâche d'entraînement dans le `TrainingJobName` paramètre.

```
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'
```

## Ajouter la configuration des règles personnalisées du débogueur à l'opération d'API CreateTrainingJob
<a name="debugger-custom-rules-api.Boto3"></a>

Une règle personnalisée peut être configurée pour un travail de formation à l'aide [ DebugRuleConfiguration](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DebugRuleConfiguration.html)des objets [ DebugHookConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DebugHookConfig.html)et à l'aide de la fonction du [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_training_job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_training_job)client AWS Boto3 SageMaker AI. L'exemple de code suivant montre comment configurer une `ImproperActivation` règle personnalisée écrite avec la bibliothèque *smdebug* à l'aide de cette opération d' SageMaker API. Cet exemple suppose que vous avez écrit la règle personnalisée dans le fichier *custom\$1rules.py* et que vous l'avez chargée dans un compartiment Amazon S3. L'exemple fournit des images Docker préconçues que vous pouvez utiliser pour exécuter vos règles personnalisées. Celles-ci sont énumérées sur la page [Image Amazon SageMaker Debugger pour les évaluateurs URIs de règles personnalisés](debugger-reference.md#debuger-custom-rule-registry-ids). Vous spécifiez l'adresse de registre d'URL pour l'image Docker préconçue dans le paramètre `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'
        }
    }
]
```

Pour obtenir une liste complète des images Docker disponibles pour l'utilisation des règles Debugger, consultez [Images Docker pour les règles Debugger](debugger-reference.md#debugger-docker-images-rules). Pour voir les paires clé-valeur pour `RuleParameters`, consultez [Liste des règles intégrées à Debugger](debugger-built-in-rules.md).