

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

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

次のセクションでは、デバッガールールを使って 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 でアクティブ化されたデバッガーの組み込みルールを使ってトレーニングジョブを実行するイメージ\]](http://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 sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import Rule, CollectionConfig, rule_configs

# call built-in rules that you want to use.
built_in_rules=[ 
            Rule.sagemaker(rule_configs.vanishing_gradient())
            Rule.sagemaker(rule_configs.loss_not_decreasing())
]

# construct a SageMaker AI estimator with the Debugger built-in rules
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-built-in-rules-demo',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",

    # debugger-specific arguments below
    rules=built_in_rules
)
sagemaker_estimator.fit()
```

**注記**  
デバッガーの組み込みルールは、トレーニングジョブと並列で実行されます。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 sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import Rule, CollectionConfig, rule_configs

# 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"
                } 
            )
        ]
    )
]

# construct a SageMaker AI estimator with the modified Debugger built-in rule
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name=base_job_name_prefix,
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",

    # debugger-specific arguments below
    rules=built_in_rules_modified
)
sagemaker_estimator.fit()
```