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

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

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

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

步驟 1:設置 Amazon SNS,創建 SM DebugRules 主題並訂閱主題

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

注意

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

建立 SM DebugRules 主題的步驟
  1. 登入 AWS Management Console 並開啟 Amazon SNS 主控台,網址為 https://console.aws.amazon.com/sns/v3/home

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

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

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

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

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

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

若要訂閱 SM DebugRules 主題

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

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

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

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

    1. 主題 ARN 中,選擇 SM 主DebugRules題 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 主題

訂閱 SM DebugRules 主題後,您會透過電子郵件或電話收到下列確認訊息:

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

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

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

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

將必要政策新增至您的 IAM 角色
  1. 登入 AWS Management Console 並開啟 IAM 主控台,網址為 https://console.aws.amazon.com/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