选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

为规则使用 Debugger 内置操作

聚焦模式
为规则使用 Debugger 内置操作 - 亚马逊 SageMaker AI

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

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

使用 Debugger 内置操作来响应 Debugger 规则 发现的问题。Debugger rule_configs 类提供了工具来配置操作列表,包括自动停止训练作业,以及在 Debugger 规则发现训练问题时使用 Amazon Simple Notification Service (Amazon SNS) 发送通知。以下主题将介绍完成这些任务的步骤。

设置 Amazon SNS,创建 SMDebugRules 主题,并订阅该主题

此部分将向您介绍如何设置 Amazon SNS SMDebugRules 主题、订阅该主题以及如何确认订阅,以便接收来自 Debugger 规则的通知。

创建 SMDebug规则主题
  1. 登录 AWS Management Console 并在 v3/home 上打开亚马逊 SNS 控制台。https://console.aws.amazon.com/sns/

  2. 在左侧导航窗格中,选择主题

  3. Topics(主题)页面上,选择 Create topic(创建主题)。

  4. Create topic(创建主题)页面上,在 Details(详细信息)部分中,执行以下操作:

    1. 对于类型,选择标准作为主题类型。

    2. 名称中,输入 SMDebugRules

  5. 跳过所有其他可选设置,然后选择创建主题。如果您希望了解有关可选设置的更多信息,请参阅创建 Amazon SNS 主题

订阅 SMDebug规则主题

  1. 在 v3/home 上打开亚马逊 SNS 控制台。https://console.aws.amazon.com/sns/

  2. 在左侧导航窗格中,选择订阅

  3. 订阅页面上,选择创建订阅

  4. 创建订阅页上的详细信息部分,执行以下操作:

    1. 对于主题 ARN,选择SMDebug规则主题 ARN。ARN 的格式应为 arn:aws:sns:<region-id>:111122223333:SMDebugRules

    2. 对于协议,选择电子邮件SMS

    3. 对于端点,请输入端点值,例如您用于接收通知的电子邮件地址或电话号码。

      注意

      确保键入正确的电子邮件地址和电话号码。电话号码必须包括 +、国家/地区代码和电话号码,不含特殊字符或空格。例如,电话号码 +1 (222) 333-4444 的格式为 +12223334444

  5. 跳过所有其他可选设置,然后选择创建订阅。如果您想了解有关可选设置的更多信息,请参阅订阅 Amazon SNS 主题

订阅SMDebug规则主题后,您将通过电子邮件或电话收到以下确认消息:

Amazon SNS SMDebug规则主题的订阅确认电子邮件。

有关 Amazon SNS 的更多信息,请参阅《Amazon SNS 开发人员指南》中的移动文本消息 (SMS)电子邮件通知

设置 IAM 角色以附加所需策略

在此步骤中,您将所需的策略添加到 IAM 角色中。

向 IAM 角色添加所需的策略
  1. 登录 AWS Management Console 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/

  2. 在左侧导航窗格中选择策略,然后选择创建策略

  3. 创建策略页面上,请执行以下操作以创建新的 sns-access 策略:

    1. 选择 JSON 选项卡。

    2. 将以下代码中以粗体格式化的 JSON 字符串粘贴到中"Statement",将 12 位数的 AWS 账户 ID 替换为您的 AWS 账户 ID。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sns:Publish", "sns:CreateTopic", "sns:Subscribe" ], "Resource": "arn:aws:sns:*:111122223333:SMDebugRules" } ] }
    3. 在页面底部,选择查看策略

    4. 查看策略页面上,对于名称,输入 sns-access

    5. 在页面底部,选择创建策略

  4. 返回 IAM 控制台,然后在左侧导航窗格中选择角色

  5. 查找您用于 A SageMaker I 模型训练的 IAM 角色并选择该 IAM 角色。

  6. 摘要页面的权限选项卡上,选择附加策略

  7. 搜索 sns-access 策略,选中该策略旁边的复选框,然后选择附加策略

有关为 Amazon SNS 设置 IAM 策略的更多示例,请参阅 Amazon SNS 访问控制示例

使用内置操作配置 Debugger 规则

在上述步骤中成功完成所需的设置后,您可以针对调试规则配置 Debugger 内置操作,如以下示例脚本所示。您可以选择在构建 actions 列表对象时使用哪些内置操作。rule_configs 是一个帮助程序模块,提供了用于配置 Debugger 内置规则和操作的高级工具。以下内置操作可用于 Debugger:

  • rule_configs.StopTraining() – 在 Debugger 规则发现问题时停止训练作业。

  • rule_configs.Email("abc@abc.com") – 在 Debugger 规则发现问题时通过电子邮件发送通知。使用您在设置 SNS 主题订阅时使用的电子邮件地址。

  • rule_configs.SMS("+1234567890") – 在 Debugger 规则发现问题时通过短信发送通知。使用您在设置 SNS 主题订阅时使用的电话号码。

    注意

    确保键入正确的电子邮件地址和电话号码。电话号码必须包括 +、国家/地区代码和电话号码,不含特殊字符或空格。例如,电话号码 +1 (222) 333-4444 的格式为 +12223334444

您可以使用获取内置操作并配置操作列表的 rule_configs.ActionList() 方法进行包装,以此来使用内置操作或操作的子集。

将所有三个内置操作添加到单个规则

如果要将所有三个内置操作分配给单个规则,请在构造估算器时配置 Debugger 内置操作列表。使用以下模板来构造估算器,Debugger 将根据您用于监控训练作业进度的任意规则停止训练作业,并通过电子邮件和文本发送通知。

from sagemaker.debugger import Rule, rule_configs # Configure an action list object for Debugger rules actions = rule_configs.ActionList( rule_configs.StopTraining(), rule_configs.Email("abc@abc.com"), rule_configs.SMS("+1234567890") ) # Configure rules for debugging with the actions parameter rules = [ 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 属性指定不同的字符串),如以下示例脚本模板所示。此示例说明了如何设置 StalledTrainingRule 来采取两种不同的操作:当训练作业停顿 60 秒时发送电子邮件至 abc@abc.com,如果停顿 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 StopTraining action_stop_training = rule_configs.ActionList( rule_configs.StopTraining() ) # Configure an action object for Email action_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 seconds stalled_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 seconds stalled_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)

在训练作业运行时,只要规则发现训练作业中存在问题,Debugger 内置操作就会发送通知电子邮件和文本消息。以下屏幕截图显示了在出现训练作业停顿问题时,训练作业的电子邮件通知示例。

调试器检测到 StalledTraining 问题时发送的电子邮件通知示例。

以下屏幕截图显示了调试器在规则发现 StalledTraining 问题时发送的示例文本通知。

调试器检测到 StalledTraining 问题时发送的示例文本通知。

使用 Debugger 内置操作的注意事项

  • 使用 Debugger 内置操作需要互联网连接。Amazon A SageMaker I 或 Amazon VPC 提供的网络隔离模式不支持此功能。

  • 内置操作不能用于 探查器规则

  • 内置操作不能用于会出现竞价型实例训练中断的训练作业。

  • 在电子邮件或短信通知中,None 会显示在消息的末尾。此文本没有任何意义,因此您可以忽略文本 None

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。