

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

# Debugger ルールを設定するためのサンプルノートブックとコードサンプル
<a name="debugger-built-in-rules-example"></a>

**注記**  
Amazon SageMaker デバッガーは新規顧客に公開されなくなりました。既存のお客様は、引き続きこのサービスを通常どおり使用できます。 は AWS デバッガーのセキュリティと可用性の向上に引き続き投資しますが、新機能を導入する予定はありません。詳細については、「[デバッガーの可用性の変更](debugger-availability-change.md)」を参照してください。

次のセクションでは、デバッガールールを使って SageMaker トレーニングジョブをモニタリングする方法のノートブックとコードの例について説明します。

**Topics**
+ [Debugger の組み込みルールのサンプルノートブック](#debugger-built-in-rules-notebook-example)
+ [Debugger の組み込みルールのサンプルコード](#debugger-deploy-built-in-rules)
+ [パラメータ変更で Debugger の組み込みルールを使用する](#debugger-deploy-modified-built-in-rules)

## Debugger の組み込みルールのサンプルノートブック
<a name="debugger-built-in-rules-notebook-example"></a>

次のサンプルノートブックは、Amazon SageMaker AI でトレーニングジョブを実行するときに、デバッガーの組み込みルールを使う方法を示しています。
+ [TensorFlow で SageMaker デバッガーの組み込みルールを使用する](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/tensorflow_builtin_rule)
+ [マネージド型スポットトレーニングと MXNet で SageMaker デバッガーの組み込みルールを使用する](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mxnet_spot_training)
+ [XGBoost を使用したリアルタイムトレーニングジョブ分析にパラメータ変更をした SageMaker デバッガーの組み込みルールを使用する](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/xgboost_realtime_analysis)

SageMaker Studio でサンプルノートブックを実行中、作成されたトレーニングジョブのトライアルは **[Studio Experiment List]** (Studio 実験リスト) タブで見つけることができます。例えば、次のスクリーンショットに示すように、現在のトレーニングジョブの **[Describe Trial Component]** (トライアルコンポーネントの説明) ウィンドウを見つけて開くことができます。[Debugger] (デバッガー) タブでは、デバッガールール `vanishing_gradient()` と `loss_not_decreasing()` が並列でトレーニングセッションをモニタリングしているかどうかをチェックできます。Studio UI でトレーニングジョブのトライアルコンポーネントを見つける方法の詳細については、「[SageMaker Studio - 実験、トライアル、トライアルコンポーネントを表示する](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-tasks.html#studio-tasks-experiments)」を参照してください。

![SageMaker Studio でアクティブ化されたデバッガーの組み込みルールを使用してトレーニングジョブを実行するイメージ。](https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-built-in-rule-studio.png)


SageMaker AI 環境でデバッガーの組み込みルールを使うには、用意されたままの組み込みルールをデプロイする方法と、好きなようにパラメータを調整する方法の 2 つがあります。次のトピックでは、組み込みルールの使用方法をサンプルコードで示します。

## Debugger の組み込みルールのサンプルコード
<a name="debugger-deploy-built-in-rules"></a>

次のコードサンプルは、`Rule.sagemaker` メソッドを使用してデバッガーの組み込みルールを設定する方法を示しています。実行する組み込みルールを指定するには、`rules_configs` API オペレーションを使用して組み込みルールを呼び出します。デバッガーの組み込みルールとデフォルトのパラメータ値の完全なリストについては、「[デバッガーの組み込みルールのリスト](debugger-built-in-rules.md)」を参照してください。

```
import boto3
import sagemaker
from sagemaker.train import ModelTrainer
from sagemaker.core.debugger import Rule, CollectionConfig, rule_configs
from sagemaker.core.helper.session_helper import get_execution_role
built_in_rules=[ 
            Rule.sagemaker(rule_configs.vanishing_gradient()),
            Rule.sagemaker(rule_configs.loss_not_decreasing())
]

from sagemaker.core import image_uris
from sagemaker.train.configs import SourceCode, Compute

training_image = image_uris.retrieve(
    framework="tensorflow",
    region=boto3.Session().region_name,
    version="{{2.9.0}}",
    py_version="{{py39}}",
    instance_type="{{ml.p3.2xlarge}}",
    image_scope="training"
)

# construct a SageMaker AI ModelTrainer with the Debugger built-in rules
sagemaker_model_trainer=ModelTrainer(
    training_image=training_image,
    source_code=SourceCode(entry_script='directory/to/your_training_script.py'),
    role=get_execution_role(),
    base_job_name='debugger-built-in-rules-demo',
    compute=Compute(instance_type="{{ml.p3.2xlarge}}", instance_count=1),

    # debugger-specific arguments below
    rules=built_in_rules
)
sagemaker_model_trainer.train()
```

**注記**  
デバッガーの組み込みルールは、トレーニングジョブと並列で実行されます。1 つのトレーニングジョブに対する組み込みルールコンテナの最大数は 20 です。

デバッガールールクラス、メソッド、パラメータの詳細については、[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html) の「[SageMaker デバッガールールクラス](https://sagemaker.readthedocs.io/en/stable)」を参照してください。

デバッガールールパラメータの調整方法の例については、次の「[パラメータ変更で Debugger の組み込みルールを使用する](#debugger-deploy-modified-built-in-rules)」セクションを参照してください。

## パラメータ変更で Debugger の組み込みルールを使用する
<a name="debugger-deploy-modified-built-in-rules"></a>

次のコード例は、パラメータを調整するための組み込みルールの構造を示しています。この例では、`stalled_training_rule` は、50 ステップごとにトレーニングジョブから、10 ステップごとに評価ステージから `losses` テンソルコレクションを収集します。トレーニングプロセスが停滞し始め、テンソル出力を 120 秒間収集しない場合、`stalled_training_rule` はトレーニングジョブを停止します。

```
import boto3
import time
import sagemaker
from sagemaker.train import ModelTrainer
from sagemaker.core.debugger import Rule, CollectionConfig, rule_configs
from sagemaker.core.helper.session_helper import get_execution_role

# call the built-in rules and modify the CollectionConfig parameters

base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time()))

built_in_rules_modified=[
    Rule.sagemaker(
        base_config=rule_configs.stalled_training_rule(),
        rule_parameters={
                'threshold': '120',
                'training_job_name_prefix': base_job_name_prefix,
                'stop_training_on_fire' : 'True'
        },
        collections_to_save=[ 
            CollectionConfig(
                name="losses", 
                parameters={
                      "train.save_interval": "50",
                      "eval.save_interval": "10"
                } 
            )
        ]
    )
]

from sagemaker.core import image_uris
from sagemaker.train.configs import SourceCode, Compute

training_image = image_uris.retrieve(
    framework="tensorflow",
    region=boto3.Session().region_name,
    version="{{2.9.0}}",
    py_version="{{py39}}",
    instance_type="{{ml.p3.2xlarge}}",
    image_scope="training"
)

# construct a SageMaker AI ModelTrainer with the modified Debugger built-in rule
sagemaker_model_trainer=ModelTrainer(
    training_image=training_image,
    source_code=SourceCode(entry_script='directory/to/your_training_script.py'),
    role=get_execution_role(),
    base_job_name=base_job_name_prefix,
    compute=Compute(instance_type="{{ml.p3.2xlarge}}", instance_count=1),

    # debugger-specific arguments below
    rules=built_in_rules_modified
)
sagemaker_model_trainer.train()
```