

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

# デバッガープロファイリングレポートのチュートリアル
<a name="debugger-profiling-report-walkthrough"></a>

このセクションでは、デバッガープロファイリングレポートをセクション別に具体的に説明します。プロファイリングレポートは、モニタリングおよびプロファイリングのための組み込みルールに基づいて生成されます。レポートには、問題を見つけたルールについてのみ結果プロットが表示されます。

**重要**  
レポートでは、プロットや推奨事項は情報提供を目的として提供されており、決定的なものではありません。お客様は情報を独自に評価する責任を負うものとします。

**Topics**
+ [トレーニングジョブの要約](#debugger-profiling-report-walkthrough-summary)
+ [システム使用統計](#debugger-profiling-report-walkthrough-system-usage)
+ [フレームワークメトリクスの要約](#debugger-profiling-report-walkthrough-framework-metrics)
+ [ルールの概要](#debugger-profiling-report-walkthrough-rules-summary)
+ [トレーニングループの分析 - ステップ期間](#debugger-profiling-report-walkthrough-step-durations)
+ [GPU 使用率分析](#debugger-profiling-report-walkthrough-gpu-utilization)
+ [バッチサイズ](#debugger-profiling-report-walkthrough-batch-size)
+ [CPU のボトルネック](#debugger-profiling-report-walkthrough-cpu-bottlenecks)
+ [I/O のボトルネック](#debugger-profiling-report-walkthrough-io-bottlenecks)
+ [マルチ GPU トレーニングでのロードバランシング](#debugger-profiling-report-walkthrough-workload-balancing)
+ [GPU メモリ分析](#debugger-profiling-report-walkthrough-gpu-memory)

## トレーニングジョブの要約
<a name="debugger-profiling-report-walkthrough-summary"></a>

レポートの冒頭に、デバッガーはトレーニングジョブの要約を記載します。このセクションには、さまざまなトレーニングフェーズの期間とタイムスタンプの概要が記載されています。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-summary.gif)


要約テーブルには次の情報が含まれます。
+ **start\$1time** - トレーニングジョブが開始された正確な時刻。
+ **end\$1time** - トレーニングジョブが終了した正確な時刻。
+ **job\$1duration\$1in\$1seconds** - **start\$1time** から **end\$1time** までの合計トレーニング時間。
+ **training\$1loop\$1start** - 最初のエポックの最初のステップが開始された正確な時刻。
+ **training\$1loop\$1end** - 最後のエポックの最後のステップが終了した正確な時刻。
+ **training\$1loop\$1duration\$1in\$1seconds** - トレーニングループの開始時刻とトレーニングループの終了時刻の間の合計時間。
+ **initialization\$1in\$1seconds** - トレーニングジョブの初期化に費やされた時間。初期化フェーズは、**start\$1time** から **training\$1loop\$1start** までの期間をカバーします。初期化時間は、トレーニングスクリプトのコンパイル、トレーニングスクリプトの開始、モデルの作成と初期化、EC2 インスタンスの開始、トレーニングデータのダウンロードに費やされます。
+ **finalization\$1in\$1seconds** - モデルトレーニングの終了、モデルアーティファクトの更新、EC2 インスタンスの終了など、トレーニングジョブの終了に費やされた時間。ファイナライズフェーズは、**training\$1loop\$1end** から **end\$1time** までの時間をカバーします。
+ **initialization (%)** - 合計の **job\$1duration\$1in\$1seconds** に対する**初期化**に費やされた時間の割合。
+ **training loop (%)** - 合計の **job\$1duration\$1in\$1seconds** に対する**トレーニングループ**に費やされた時間の割合。
+ **finalization (%)** - 合計の **job\$1duration\$1in\$1seconds** に対する**ファイナライズ**に費やされた時間の割合。

## システム使用統計
<a name="debugger-profiling-report-walkthrough-system-usage"></a>

このセクションでは、システム使用率統計の概要を確認できます。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-system-usage.png)


デバッガープロファイリングレポートには次の情報が含まれます。
+ **node** - ノードの名前をリストします。マルチノード (複数の EC2 インスタンス) で分散トレーニングを行う場合、ノード名は `algo-n` の形式になります。
+ **metric** - デバッガーによって収集されるシステムメトリクス (CPU、GPU、CPU メモリ、GPU メモリ、I/O、ネットワークメトリクス) 。
+ **unit** – システムメトリクスの単位。
+ **max** - 各システムメトリクスの最大値。
+ **p99** - 各システム使用率の 99 番目のパーセンタイル。
+ **p95** - 各システム使用率の 95 番目のパーセンタイル。
+ **p50** - 各システム使用率の 50 番目のパーセンタイル (中央値)。
+ **最小** - 各システムメトリクスの最小値。

## フレームワークメトリクスの要約
<a name="debugger-profiling-report-walkthrough-framework-metrics"></a>

このセクションでは、CPU と GPU におけるフレームワークオペレーションの内訳を次の円グラフに示します。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-metrics-summary.gif)


各円グラフは、収集されたフレームワークメトリクスを次のようにさまざまな側面で分析します。
+ **TRAIN/EVAL フェーズと他のフェーズの比率** - 異なるトレーニングフェーズに費やされた時間の比率を示します。
+ **フォワードパスとバックパスの比率** - トレーニングループでフォワードパスとバックパスに費やされた時間の比率を示します。
+ **CPU/GPU 演算子の比率** - 畳み込み演算子など、CPU または GPU で実行される演算子に費やされた時間の比率を示します。
+ **フレームワークで記録された一般的なメトリクス** - データロード、フォワードパス、バックワードパスなど、主要なフレームワークメトリクスに費やされた時間の比率を示します。

### 概要: CPU 演算子
<a name="debugger-profiling-report-walkthrough-cpu-operators"></a>

このセクションには、CPU 演算子の詳細な情報が記載されています。表は、最も頻繁に呼び出される CPU 演算子に費やされた時間の割合と絶対累積時間を示しています。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-cpu-operators.gif)


### 概要: GPU 演算子
<a name="debugger-profiling-report-walkthrough-gpu-operators"></a>

このセクションには、GPU 演算子の詳細な情報が記載されています。表は、最も頻繁に呼び出される GPU 演算子に費やされた時間の割合と絶対累積時間を示しています。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-gpu-operators.gif)


## ルールの概要
<a name="debugger-profiling-report-walkthrough-rules-summary"></a>

このセクションにはデバッガーが、ルールの評価結果、分析、ルールの説明、提案のすべてをまとめます。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-rules-summary.png)


## トレーニングループの分析 - ステップ期間
<a name="debugger-profiling-report-walkthrough-step-durations"></a>

このセクションでは、各ノードの各 GPU コアにおけるステップ期間の詳細な統計を確認できます。デバッガーは、ステップ期間の平均値、最大値、p99、p95、p50、最小値を評価し、ステップの外れ値を評価します。次のヒストグラムは、さまざまなワーカーノードと GPU でキャプチャされたステップ期間を示しています。右側の凡例を選択すると、各ワーカーのヒストグラムを有効または無効にできます。ステップ期間の外れ値を生じさせている特定の GPU があるかどうかをチェックできます。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-step-duration.gif)


## GPU 使用率分析
<a name="debugger-profiling-report-walkthrough-gpu-utilization"></a>

このセクションには、LowGPUUtilization ルールに基づく GPU コア使用率の詳細な統計が記載されています。また、トレーニングジョブが GPU を十分に活用しているかどうかを判断するために、GPU 使用率の統計、平均、p95、p5 を要約します。

## バッチサイズ
<a name="debugger-profiling-report-walkthrough-batch-size"></a>

このセクションには、合計 CPU 使用率、個々の GPU 使用率、GPU メモリフットプリントの詳細な統計が記載されています。BatchSize ルールは、GPU をより有効に活用するためにバッチサイズを変更する必要があるかどうかを判断します。バッチサイズが小さすぎて使用率が低くなったり、大きすぎて使用率が過大になりメモリ不足に陥ったりしていないかどうかをチェックできます。プロットにおきボックスは、中央値 (p50) から p25 および p75 までのパーセンタイル範囲 (それぞれ濃い紫と明るい黄色で塗りつぶされている) を示し、エラーバーは下限の 5 パーセンタイルと上限の 95 パーセンタイルを示します。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-batch-size.png)


## CPU のボトルネック
<a name="debugger-profiling-report-walkthrough-cpu-bottlenecks"></a>

このセクションでは、CPUBottleneck ルールがトレーニングジョブから検出した CPU のボトルネックをドリルダウンできます。このルールは、CPU 使用率が `cpu_threshold` (デフォルトでは 90%) を上回っているかどうかと、GPU 使用率が `gpu_threshold` (デフォルトでは 10%) を下回っているかどうかをチェックします。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-cpu-bottlenecks.png)


円グラフには次の情報が表示されます。
+ **CPU のボトルネックによる GPU 使用率の低下** - GPU 使用率がしきい値を上回るおよび下回るデータポイントの比率と、CPU のボトルネック基準に一致するデータポイントの比率を示します。
+ **TRAIN/EVAL フェーズと他のフェーズの比率** - 異なるトレーニングフェーズに費やされた時間の比率を示します。
+ **フォワードパスとバックパスの比率** - トレーニングループでフォワードパスとバックパスに費やされた時間の比率を示します。
+ **CPU/GPU 演算子の比率** - データローダープロセス、フォワードパス演算子、バックワードパス演算子など、Python 演算子によって GPU と CPU に費やされた時間の比率を示します。
+ **フレームワークに記録された一般的なメトリクス** - 主要なフレームワークメトリクスと、メトリクスに費やされた時間の比率を示します。

## I/O のボトルネック
<a name="debugger-profiling-report-walkthrough-io-bottlenecks"></a>

このセクションには、I/O のボトルネックの要約が示されます。このルールは、I/O 待機時間と GPU 使用率を評価し、I/O リクエストに費やされた時間が合計トレーニング時間のしきい値のパーセントを超えたかどうかをモニタリングします。これは、GPU がストレージからのデータの到着を待っている場合の I/O ボトルネックを示している可能性があります。

## マルチ GPU トレーニングでのロードバランシング
<a name="debugger-profiling-report-walkthrough-workload-balancing"></a>

このセクションでは、すべての GPU にわたるワークロードバランシングの問題を特定できます。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-workload-balancing.gif)


## GPU メモリ分析
<a name="debugger-profiling-report-walkthrough-gpu-memory"></a>

このセクションでは、GPUMemoryIncrease ルールによって収集された GPU メモリ使用率を分析できます。プロットにおきボックスは、中央値 (p50) から p25 および p75 までのパーセンタイル範囲 (それぞれ濃い紫と明るい黄色で塗りつぶされている) を示し、エラーバーは下限の 5 パーセンタイルと上限の 95 パーセンタイルを示します。

![\[デバッガープロファイリングレポートの例\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/debugger/debugger-profiling-report-gpu-memory-utilization.png)
