本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
调试器内置的规则操作
使用调试器内置操作来响应调试程序规则. 调试程序rule_configs类提供了配置操作列表的工具,包括在调试器规则发现培训问题时自动停止培训作业和使用 Amazon Simple Notification Service (Amazon SNS) 发送通知。
第 1 步:设置 Amazon SNS、创建 SMDebug 规则主题并订阅主题
本部分将指导您完成如何设置 Amazon SNSSMDebugRules主题,订阅它,然后确认订阅以接收来自调试器规则的通知。
有关 Amazon SNS 账单的更多信息,请参阅Amazon SNS 定价
创建 SMDebugrules 主题
访问 https://console.aws.amazon.com/sns/v3/home
,登录 Amazon Web Services Management Console 并打开 Amazon SNS 控制台。 -
在左侧导航窗格中,选择主题。
-
在 Topics(主题)页面上,选择 Create topic(创建主题)。
-
在 Create topic(创建主题)页面上,在 Details(详细信息)部分中,执行以下操作:
-
适用于类型,选择标准对于主题类型。
-
在 Name (名称) 中,输入
SMDebugRules。
-
-
跳过所有其他可选设置然后选择创建主题. 如果要了解有关可选设置的更多信息,请参阅创建 Amazon SNS 主题.
要订阅 SMDebug 规则主题
通过以下网址打开 Amazon SNS 控制台:https://console.aws.amazon.com/sns/v3/home
。 -
在左侧导航窗格中,选择订阅。
-
在订阅页面上,选择创建订阅。
-
在创建订阅页上,在详细信息部分中,执行以下操作:
-
适用于主题 ARN,选择SMdebuGrules主题 ARN。ARN 应采用
arn:aws:sns:<region-id>:111122223333:SMDebugRules. -
对于 Protocol (协议),选择 Email (电子邮件) 或 SMS。
-
适用于端点中,输入终端节点值,例如要接收通知的电子邮件地址或电话号码。
注意 确保键入正确的电子邮件地址和电话号码。电话号码必须包括
+、国家/地区代码和电话号码,没有特殊字符或空格。例如,电话号码 +1 (222) 333-4444 的格式为+12223334444.
-
-
跳过所有其他可选设置然后选择创建订阅. 如果要了解有关可选设置的更多信息,请参阅订阅 Amazon SNS 主题.
在您订阅SMdebuGrules主题,您通过电子邮件或电话收到以下确认消息:
有关 Amazon SNS 的更多信息,请参阅移动文本消息 (SMS)和电子邮件通知中的Amazon SNS 开发人员指南.
第 2 步:设置 IAM 角色以附加必需的策略
在此步骤中,您将所需策略添加到 IAM 角色。
将所需策略添加到 IAM 角色
登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在左侧导航窗格中,选择策略,然后选择创建策略.
-
在存储库的创建策略执行以下操作以创建新的 SNS 访问策略:
-
选择 JSON 选项卡。
-
将以粗体格式化的 JSON 字符串粘贴到以下代码中的
"Statement",取代 12 位数Amazon您的账户 IDAmazon账户 ID。{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sns:Publish", "sns:CreateTopic", "sns:Subscribe" ], "Resource": "arn:aws:sns:*:111122223333:SMDebugRules" } ] } -
在页面底部,选择查看策略.
-
在 Create policy(创建策略)页面上,对于 Name(名称),输入
sns-access。 -
在页面底部,选择创建策略.
-
-
返回 IAM 控制台,然后选择角色在左侧导航窗格中。
-
查找用于 SageMaker 模型培训的 IAM 角色,然后选择该 IAM 角色。
-
在存储库的Permissions (权限)的选项卡摘要页面上,选择附加策略.
-
搜索sns-Access选择策略旁边的复选框,然后选择附加策略.
有关为 Amazon SNS 设置 IAM 策略的更多示例,请参阅用于 Amazon SNS 访问控制的示例案例.
第 3 步:使用内置操作配置调试器规则
在上述步骤中成功完成所需的设置后,您可以配置调试规则的调试器内置操作,如以下示例脚本所示。你可以选择在构建时使用哪些内置操作actions列出对象。这些区域有:rule_configs是一个帮助模块,它提供了用于配置调试器内置规则和操作的高级工具。以下内置操作适用于调试器:
-
rule_configs.StopTraining()— 当调试器规则发现问题时停止训练作业。 -
rule_configs.Email("— 当调试器规则发现问题时,通过电子邮件发送通知。使用您在设置 SNS 主题订阅时使用的电子邮件地址。abc@abc.com") -
rule_configs.SMS("— 当调试器规则发现问题时,通过短信发送通知。使用设置 SNS 主题订阅时使用的电话号码。+1234567890")注意 确保键入正确的电子邮件地址和电话号码。电话号码必须包括
+、国家/地区代码和电话号码,没有特殊字符或空格。例如,电话号码 +1 (222) 333-4444 的格式为+12223334444.
您可以使用所有内置动作或动作子集,方法是使用rule_configs.ActionList()方法,它采取内置操作并配置操作列表。
将所有三个内置操作添加到单个规则
如果要将所有三个内置操作分配给一个规则,请在构建估计器时配置调试器内置操作列表。使用以下模板构建估计器,调试器将停止训练作业,并通过电子邮件和文本发送通知,告知用于监控训练作业进度的任何规则。
from sagemaker.debugger import Rule, rule_configs # Configure an action list object for Debugger rulesactions= rule_configs.ActionList(rule_configs.StopTraining(),rule_configs.Email("abc@abc.com"),rule_configs.SMS("+1234567890")) # Configure rules for debugging with the actions parameterrules= [ Rule.sagemaker( base_config=rule_configs.built_in_rule(), # Required rule_parameters={"paramter_key":value}, # Optional actions=actions) ] estimator = Estimator(...rules =rules) estimator.fit(wait=False)
创建多个内置操作对象以将不同的操作分配给单个规则
如果要分配以单个规则的不同阈值触发的内置操作,则可以创建多个内置操作对象,如以下脚本所示。要通过运行相同的规则避免冲突错误,必须提交不同的规则作业名称(为规则指定不同的字符串)name属性),如以下示例脚本模板所示。此示例演示如何设置已停止的训练规则要采取两种不同的操作:发送电子邮件至abc@abc.com当训练作业停顿 60 秒时,如果停顿 120 秒,则停止训练作业。
from sagemaker.debugger import Rule, rule_configs import time base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time())) # Configure an action object for StopTrainingaction_stop_training= rule_configs.ActionList( rule_configs.StopTraining() ) # Configure an action object for Emailaction_email= rule_configs.ActionList( rule_configs.Email("abc@abc.com") ) # Configure a rule with the Email built-in action to trigger if a training job stalls for 60 secondsstalled_training_job_rule_email= Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ "threshold": "60", "training_job_name_prefix": base_job_name_prefix }, actions=action_email) stalled_training_job_rule_text.name="StalledTrainingJobRuleEmail" # Configure a rule with the StopTraining built-in action to trigger if a training job stalls for 120 secondsstalled_training_job_rule= Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ "threshold": "120", "training_job_name_prefix": base_job_name_prefix }, actions=action_stop_training) stalled_training_job_rule.name="StalledTrainingJobRuleStopTraining" estimator = Estimator(...rules = [stalled_training_job_rule_email,stalled_training_job_rule] ) estimator.fit(wait=False)
在训练作业运行期间,每当规则发现训练作业存在问题时,调试器内置操作就会发送通知电子邮件和短信。以下屏幕截图显示了培训工作存在停滞问题的培训作业的电子邮件通知示例。
以下屏幕截图显示了在规则发现 StalledTrainING 问题时调试器发送的示例文本通知。
使用调试器内置操作的注意事项
-
要使用调试器内置操作,需要互联网连接。Amazon SageMaker 或 Amazon VPC 提供的网络隔离模式不支持此功能。
-
内置操作不能用于调试程序 ProfilerRule.
-
内置操作不能用于具有现场培训中断的培训作业。
-
在电子邮件或短信通知中,
None出现在消息的末尾。这没有任何意义,所以你可以忽略文字None.