偵錯工具為規則內建的動作 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

偵錯工具為規則內建的動作

使用偵錯工具內建動作來回應 偵錯工具規則 找到的問題。偵錯工具 rule_configs 類別提供設定動作清單的工具,包含在偵錯工具規則發現訓練問題時,自動停止訓練任務及使用 Amazon Simple Notification Service (Amazon SNS) 傳送通知。

步驟 1:設定 Amazon SNS,建立一個 SMDebugRules 主題,並訂閱該主題

本節將逐步引導您如何設定 Amazon SNS SMDebugRules 主題、訂閱並確認訂閱以獲得來自偵錯工具規則的通知。

注意

關於 Amazon SNS 的計費,如需更多相關資訊,請參閱 Amazon SNS 定價Amazon SNS 常見問答集

建立一個 SMDebugEvents 主題
  1. 登入 AWS Management Console,並在 https://console.aws.amazon.com/sns/v3/home 開啟 Amazon SNS 主控台。

  2. 在左側導覽窗格中,選擇 Topics (主題)。

  3. Topics (主題) 頁面上,選擇 Create topic (建立主題)。

  4. Create topic (建立主題) 頁面上,於 Details (詳細資訊) 區段中,執行以下作業:

    1. Type(類型)中,選擇 Standard(標準)做為主題類型。

    2. Name (名稱) 中,輸入 SMDebugRules

  5. 略過所有其他選項設定,然後選擇 Create topic(建立主題)。如果您想進一步了解可選設定,請參閱建立一個 Amazon SNS 主題

訂閱 SMDebugRules 主題

  1. https://console.aws.amazon.com/sns/v3/home 開啟 Amazon SNS 主控台。

  2. 在左導覽窗格中,選擇 Subscriptions (訂閱)

  3. Subscriptions (訂閱) 頁面,選擇 Create subscription (建立訂閱)

  4. Create subscription (建立訂閱) 頁面上,於 Details (詳細資訊) 區段中,執行以下作業:

    1. Topic ARN(主題 ARN),請選擇 SMDebugRules 主題 ARN。ARN 應為 arn:aws:sns:<region-id>:111122223333:SMDebugRules 格式。

    2. 針對 Protocol (通訊協定),選擇 Email (電子郵件)SMS (簡訊)

    3. Endpoint(端點)中,輸入您要接收通知的端點值,例如電子郵件地址或電話號碼。

      注意

      請務必輸入正確的電子郵件地址和電話號碼。電話號碼必須包含 +、國家/地區代碼和電話號碼,不含特殊字元或空格。例如,電話號碼 +1 (222) 333-4444 被格式化為 +12223334444

  5. 略過所有其他選項設定,然後選擇 Create subscription(建立訂閱)。如果您想進一步了解可選設定,請參閱訂閱 Amazon SNS 主題

訂閱 SMDebugRules 主題後,您會在電子郵件或電話中收到下列確認訊息:


                    Amazon SNS SMDebugRules 主題的訂閱確認電子郵件訊息。

關於 Amazon SNS,如需更多相關資訊,請參閱 Amazon SNS 開發人員指南內的行動電話簡訊 (SMS)電子郵件通知章節。

步驟 2:設定 IAM 角色以附加必要政策

您在此步驟中,新增必要政策至 IAM 角色。

將必要政策新增至您的 IAM 角色
  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇 Policies(政策),並選擇 Create policy(建立政策)。

  3. Create policy(建立政策)頁面上,執行下列動作以建立新的 sns-access 存取政策:

    1. 請選擇 JSON 標籤。

    2. 將下列程式碼中粗體格式的 JSON 字串貼入 "Statement",並以您的 AWS 帳戶 ID 取代 12 位數的 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. 在頁面底部選擇 Review policy(檢閱政策)。

    4. Review policy (檢閱政策) 頁面的 Name (名稱) 中,輸入 sns-access

    5. 請在頁面底部選擇 建立政策

  4. 返回 IAM 主控台,然後在左側導覽窗格中選擇角色

  5. 查詢您用於 SageMaker 模型訓練的 IAM 角色,然後選擇該 IAM 角色。

  6. Permissions(許可)索引標籤的 Summary(總結)頁面上,選擇Attach policies(連接政策)。

  7. 搜尋 sns-access 存取政策,選取該政策旁的核取方塊,然後選擇 Attach Policy (連接政策)。

如需為 Amazon SNS 設定 IAM 政策的更多範例,請參閱 Amazon SNS 存取控制的範例

步驟 3:使用內建動作設定偵錯工具規則

在前面的步驟中成功完成必要設定之後,您可以為偵錯規則設定偵錯工具內建動作,如下列範例指令碼所示。您可以選擇建置 actions 清單物件時要使用的內建動作。rule_configs 是一個輔助模組,提供進階工具來配置偵錯工具的內建規則和動作。偵錯工具可使用下列內建動作:

  • rule_configs.StopTraining() — 當偵錯工具規則發現問題時,停止訓練工作。

  • rule_configs.Email("abc@abc.com") — 當偵錯工具規則發現問題時,透過電子郵件傳送通知。使用您在設定 SNS 主題訂閱時使用的電子郵件地址。

  • rule_configs.SMS("+1234567890") — 當偵錯工具規則發現問題時,透過簡訊傳送通知。使用您在設定 SNS 主題訂閱時使用的電話號碼。

    注意

    請務必輸入正確的電子郵件地址和電話號碼。電話號碼必須包含 +、國家/地區代碼和電話號碼,不含特殊字元或空格。例如,電話號碼 +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)

To create multiple built-in action objects to assign different actions to a single rule(建立多個內建動作物件,以將不同動作指派給單一項規則)

如果您要指派在單一規則的不同閾值時觸發的內建動作,您可以建立多個內建動作物件,如下列指令碼所示。若要藉由執行相同的規則來避免發生衝突錯誤,您必須提交不同的規則作業名稱 (在規則的 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 問題時,傳送的電子郵件通知範例。

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


                    當偵錯工具偵測到 StalledTraining 問題時,所傳送的簡訊通知範例。

使用偵錯工具內建動作的考量事項

  • 若要使用偵錯工具內建動作,網際網路連接為必要項目。Amazon SageMaker 或 Amazon VPC 提供的網路隔離模式不支援此功能。

  • 內建動作無法用於 剖析工具規則

  • 內建動作無法用於具有 Spot 訓練中斷的訓練工作。

  • 在電子郵件或簡訊通知中,None 會出現在訊息結尾。這沒有任何意義,所以您可以忽略文字 None