翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
デバッガーの組み込みアクションを使って、デバッガールール で検出された問題に対応します。デバッガーの rule_configs
クラスには、トレーニングジョブを自動的に停止したり、デバッガールールがトレーニングの問題を検出したときに Amazon Simple Notification Service (Amazon SNS) を使用して通知を送信したりするなどの、アクションのリストを設定するツールが用意されています。以下のトピックでは、これらのタスクを実行する手順を説明します。
トピック
Amazon SNS を設定し、SMDebugRules
トピックを作成し、トピックをサブスクライブする
このセクションでは、Amazon SNS SMDebugRules
トピックを設定してサブスクライブし、サブスクリプションを確認してデバッガールールから通知を受け取る方法を具体的に説明します。
注記
Amazon SNS の請求の詳細については、「Amazon SNS の料金
SMDebugRules トピックを作成するには
にサインイン AWS Management Console し、https://console.aws.amazon.com/sns/v3/home
で Amazon SNS コンソールを開きます。 -
左のナビゲーションペインで、[トピック] を選択します。
-
[トピック] ページで、[トピックの作成] を選択します。
-
[サブスクリプションの作成] ページで [詳細] セクションで、以下を実行します。
-
[Type] (タイプ) で、トピックタイプとして [Standard] (標準) を選択します。
-
[名前] に「
SMDebugRules
」と入力します。
-
-
その他のオプション設定をすべてスキップして、[Create topic] (トピックを作成) を選択します。オプション設定の詳細については、「Amazon SNS トピックを作成する」を参照してください。
SMDebugRules トピックをサブスクライブするには
Amazon SNS コンソール (https://console.aws.amazon.com/sns/v3/home
) を開きます。 -
左のナビゲーションペインで、[サブスクリプション] を選択します。
-
[サブスクリプション] ページで [サブスクリプションの作成] を選択します。
-
[サブスクリプションの作成] ページで [詳細] セクションで、以下を実行します。
-
[Topic ARN] (トピック ARN) で、SMDebugRules トピック の ARN を選択します。ARN は、
arn:aws:sns:<region-id>:111122223333:SMDebugRules
の形式にしてください。 -
[プロトコル] で、[E メール] または [SMS] を選択します。
-
[Endpoint] (エンドポイント) には、通知を受け取るメールアドレスや電話番号などのエンドポイント値を入力します。
注記
正しいメールアドレスと電話番号を入力してください。電話番号には、
+
、国コード、電話番号を含め、特殊文字やスペースは使用しないでください。例えば、電話番号 +1 (222) 333-4444 は、+12223334444
のようになります。
-
-
その他のオプション設定をすべてスキップして、[Create subscription] (サブスクリプションを作成) を選択します。オプション設定の詳細については、「Amazon SNS トピックをサブスクライブする」を参照してください。
SMDebugRules トピックをサブスクライブすると、次の確認メッセージがメールまたは電話で届きます。

Amazon SNS の詳細については、Amazon SNS 開発者ガイドの「モバイルテキストメッセージング (SMS)」および「E メール通知」を参照してください。
IAM ロールを設定して必要なポリシーをアタッチする
このステップでは、必要なポリシーを IAM ロールに追加します。
IAM ロールに必要なポリシーを追加するには
にサインイン AWS Management Console し、https://console.aws.amazon.com/iam/
で IAM コンソールを開きます。 -
左のナビゲーションペインで、[Policies] (ポリシー) を選択し、[Create Policy] (ポリシーの作成) を選択します。
-
[Create policy] (ポリシーの作成) ページで、次の手順を実行して、新しい sns-access ポリシーを作成します。
-
[JSON] タブを選択します。
-
次のコードで太字の 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" } ] } -
ページの下部で、[Review policy] (ポリシーの確認) を選択します。
-
[ポリシーの確認] ページで [名前] に
sns-access
と入力します。 -
ページの下部で、[Create policy] (ポリシーの作成) を選択します。
-
-
IAM コンソールに戻り、左のナビゲーションペインで、[Roles] (ロール) を選択します。
-
SageMaker AI モデルトレーニングに使用する IAM ロールを検索し、その IAM ロールを選択します。
-
[Summary] (概要) ページの [Permissions] (許可) タブで、[Attach policies] (ポリシーをアタッチ) を選択します。
-
sns-access ポリシーを検索し、ポリシーの横にあるチェックボックスを選択して、[Attach policies] (ポリシーをアタッチ) を選択します。
Amazon SNS のための IAM ポリシーのその他の設定例については、「Amazon SNS アクセスコントロールのケース例」を参照してください。
組み込みアクションを使って Debugger ルールを設定する
前の手順で必要な設定を正常に終了したら、次のスクリプト例に示すように、デバッグルール用のデバッガー組み込みアクションを設定できます。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()
メソッドを使用してラップアップすることにより可能で、組み込みアクションが取り込まれ、アクションのリストが設定されます。
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 を設定して、トレーニングジョブが 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 の問題を検出したときにデバッガーが送信するテキスト通知の例を示しています。

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