本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置调换器内置规则
Amazon SageMaker Debugger 的内置规则分析模型训练期间发出的张量。 SageMakerDebugger 提供Rule
的 API 操作用于监控训练作业进度和错误,从而成功训练模型。例如,这些规则可以检测梯度是太大还是太小,模型是过度拟合还是过度训练,以及训练作业是否不会降低损失函数和改进。要查看可用内置规则的完整列表,请参阅调试器内置规则列表。
在以下主题中,您将学习如何使用 SageMaker Debugger 内置规则。
将调试器内置规则与默认参数设置一起使用
要在估算器中指定 Debugger 内置规则,你需要配置一个列表对象。以下示例代码显示了列出 Debugger 内置规则的基本结构:
from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.
built_in_rule_name_1
()), Rule.sagemaker(rule_configs.built_in_rule_name_2
()), ... Rule.sagemaker(rule_configs.built_in_rule_name_n
()), ... # You can also append more profiler rules in the ProfilerRule.sagemaker(rule_configs.*()) format. ]
有关默认参数值和内置规则描述的更多信息,请参阅调试器内置规则列表。
要查找调 SageMaker 试器 API 参考资料,请参阅sagemaker.debugger.rule_configs
sagemaker.debugger.Rule
例如,要检查模型的整体训练性能和进度,请使用以下内置规则配置构造一个 SageMaker 估计器。
from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.
loss_not_decreasing
()), Rule.sagemaker(rule_configs.overfit
()), Rule.sagemaker(rule_configs.overtraining
()), Rule.sagemaker(rule_configs.stalled_training_rule
()) ]
启动训练作业时,默认情况下,Debugger 每 500 毫秒收集一次系统资源利用率数据,每 500 步收集一次损失和精度值。调试器分析资源利用率以确定您的模型是否存在瓶颈问题。loss_not_decreasing
、overfit
overtraining
、和stalled_training_rule
监视您的模型是否在没有这些训练问题的情况下优化了损失函数。如果规则检测到训练异常,则规则评估状态将更改为IssueFound
。您可以设置自动操作,例如使用Amazon Ev CloudWatch ents通知培训问题和停止培训作业Amazon Lambda。有关更多信息,请参阅对亚马逊 SageMaker 调试器规则采取的行动:
使用带有自定义参数值的调试器内置规则
如果要调整内置规则参数值并自定义 tensor 集合正则表达式,请为base_config
和Rule.sagemaker
类方法配置ProfilerRule.sagemaker
和rule_parameters
参数。对于Rule.sagemaker
类方法,你也可以通过collections_to_save
参数自定义张量集合。有关如何使用该CollectionConfig
课程的说明,请参见使用CollectionConfig API 配置张量集合。
使用以下内置规则配置模板自定义参数值。通过根据需要更改规则参数,您可以调整要触发的规则的敏感度。
-
base_config
参数是你调用内置规则方法的地方。 -
rule_parameters
参数是调整中列出的内置规则的默认键值调试器内置规则列表。 -
该
collections_to_save
参数通过CollectionConfig
API 接受张量配置,这需要name
和parameters
参数。-
要查找可用的张量集合
name
,请参阅调试器内置张量集合。 -
有关可调函数的完整列表
parameters
,请参阅调试器 CollectionConfig API。
-
有关调试器规则类、方法和参数的更多信息,请参阅 Amaz SageMaker on Python SDK
from sagemaker.debugger import Rule, ProfilerRule, rule_configs, CollectionConfig rules=[ Rule.sagemaker( base_config=rule_configs.
built_in_rule_name
(), rule_parameters={ "key
": "value
" }, collections_to_save=[ CollectionConfig( name="tensor_collection_name
", parameters={ "key
": "value
" } ) ] ) ]
为每条规则提供了参数描述和值自定义示例,请参见调试器内置规则列表。
用于配置调试器规则的示例笔记本和代码示例
在以下各节中,提供了如何使用调试器规则监控 SageMaker 训练作业的笔记本和代码示例。
调试器内置规则示例笔记本电脑
以下示例笔记本显示了在使用 Amazon 运行训练任务时如何使用 Debugger 内置规则 SageMaker:
在 SageMaker Studio 中运行示例笔记本时,您可以在 Studi o 实验列表选项卡上找到创建的训练作业试用版。例如,如以下屏幕截图所示,您可以找到并打开当前训练作业的 “描述试用组件” 窗口。在调试器选项卡上,您可以检查调试器规则vanishing_gradient()
和是否在ploss_not_decreasing()
arallel 监视训练会话。有关如何在 Studio 用户界面中查找训练作业试用组件的完整说明,请参阅 SageMaker Studio-查看实验、试用和试用组件。

在 SageMaker 环境中使用 Debugger 内置规则有两种方法:在准备就绪时部署内置规则或根据需要调整其参数。以下主题向您展示如何使用内置规则和示例代码。
调试器内置规则示例代码
以下代码示例显示了如何使用Rule.sagemaker
方法设置 Debugger 内置规则。要指定要运行的内置规则,请使用rules_configs
API 操作调用内置规则。要查找 Debugger 内置规则和默认参数值的完整列表,请参阅调试器内置规则列表。
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 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 内置规则与您的训练作业parallel 运行。训练作业的内置规则容器的最大数量为 20。
有关调试器规则类、方法和参数的更多信息,请参阅 Amaz SageMaker on Python SDK
要查找如何调整调试器规则参数的示例,请参阅以下使用调试器内置规则修改参数部分。
使用调试器内置规则修改参数
以下代码示例显示了用于调整参数的内置规则的结构。在此示例中,每 50 步stalled_training_rule
收集一次训练作业的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 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()
有关使用CreateTrainingJob
API 对调试器内置规则的高级配置,请参阅使用亚马逊配置调试器 SageMaker API。