

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

# TensorBoard で Amazon SageMaker Debugger 出力テンソルを視覚化する
<a name="debugger-enable-tensorboard-summaries"></a>

**重要**  
このページは非推奨となり、代わりに Amazon SageMaker AI with TensoBoard の使用が推奨されています。TensorBoard の包括的なエクスペリエンスが SageMaker トレーニングと統合されており、SageMaker AI ドメインのアクセス制御機能も使用できます。詳細については[Amazon SageMaker AI の TensorBoard](tensorboard-on-sagemaker.md)を参照してください。

SageMaker デバッガーを使って、TensorBoard と互換性のある出力テンソルファイルを作成します。ファイルをロードして TensorBoard で視覚化し、SageMaker トレーニングジョブを分析します。デバッガーは、TensorBoard と互換性のある出力テンソルファイルを自動的に生成します。出力テンソルを保存するためにカスタマイズしたフック設定に対して、デバッガーには、スカラーサマリー、分布、ヒストグラムを作成し、TensorBoard にインポートできる柔軟性があります。

![デバッガー出力テンソル保存メカニズムのアーキテクチャ図。](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-tensorboard-concept.png)


これを有効にするには、`DebuggerHookConfig` と `TensorBoardOutputConfig` オブジェクトを `estimator` に渡します。

次の手順では、スカラー、重み、バイアスを、TensorBoard で視覚化できる完全なテンソル、ヒストグラム、分布として保存する方法について説明します。デバッガーはこれらをトレーニングコンテナのローカルパス (デフォルトパスは `/opt/ml/output/tensors`) に保存し、デバッガー出力設定オブジェクトで渡された Amazon S3 のロケーションに同期させます。

**デバッガーを使って TensorBoard 互換の出力テンソルファイルを保存するには**

1. デバッガーの `TensorBoardOutputConfig` クラスを使って、TensorBoard 出力を保存するように `tensorboard_output_config` 設定オブジェクトを設定します。`s3_output_path` パラメータには、現在の SageMaker AI セッションのデフォルトの S3 バケットか、任意の S3 バケットを指定します。この例では、`container_local_output_path` パラメータを追加せずに、デフォルトのローカルパス `/opt/ml/output/tensors` に設定します。

   ```
   import sagemaker
   from sagemaker.debugger import TensorBoardOutputConfig
   
   bucket = sagemaker.Session().default_bucket()
   tensorboard_output_config = TensorBoardOutputConfig(
       s3_output_path='s3://{}'.format(bucket)
   )
   ```

   詳細については、[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) のデバッガー `[TensorBoardOutputConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.TensorBoardOutputConfig)` API を参照してください。

1. デバッガーフックを設定し、フックパラメータ値をカスタマイズします。例えば、次のコードは、すべてのスカラー出力をトレーニングフェーズでは 100 ステップごと、検証フェーズで 10 ステップごとに保存し、`weights` パラメータを 500 ステップごと (テンソルコレクションを保存するためのデフォルトの `save_interval` 値は 500)、`bias` パラメータをグローバルステップが 500 に達するまで 10 グローバルステップごとに保存するようデバッガーフックを設定します。

   ```
   from sagemaker.debugger import CollectionConfig, DebuggerHookConfig
   
   hook_config = DebuggerHookConfig(
       hook_parameters={
           "train.save_interval": "100",
           "eval.save_interval": "10"
       },
       collection_configs=[
           CollectionConfig("weights"),
           CollectionConfig(
               name="biases",
               parameters={
                   "save_interval": "10",
                   "end_step": "500",
                   "save_histogram": "True"
               }
           ),
       ]
   )
   ```

   デバッガー設定 API の詳細については、[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) のデバッガー `[CollectionConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.CollectionConfig)` API と `[DebuggerHookConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.DebuggerHookConfig)` API を参照してください。

1. 設定オブジェクトを渡すデバッガーパラメータを使って SageMaker AI 推定器を構築します。次のテンプレート例は、一般的な SageMaker AI 推定器を作成する方法を示します。`estimator` と `Estimator` は、他の SageMaker AI フレームワークの推定器の親クラスや推定器クラスに置き換えることができます。この機能で利用可能な SageMaker AI フレームワーク推定器は、`[TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/using_tf.html#create-an-estimator)`、`[PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#create-an-estimator)`、`[MXNet](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/using_mxnet.html#create-an-estimator)` です。

   ```
   from sagemaker.estimator import Estimator
   
   estimator = Estimator(
       ...
       # Debugger parameters
       debugger_hook_config=hook_config,
       tensorboard_output_config=tensorboard_output_config
   )
   estimator.fit()
   ```

   `estimator.fit()` メソッドはトレーニングジョブを開始し、デバッガーは出力テンソルファイルをデバッガー S3 出力パスと TensorBoard S3 出力パスにリアルタイムで書き込みます。出力パスを取得するには、次の推定器メソッドを使用します。
   + デバッガー S3 出力パスには、`estimator.latest_job_debugger_artifacts_path()` を使用します。
   + TensorBoard S3 出力パスには、`estimator.latest_job_tensorboard_artifacts_path()` を使用します。

1. トレーニングが完了したら、保存された出力テンソルの名前をチェックします。

   ```
   from smdebug.trials import create_trial
   trial = create_trial(estimator.latest_job_debugger_artifacts_path())
   trial.tensor_names()
   ```

1. Amazon S3 で TensorBoard の出力データをチェックします。

   ```
   tensorboard_output_path=estimator.latest_job_tensorboard_artifacts_path()
   print(tensorboard_output_path)
   !aws s3 ls {tensorboard_output_path}/
   ```

1. TensorBoard の出力データをノートブックインスタンスにダウンロードします。たとえば、次の AWS CLI コマンドは、ノートブックインスタンスの現在の作業ディレクトリの `/logs/fit` に TensorBoard ファイルをダウンロードします。

   ```
   !aws s3 cp --recursive {tensorboard_output_path} {{./logs/fit}}
   ```

1. ファイルディレクトリを TAR ファイルに圧縮して、ローカルマシンにダウンロードします。

   ```
   !tar -cf logs.tar logs
   ```

1. TensorBoard TAR ファイルをダウンロードしてデバイス上のディレクトリに抽出し、Jupyter ノートブックサーバーを起動し、新しいノートブックを開いて、TensorBoard アプリケーションを実行します。

   ```
   !tar -xf logs.tar
   %load_ext tensorboard
   %tensorboard --logdir logs/fit
   ```

次のアニメーションスクリーンショットは、ステップ 5 ～ 8 を示しています。これは、デバッガー TensorBoard TAR ファイルをダウンロードし、このファイルをローカルデバイス上の Jupyter ノートブックにロードする方法を示しています。

![Debugger TensorBoard ファイルをダウンロードしてローカルマシンにロードする方法を示すアニメーションスクリーンショット。](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-tensorboard.gif)
