配置 Debugger 规则的笔记本示例和代码示例 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

配置 Debugger 规则的笔记本示例和代码示例

以下几个部分提供了笔记本和代码示例,讲解如何使用 Debugger 规则监控 SageMaker 训练作业。

Debugger 内置规则示例笔记本

以下示例笔记本演示了在使用 Amazon SageMaker AI 运行训练作业时如何使用 Debugger 内置规则:

在 SageMaker Studio 中运行示例笔记本时,您可以在 Studio 实验列表选项卡中找到所创建的训练作业试验。例如,如以下屏幕截图所示,您可以找到并打开当前训练作业的描述试验组件窗口。在“Debugger”选项卡上,您可以检查 Debugger 规则 vanishing_gradient()loss_not_decreasing() 是否并行监视训练会话。有关如何在 Studio UI 中查找训练作业试验组件的完整说明,请参阅 SageMaker Studio – 查看实验、试验和试验组件

正在运行的训练作业的图像,其中在 SageMaker Studio 中激活了 Debugger 内置规则

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

Debugger 内置规则示例代码

以下代码示例演示如何使用 Rule.sagemaker 方法设置 Debugger 内置规则。要指定所要运行的内置规则,请使用 rules_configs API 操作调用内置规则。要查找 Debugger 内置规则和默认参数值的完整列表,请参阅 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 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 个。

有关 Debugger 规则类、方法和参数的更多信息,请参阅 Amazon SageMaker Python SDK 中的 SageMaker Debugger 规则类

要查找如何调整 Debugger 规则参数的示例,请参阅以下 使用 Debugger 内置规则并修改参数 部分。

使用 Debugger 内置规则并修改参数

下面的代码示例显示了用于调整参数的内置规则的结构。在此示例中,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()