

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用调试器 APIs 运行您自己的自定义规则


以下代码示例展示了如何使用 [Amaz SageMaker on Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)配置自定义规则。此示例假设您在上一步中创建的自定义规则脚本位于 '*path/to/my\$1custom\$1rule.py*'。

```
from sagemaker.debugger import Rule, CollectionConfig

custom_rule = Rule.custom(
    name='MyCustomRule',
    image_uri='759209512951.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rule-evaluator:latest', 
    instance_type='ml.t3.medium',     
    source='path/to/my_custom_rule.py', 
    rule_to_invoke='CustomGradientRule',     
    collections_to_save=[CollectionConfig("gradients")], 
    rule_parameters={"threshold": "20.0"}
)
```

下面的列表解释了 Debugger `Rule.custom` API 参数。
+ `name`（字符串）：指定所需的自定义规则名称。
+ `image_uri`（字符串）：这是容器的映像，该容器中具有了解您的自定义规则的逻辑。它获取您保存在训练作业中的指定张量集合并进行评估。您可以从[URIs 适用于自定义规则评估者的 Amazon SageMaker 调试器图片](debugger-reference.md#debuger-custom-rule-registry-ids)中找到开源 SageMaker AI 规则评估器图像列表。
+ `instance_type`（字符串）：您需要指定一个实例来构建规则 Docker 容器。这将启动一个与训练容器并行的实例。
+ `source`（字符串）：这是自定义规则脚本的本地路径或 Amazon S3 URI。
+ `rule_to_invoke`(str)：这指定了自定义规则脚本中特定的规则类实现。 SageMaker 在规则作业中，AI 一次仅支持对一条规则进行评估。
+ `collections_to_save`（字符串）：此项指定了要保存哪些张量集合用于要运行的规则。
+ `rule_parameters`（字典）：这将接受字典格式的参数输入。您可以调整在自定义规则脚本中配置的参数。

设置`custom_rule`对象后，您可以使用它为任何训练作业构建 A SageMaker I 估算器。对您的训练脚本指定 `entry_point`。您不需要对训练脚本进行任何更改。

```
from sagemaker.tensorflow import TensorFlow

estimator = TensorFlow(
                role=sagemaker.get_execution_role(),
                base_job_name='smdebug-custom-rule-demo-tf-keras',
                entry_point='path/to/your_training_script.py'
                train_instance_type='ml.p2.xlarge'
                ...
                
                # debugger-specific arguments below
                rules = [custom_rule]
)

estimator.fit()
```

有关使用 Debugger 自定义规则的更多变体和高级示例，请参阅以下示例笔记本。
+ [使用 Amazon SageMaker Debugger 自定义规则监控您的训练作业](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-debugger/tensorflow_keras_custom_rule/tf-keras-custom-rule.html)
+ [PyTorch 迭代模型修剪和 ResNet AlexNet](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/pytorch_iterative_model_pruning)
+ [使用调试器规则触发 Amazon CloudWatch 事件，根据训练状态执行操作 TensorFlow](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/tensorflow_action_on_rule)