ルールのためのデバッガーの組み込みアクション - 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 し、https://console.aws.amazon.com/sns/v3/home で Amazon SNS コンソールを開きます。

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

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

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

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

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

  5. その他のオプション設定をすべてスキップして、[Create topic] (トピックを作成) を選択します。オプション設定の詳細については、「Amazon SNS トピックを作成する」を参照してください。

SM DebugRules トピックにサブスクライブするには

  1. Amazon SNS コンソール (https://console.aws.amazon.com/sns/v3/home ) を開きます。

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

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

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

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

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

    3. [Endpoint] (エンドポイント) には、通知を受け取るメールアドレスや電話番号などのエンドポイント値を入力します。

      注記

      正しいメールアドレスと電話番号を入力してください。電話番号には、+、国コード、電話番号を含め、特殊文字やスペースは使用しないでください。例えば、電話番号 +1 (222) 333-4444 は、+12223334444 のようになります。

  5. その他のオプション設定をすべてスキップして、[Create subscription] (サブスクリプションを作成) を選択します。オプション設定の詳細については、「Amazon SNS トピックをサブスクライブする」を参照してください。

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

Amazon SNS SMDebugRules トピックのサブスクリプション確認 E メールメッセージ。

Amazon SNS の詳細については、Amazon SNS 開発者ガイドの「モバイルテキストメッセージング (SMS)」および「E メール通知」を参照してください。

ステップ 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"、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" } ] }
    3. ページの下部で、[Review policy] (ポリシーの確認) を選択します。

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

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

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

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

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

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

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() メソッドを使用してラップアップすることにより可能で、組み込みアクションが取り込まれ、アクションのリストが設定されます。

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 属性に異なる文字列を指定) を送信する必要があります。この例では、StalledTrainingルール を設定して、トレーニングジョブが 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 問題を検出したときに送信される E メール通知の例。

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

デバッガーが StalledTraining 問題を検出したときに送信されるテキスト通知の例。

デバッガーの組み込みアクションを使う場合の考慮事項

  • デバッガーの組み込みアクションを使うには、インターネット接続が必要です。この機能は、Amazon SageMaker または Amazon VPC が提供するネットワーク分離モードではサポートされていません。

  • 組み込みアクションは、プロファイラールール には使用できません。

  • 組み込みアクションは、スポットトレーニング中断があるトレーニングジョブでは使用できません。

  • メールまたはテキスト通知では、メッセージの最後に「None」と表示されます。これには意味がないため、「None」というテキストは無視してください。