

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

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

次のセクションでは、デバッガーフックを使って出力テンソルを保存、アクセス、視覚化する方法のノートブックとコード例を示しています。

**Topics**
+ [テンソル可視化のサンプルノートブック](#debugger-tensor-visualization-notebooks)
+ [Debugger の組み込みコレクションを使ってテンソルを保存する](#debugger-save-built-in-collections)
+ [Debugger の組み込みコレクションを変更してテンソルを保存する](#debugger-save-modified-built-in-collections)
+ [Debugger のカスタムコレクションを使ってテンソルを保存する](#debugger-save-custom-collections)

## テンソル可視化のサンプルノートブック
<a name="debugger-tensor-visualization-notebooks"></a>

次の 2 つのノートブックの例は、テンソルを視覚化するための Amazon SageMaker の高度な使用法を示しています。デバッガーは、深層学習モデルのトレーニングを透過的に表示します。
+ [Interactive Tensor Analysis in SageMaker Studio Notebook with MXNet](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mnist_tensor_analysis)

  このノートブックの例では、Amazon SageMaker デバッガーを使って保存されたテンソルを視覚化する方法を紹介します。テンソルを視覚化することで、深層学習アルゴリズムのトレーニング中にテンソル値がどのように変化するかが見えます。このノートブックには設定が不十分なニューラルネットワークのトレーニングジョブが含まれており、Amazon SageMaker Debugger を使用してテンソル (勾配、活性化関数の出力、重みを含む) を集計および分析します。たとえば、次の図は、勾配消失の問題が発生している畳み込みレイヤーの勾配の分布を示しています。  
![\[勾配の分布をプロットしたグラフ。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-vanishing-gradient.gif)

  また、このノートブックは、ハイパーパラメータを最初から適切に設定することにより、同じテンソルの分布図を作成してトレーニングプロセスが改善されることを示しています。
+ [MXNet モデルトレーニングからのテンソルの可視化とデバッグ](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mnist_tensor_plot)

   このノートブックの例では、Amazon SageMaker デバッガーを使って MXNet Gluon モデルのトレーニングジョブからテンソルを保存して視覚化する方法を紹介します。これは、デバッガーがすべてのテンソルを Amazon S3 バケットに保存し、視覚化のために ReLU 活性化関数の出力を取得するように設定されていることを示しています。次の図は、ReLu 活性化関数の出力の 3 次元視覚化を示しています。カラースキームは、0 に近い値を示す青色と 1 に近い値を示す黄色に設定されています。  
![\[ReLU 活性化関数の出力の視覚化\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/tensorplot.gif)

  このノートブックでは、`tensor_plot.py` からインポートされた `TensorPlot` クラスは、2 次元画像を入力とする畳み込みニューラルネットワーク (CNN) をプロットするように設計されています。このノートブックの `tensor_plot.py` スクリプトは、デバッガーを使ってテンソルを取得し、CNN を視覚化します。このノートブックを SageMaker Studio で実行して、テンソルの視覚化を再現し、独自の畳み込みニューラルネットワークモデルを実装できます。
+ [MXNet を使用した SageMaker ノートブックでのリアルタイムテンソル分析](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mxnet_realtime_analysis)

  この例では、Amazon SageMaker トレーニングジョブでテンソルを出力するために必要なコンポーネントをインストールし、デバッガー API オペレーションを使ってトレーニングの実行中にこれらのテンソルにアクセスする方法をガイドします。gluon の CNN モデルは、Fashion MNIST データセットでトレーニングされます。ジョブの実行中に、デバッガーが 100 個のバッチそれぞれから最初の畳み込みレイヤーの活性化関数の出力を取得して視覚化する方法を確認できます。また、ジョブの終了後に重みを視覚化する方法も表示されます。

## Debugger の組み込みコレクションを使ってテンソルを保存する
<a name="debugger-save-built-in-collections"></a>

`CollectionConfig` API を使ってテンソルの組み込みコレクションを使用し、`DebuggerHookConfig` API を使って保存できます。次の例は、デバッガーフック設定のデフォルト設定を使用して SageMaker AI TensorFlow 推定器を構築する方法を示しています。これは、MXNet、PyTorch、XGBoost 推定器にも利用できます。

**注記**  
次のサンプルコードでは、`DebuggerHookConfig` の `s3_output_path` パラメータはオプションです。指定しない場合、デバッガーはテンソルを `s3://<output_path>/debug-output/` に保存します。ここで、`<output_path>` は SageMaker トレーニングジョブのデフォルトの出力パスです。例:  

```
"s3://sagemaker-us-east-1-111122223333/sagemaker-debugger-training-YYYY-MM-DD-HH-MM-SS-123/debug-output"
```

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import DebuggerHookConfig, CollectionConfig

# use Debugger CollectionConfig to call built-in collections
collection_configs=[
        CollectionConfig(name="weights"),
        CollectionConfig(name="gradients"),
        CollectionConfig(name="losses"),
        CollectionConfig(name="biases")
    ]

# configure Debugger hook
# set a target S3 bucket as you want
sagemaker_session=sagemaker.Session()
BUCKET_NAME=sagemaker_session.default_bucket()
LOCATION_IN_BUCKET='debugger-built-in-collections-hook'

hook_config=DebuggerHookConfig(
    s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'.
                    format(BUCKET_NAME=BUCKET_NAME, 
                           LOCATION_IN_BUCKET=LOCATION_IN_BUCKET),
    collection_configs=collection_configs
)

# construct a SageMaker TensorFlow estimator
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-demo-job',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",
    
    # debugger-specific hook argument below
    debugger_hook_config=hook_config
)

sagemaker_estimator.fit()
```

デバッガーの組み込みコレクションのリストを見るには、「[デバッガー組み込みコレクション](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#collection)」を参照してください。

## Debugger の組み込みコレクションを変更してテンソルを保存する
<a name="debugger-save-modified-built-in-collections"></a>

デバッガーの組み込みコレクションは、`CollectionConfig` API オペレーションを使って変更できます。次の例は、組み込みの `losses` コレクションを微調整し、SageMaker AI TensorFlow 推定器を構築する方法を示しています。これは、MXNet、PyTorch、XGBoost 推定器にも使用できます。

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import DebuggerHookConfig, CollectionConfig

# use Debugger CollectionConfig to call and modify built-in collections
collection_configs=[
    CollectionConfig(
                name="losses", 
                parameters={"save_interval": "50"})]

# configure Debugger hook
# set a target S3 bucket as you want
sagemaker_session=sagemaker.Session()
BUCKET_NAME=sagemaker_session.default_bucket()
LOCATION_IN_BUCKET='debugger-modified-collections-hook'

hook_config=DebuggerHookConfig(
    s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'.
                    format(BUCKET_NAME=BUCKET_NAME, 
                           LOCATION_IN_BUCKET=LOCATION_IN_BUCKET),
    collection_configs=collection_configs
)

# construct a SageMaker TensorFlow estimator
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-demo-job',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",
    
    # debugger-specific hook argument below
    debugger_hook_config=hook_config
)

sagemaker_estimator.fit()
```

`CollectionConfig` パラメータの完全なリストについては、「[デバッガーの CollectionConfig API](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#configuring-collection-using-sagemaker-python-sdk)」を参照してください。

## Debugger のカスタムコレクションを使ってテンソルを保存する
<a name="debugger-save-custom-collections"></a>

Amazon S3 バケットに保存するデータ量を削減したい場合などは、すべてのテンソルを保存するのではなく、テンソルの保存数を減らすこともできます。次の例は、デバッガーフック設定をカスタマイズして、保存するターゲットテンソルを指定する方法を示しています。これは、TensorFlow、MXNet、PyTorch、XGBoost 推定器に使用できます。

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import DebuggerHookConfig, CollectionConfig

# use Debugger CollectionConfig to create a custom collection
collection_configs=[
        CollectionConfig(
            name="custom_activations_collection",
            parameters={
                "include_regex": "relu|tanh", # Required
                "reductions": "mean,variance,max,abs_mean,abs_variance,abs_max"
            })
    ]
    
# configure Debugger hook
# set a target S3 bucket as you want
sagemaker_session=sagemaker.Session()
BUCKET_NAME=sagemaker_session.default_bucket()
LOCATION_IN_BUCKET='debugger-custom-collections-hook'

hook_config=DebuggerHookConfig(
    s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'.
                    format(BUCKET_NAME=BUCKET_NAME, 
                           LOCATION_IN_BUCKET=LOCATION_IN_BUCKET),
    collection_configs=collection_configs
)

# construct a SageMaker TensorFlow estimator
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-demo-job',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",
    
    # debugger-specific hook argument below
    debugger_hook_config=hook_config
)

sagemaker_estimator.fit()
```

`CollectionConfig` パラメータの完全なリストについては、「[デバッガーの CollectionConfig](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#configuring-collection-using-sagemaker-python-sdk)」を参照してください。