

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

# 配置 Debugger 规则的笔记本示例和代码示例
<a name="debugger-built-in-rules-example"></a>

以下各节提供了有关如何使用调试器规则监控 SageMaker 训练作业的笔记本和代码示例。

**Topics**
+ [Debugger 内置规则示例笔记本](#debugger-built-in-rules-notebook-example)
+ [Debugger 内置规则示例代码](#debugger-deploy-built-in-rules)
+ [使用 Debugger 内置规则并修改参数](#debugger-deploy-modified-built-in-rules)

## Debugger 内置规则示例笔记本
<a name="debugger-built-in-rules-notebook-example"></a>

以下示例笔记本展示了在使用 Amazon A SageMaker I 运行训练作业时如何使用调试器内置规则：
+ [使用调 SageMaker 试器内置规则 TensorFlow](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/tensorflow_builtin_rule)
+ [将 SageMaker 调试器内置规则与托管点训练配合使用 MXNet](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mxnet_spot_training)
+ [使用带有参数修改的 SageMaker 调试器内置规则进行实时训练作业分析 XGBoost](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/xgboost_realtime_analysis)

在 SageMaker Studio 中运行示例笔记本时，您可以在 Studi **o 实验列表**选项卡上找到创建的训练作业试用版。例如，如以下屏幕截图所示，您可以找到并打开当前训练作业的**描述试验组件**窗口。在“Debugger”选项卡上，您可以检查 Debugger 规则 `vanishing_gradient()` 和 `loss_not_decreasing()` 是否并行监视训练会话。有关如何在 Studio 用户界面中查找训练作业试用组件的完整说明，请参阅 [SageMaker Studio-查看实验、试用和试用组件](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-tasks.html#studio-tasks-experiments)。

![\[在 Studio 中激活了调试器内置规则的情况下运行训练作业的 SageMaker 图像\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/debugger/debugger-built-in-rule-studio.png)


在 SageMaker AI 环境中使用调试器内置规则的方法有两种：在准备好内置规则时部署内置规则，或者根据需要调整其参数。以下主题向您演示了如何将内置规则与示例代码结合使用。

## Debugger 内置规则示例代码
<a name="debugger-deploy-built-in-rules"></a>

以下代码示例演示如何使用 `Rule.sagemaker` 方法设置 Debugger 内置规则。要指定所要运行的内置规则，请使用 `rules_configs` API 操作调用内置规则。要查找 Debugger 内置规则和默认参数值的完整列表，请参阅 [Debugger 内置规则列表](debugger-built-in-rules.md)。

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import Rule, CollectionConfig, rule_configs

# call built-in rules that you want to use.
built_in_rules=[ 
            Rule.sagemaker(rule_configs.vanishing_gradient())
            Rule.sagemaker(rule_configs.loss_not_decreasing())
]

# construct a SageMaker AI estimator with the Debugger built-in rules
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-built-in-rules-demo',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",

    # debugger-specific arguments below
    rules=built_in_rules
)
sagemaker_estimator.fit()
```

**注意**  
Debugger 内置规则与您的训练作业并行运行。训练作业的内置规则容器的最大数量为 20 个。

有关调试器规则类、方法和参数的更多信息，请参阅 Amaz [on Pyth SageMaker on](https://sagemaker.readthedocs.io/en/stable) SDK 中的[SageMaker 调试器规则类](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html)。

要查找如何调整 Debugger 规则参数的示例，请参阅以下 [使用 Debugger 内置规则并修改参数](#debugger-deploy-modified-built-in-rules) 部分。

## 使用 Debugger 内置规则并修改参数
<a name="debugger-deploy-modified-built-in-rules"></a>

下面的代码示例显示了用于调整参数的内置规则的结构。在此示例中，`stalled_training_rule` 每 50 个步骤收集一次 `losses` 张量，每 10 个步骤评估一次阶段。如果训练过程开始停滞并且在 120 秒内没有收集到任何张量输出，那么 `stalled_training_rule` 停止训练作业。

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import Rule, CollectionConfig, rule_configs

# call the built-in rules and modify the CollectionConfig parameters

base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time()))

built_in_rules_modified=[
    Rule.sagemaker(
        base_config=rule_configs.stalled_training_rule(),
        rule_parameters={
                'threshold': '120',
                'training_job_name_prefix': base_job_name_prefix,
                'stop_training_on_fire' : 'True'
        }
        collections_to_save=[ 
            CollectionConfig(
                name="losses", 
                parameters={
                      "train.save_interval": "50"
                      "eval.save_interval": "10"
                } 
            )
        ]
    )
]

# construct a SageMaker AI estimator with the modified Debugger built-in rule
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name=base_job_name_prefix,
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",

    # debugger-specific arguments below
    rules=built_in_rules_modified
)
sagemaker_estimator.fit()
```