

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ルール用の Debugger の組み込みアクションを使用する
<a name="debugger-built-in-actions"></a>

デバッガーの組み込みアクションを使って、[デバッガールール](debugger-built-in-rules.md#debugger-built-in-rules-Rule) で検出された問題に対応します。デバッガーの `rule_configs` クラスには、トレーニングジョブを自動的に停止したり、デバッガールールがトレーニングの問題を検出したときに Amazon Simple Notification Service (Amazon SNS) を使用して通知を送信したりするなどの、アクションのリストを設定するツールが用意されています。以下のトピックでは、これらのタスクを実行する手順を説明します。

**Topics**
+ [Amazon SNS を設定し、`SMDebugRules` トピックを作成し、トピックをサブスクライブする](#debugger-built-in-actions-sns)
+ [IAM ロールを設定して必要なポリシーをアタッチする](#debugger-built-in-actions-iam)
+ [組み込みアクションを使って Debugger ルールを設定する](#debugger-built-in-actions-on-rule)
+ [Debugger の組み込みアクションを使う場合の考慮事項](#debugger-built-in-actions-considerations)

## Amazon SNS を設定し、`SMDebugRules` トピックを作成し、トピックをサブスクライブする
<a name="debugger-built-in-actions-sns"></a>

このセクションでは、Amazon SNS **SMDebugRules** トピックを設定してサブスクライブし、サブスクリプションを確認してデバッガールールから通知を受け取る方法を具体的に説明します。

**注記**  
Amazon SNS の請求の詳細については、「[Amazon SNS の料金](https://aws.amazon.com/sns/pricing/)」と「[Amazon SNS のよくある質問](https://aws.amazon.com/sns/faqs/)」を参照してください。

**SMDebugRules トピックを作成するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home) で Amazon SNS コンソールを開きます。

1. 左のナビゲーションペインで、[**トピック**] を選択します。

1. [**トピック**] ページで、[**トピックの作成**] を選択します。

1. [**サブスクリプションの作成**] ページで [**詳細**] セクションで、以下を実行します。

   1. **[Type]** (タイプ) で、トピックタイプとして **[Standard]** (標準) を選択します。

   1. [**名前**] に「**SMDebugRules**」と入力します。

1. その他のオプション設定をすべてスキップして、**[Create topic]** (トピックを作成) を選択します。オプション設定の詳細については、「[Amazon SNS トピックを作成する](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)」を参照してください。

**SMDebugRules トピックをサブスクライブするには**

1. Amazon SNS コンソールの[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)を開いてください。

1. 左のナビゲーションペインで、**[サブスクリプション]** を選択します。

1. **[サブスクリプション]** ページで **[サブスクリプションの作成]** を選択します。

1. **[サブスクリプションの作成]** ページの **[詳細]** セクションで、以下を実行します。

   1. **[Topic ARN]** (トピック ARN) で、**SMDebugRules** トピック の ARN を選択します。ARN は、`arn:aws:sns:<region-id>:111122223333:SMDebugRules` の形式にしてください。

   1. [**プロトコル**] で、[**E メール**] または [**SMS**] を選択します。

   1. **[Endpoint]** (エンドポイント) には、通知を受け取るメールアドレスや電話番号などのエンドポイント値を入力します。
**注記**  
正しいメールアドレスと電話番号を入力してください。電話番号には、`+`、国コード、電話番号を含め、特殊文字やスペースは使用しないでください。例えば、電話番号 \$11 (222) 333-4444 は、**\$112223334444** のようになります。

1. その他のオプション設定をすべてスキップして、**[Create subscription]** (サブスクリプションを作成) を選択します。オプション設定の詳細については、「[Amazon SNS トピックをサブスクライブする](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)」を参照してください。

**SMDebugRules** トピックをサブスクライブすると、次の確認メッセージがメールまたは電話で届きます。

![\[Amazon SNS SMDebugRules トピックのサブスクリプション確認メールメッセージ。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-built-in-action-subscription-confirmation.png)


Amazon SNS の詳細については、*Amazon SNS 開発者ガイド*の「[モバイルテキストメッセージング (SMS)](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html)」および「[E メール通知](https://docs.aws.amazon.com/sns/latest/dg/sns-email-notifications.html)」を参照してください。

## IAM ロールを設定して必要なポリシーをアタッチする
<a name="debugger-built-in-actions-iam"></a>

このステップでは、必要なポリシーを IAM ロールに追加します。

**IAM ロールに必要なポリシーを追加するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. 左のナビゲーションペインで、**[Policies]** (ポリシー) を選択し、**[Create Policy]** (ポリシーの作成) を選択します。

1. **[Create policy]** (ポリシーの作成) ページで、次の手順を実行して、新しい sns-access ポリシーを作成します。

   1. **JSON** タブを選択します。

   1. 次のコードで太字の JSON 文字列を に貼り付け`"Statement"`、12 桁の AWS アカウント ID を AWS 自分のアカウント ID に置き換えます。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "VisualEditor0",
                  "Effect": "Allow",
                  "Action": [
                      "sns:Publish",
                      "sns:CreateTopic",
                      "sns:Subscribe"
                  ],
                  "Resource": "arn:aws:sns:*:111122223333:SMDebugRules"
              }
          ]
      }
      ```

------

   1. ページの下部で、**[Review policy]** (ポリシーの確認) を選択します。

   1. [**ポリシーの確認**] ページで [**名前**] に **sns-access** と入力します。

   1. ページの下部で、**[Create policy]** (ポリシーの作成) を選択します。

1. IAM コンソールに戻り、左のナビゲーションペインで、**[Roles]** (ロール) を選択します。

1. SageMaker AI モデルトレーニングに使う IAM ロールを検索し、その IAM ロールを選択します。

1. **[Summary]** (概要) ページの **[Permissions]** (許可) タブで、**[Attach policies]** (ポリシーをアタッチ) を選択します。

1. **sns-access** ポリシーを検索し、ポリシーの横にあるチェックボックスを選択して、**[Attach policies]** (ポリシーをアタッチ) を選択します。

Amazon SNS のための IAM ポリシーのその他の設定例については、「[Amazon SNS アクセスコントロールのケース例](https://docs.aws.amazon.com/sns/latest/dg/sns-access-policy-use-cases.html)」を参照してください。

## 組み込みアクションを使って Debugger ルールを設定する
<a name="debugger-built-in-actions-on-rule"></a>

前の手順で必要な設定を正常に終了したら、次のスクリプト例に示すように、デバッグルール用のデバッガー組み込みアクションを設定できます。`actions` リストオブジェクトの構築中に使用する組み込みアクションを選択できます。`rule_configs` は、デバッガーの組み込みルールおよびアクションを設定するための高レベルのツールを提供するヘルパーモジュールです。デバッガーでは、次の組み込みアクションを使用できます。
+ `rule_configs.StopTraining()` - デバッガールールが問題を検出すると、トレーニングジョブを停止します。
+ `rule_configs.Email("abc@abc.com")` - デバッガールールが問題を検出すると、メールで通知を送ります。SNS トピックサブスクリプションを設定したときに使用したメールアドレスを使用してください。
+ `rule_configs.SMS("+1234567890")` - デバッガールールが問題を検出すると、テキストメッセージで通知を送ります。SNS トピックサブスクリプションを設定したときに使用した電話番号を使用してください。
**注記**  
正しいメールアドレスと電話番号を入力してください。電話番号には、`+`、国コード、電話番号を含め、特殊文字やスペースは使用しないでください。例えば、電話番号 \$11 (222) 333-4444 は、**\$112223334444** のようになります。

すべての組み込みアクションまたはアクションのサブセットの使用は、`rule_configs.ActionList()` メソッドを使用してラップアップすることにより可能で、組み込みアクションが取り込まれ、アクションのリストが設定されます。

**3 つの組み込みアクションをすべて 1 つのルールに追加するには**

3 つの組み込みアクションすべてを 1 つのルールに含める場合は、推定器の構築中にデバッガーの組み込みアクションリストを設定します。次のテンプレートを使って推定器を構築すると、デバッガーはトレーニングジョブを停止し、トレーニングジョブの進行状況のモニタリングに使うルールについて、メールとテキストで通知を送信します。

```
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)
```

**複数の組み込みアクションオブジェクトを作成して、1 つのルールに異なるアクションを与えるには**

1 つのルールの異なるしきい値でトリガーされる組み込みアクションを与える場合、次のスクリプトに示すように、複数の組み込みアクションオブジェクトを作成できます。同じルールの実行による競合エラーを回避するには、次のスクリプトテンプレートの例に示すように、異なるルールジョブ名 (ルールの `name` 属性に異なる文字列を指定) を送信する必要があります。この例では、[StalledTrainingRule](debugger-built-in-rules.md#stalled-training) を設定して、トレーニングジョブが 60 秒間停滞した場合に `abc@abc.com` にメールを送信し、120 秒間停滞した場合にトレーニングジョブを停止する、という 2 つの異なるアクションを実行する方法を示しています。

```
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 の問題が検出されたときにデバッガーから送信されるメール通知の例。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-built-in-action-email.png)


次のスクリーンショットは、ルールが StalledTraining の問題を検出したときにデバッガーが送信するテキスト通知の例を示しています。

![\[StalledTraining の問題が検出されたときにデバッガーから送信されるテキスト通知の例。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-built-in-action-text.png)


## Debugger の組み込みアクションを使う場合の考慮事項
<a name="debugger-built-in-actions-considerations"></a>
+ デバッガーの組み込みアクションを使うには、インターネット接続が必要です。この機能は、Amazon SageMaker AI または Amazon VPC が提供するネットワーク分離モードではサポートされていません。
+ 組み込みアクションは、[プロファイラールール](debugger-built-in-profiler-rules.md#debugger-built-in-profiler-rules-ProfilerRule) には使用できません。
+ 組み込みアクションは、スポットトレーニング中断があるトレーニングジョブでは使用できません。
+ メールまたはテキスト通知では、メッセージの最後に「`None`」と表示されます。これには意味がないため、「`None`」というテキストは無視してください。