本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用偵錯工具內建動作來回應 偵錯工具規則 找到的問題。偵錯工具 rule_configs
類別提供設定動作清單的工具,包含在偵錯工具規則發現訓練問題時,自動停止訓練任務及使用 Amazon Simple Notification Service (Amazon SNS) 傳送通知。下列主題會逐步引導您完成這些任務。
設定 Amazon SNS、建立SMDebugRules
主題,以及訂閱主題
本節將逐步引導您如何設定 Amazon SNS SMDebugRules
主題、訂閱並確認訂閱以獲得來自偵錯工具規則的通知。
注意
關於 Amazon SNS 的計費,如需更多相關資訊,請參閱 Amazon SNS 定價
建立一個 SMDebugEvents 主題
登入 AWS Management Console ,並在 https://console.aws.amazon.com/sns/v3/home
:// 開啟 Amazon SNS 主控台。 -
在左側導覽窗格中,選擇主題。
-
在主題頁面上,選擇建立主題。
-
在建立主題頁面上,於詳細資訊區段中,執行以下作業:
-
在類型中,選擇標準做為主題類型。
-
在名稱中,輸入
SMDebugRules
。
-
-
略過所有其他選項設定,然後選擇建立主題。如果您想進一步了解可選設定,請參閱建立一個 Amazon SNS 主題。
訂閱 SMDebugRules 主題
在 https://console.aws.amazon.com/sns/v3/home
開啟 Amazon SNS 主控台。 -
在左導覽窗格中,選擇訂閱。
-
在訂閱頁面,選擇建立訂閱。
-
在建立訂閱頁面上,於詳細資訊區段中,執行以下作業:
-
在主題 ARN,請選擇 SMDebugRules 主題 ARN。ARN 應為
arn:aws:sns:<region-id>:111122223333:SMDebugRules
格式。 -
針對通訊協定,選擇電子郵件 或簡訊。
-
在端點中,輸入您要接收通知的端點值,例如電子郵件地址或電話號碼。
注意
請務必輸入正確的電子郵件地址和電話號碼。電話號碼必須包含
+
、國家/地區代碼和電話號碼,不含特殊字元或空格。例如,電話號碼 +1 (222) 333-4444 被格式化為+12223334444
。
-
-
略過所有其他選項設定,然後選擇建立訂閱。如果您想進一步了解可選設定,請參閱訂閱 Amazon SNS 主題。
訂閱 SMDebugRules 主題後,您會在電子郵件或電話中收到下列確認訊息:

關於 Amazon SNS,如需更多相關資訊,請參閱 Amazon SNS 開發人員指南內的行動電話簡訊 (SMS)及電子郵件通知章節。
設定您的 IAM 角色以連接必要的政策
您在此步驟中,新增必要政策至 IAM 角色。
將必要政策新增至您的 IAM 角色
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在導覽窗格中,選擇政策,並選擇建立政策。
-
在建立政策頁面上,執行下列動作以建立新的 sns-access 存取政策:
-
選擇 JSON 標籤。
-
將下列程式碼中以粗體格式格式的 JSON 字串貼到 中
"Statement"
,以您的帳戶 ID 取代 12 位數 AWS AWS 的帳戶 ID。{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sns:Publish", "sns:CreateTopic", "sns:Subscribe" ], "Resource": "arn:aws:sns:*:
111122223333
:SMDebugRules" } ] } -
在頁面底部選擇檢閱政策。
-
在檢閱政策頁面的名稱中,輸入
sns-access
。 -
請在頁面底部選擇建立政策。
-
-
返回 IAM 主控台,然後在左側導覽窗格中選擇角色。
-
查詢您用於 SageMaker AI 模型訓練的 IAM 角色,然後選擇該 IAM 角色。
-
在許可索引標籤的總結頁面上,選擇連接政策。
-
搜尋 sns-access 存取政策,選取該政策旁的核取方塊,然後選擇連接政策。
如需為 Amazon SNS 設定 IAM 政策的更多範例,請參閱 Amazon SNS 存取控制的範例。
使用內建動作設定偵錯工具規則
在前面的步驟中成功完成必要設定之後,您可以為偵錯規則設定偵錯工具內建動作,如下列範例指令碼所示。您可以選擇建置 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 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)
訓練工作正在執行時,當規則發現訓練工作的問題時,偵錯工具內建動作就會隨時傳送通知電子郵件和簡訊。下列螢幕擷取畫面顯示,當訓練工作出現停頓訓練工作問題時,電子郵件通知的範例。

下列螢幕擷取畫面顯示當規則發現 StalledTraining 問題時,偵錯工具會傳送的簡訊通知範例。

使用 Debugger 內建動作的考量事項
-
若要使用偵錯工具內建動作,網際網路連接為必要項目。Amazon SageMaker AI 或 Amazon VPC 提供的網路隔離模式中不支援此功能。
-
內建動作無法用於 剖析工具規則。
-
內建動作無法用於具有 Spot 訓練中斷的訓練工作。
-
在電子郵件或簡訊通知中,
None
會出現在訊息結尾。這沒有任何意義,所以您可以忽略文字None
。