

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Debugger 分析報告解析
<a name="debugger-profiling-report-walkthrough"></a>

本節將引導您一個區段一個區段完成 Debugger 分析報告。本分析報告是由監視和效能分析的內建規則所產生。本報告僅顯示發現問題之規則的結果圖表。

**重要**  
報告中的圖表和建議僅用於提供資訊，並非絕對。由您負責對資訊進行您自己獨立的評估。

**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>

在報告的開頭，Debugger 會提供訓練工作的摘要。在本節中，您可以概觀不同訓練階段的持續時間和時間戳記。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/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** － 第一個 epoch 的第一步開始的確切時間。
+ **training\$1loop\$1end** － 最後一個 epoch 的最後一步完成的確切時間。
+ **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>

在本區段中，您可以查看系統使用率統計資料的概觀。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/debugger/debugger-profiling-report-system-usage.png)


Debugger 分析報告包含下列資訊：
+ **node** — 列出節點的名稱。如果在多節點 (多個 EC2 執行個體) 上使用分散式訓練，則節點名稱的格式為 `algo-n`。
+ **metric** — Debugger 收集的系統指標：CPU、GPU、CPU 記憶體、GPU 記憶體、I/O 和網路指標。
+ **Unit** — 指標的單位。
+ **max** — 每個系統指標的最大值。
+ **p99** — 每個系統使用率的第 99 個百分位數。
+ **p95** — 每個系統使用率的第 95 個百分位數。
+ **p50** — 每個系統利用率的第 50 個百分位數 (中位數)。
+ **min** — 每個系統指標的最小值。

## 框架度量摘要
<a name="debugger-profiling-report-walkthrough-framework-metrics"></a>

在本區段中，下列圓餅圖顯示 CPU 和 GPU 上架構執行的明細。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/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 運算子上的絕對累計時間。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-cpu-operators.gif)


### 概觀：GPU 運算子
<a name="debugger-profiling-report-walkthrough-gpu-operators"></a>

本區段提供 GPU 運算子的詳細資訊。此表格顯示時間百分比，以及花費在最常被呼叫的 GPU 運算子的絕對累積時間。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-gpu-operators.gif)


## 規則摘要
<a name="debugger-profiling-report-walkthrough-rules-summary"></a>

在本區段中，Debugger 會彙總所有規則評估結果、分析、規則說明和建議。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/debugger/debugger-profiling-report-rules-summary.png)


## 分析訓練循環 — 步驟持續時間
<a name="debugger-profiling-report-walkthrough-step-durations"></a>

在本區段中，您可以找到每個節點的每個 GPU 核心上的步驟持續時間的詳細統計資料。Debugger 評估平均值、最大值、P99、p95、p50 和步驟持續時間的最小值，並評估步驟異常值。下列長條圖顯示在不同工作者節點和 GPU 上擷取的步驟持續時間。您可以透過選擇右側的圖例來啟用或禁用每個工作者的長條圖。您可以檢查是否存在導致步驟持續時間出現異常值的特定 GPU。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/debugger/debugger-profiling-report-framework-step-duration.gif)


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

本區段顯示 GPU 核心使用率的詳細統計資料，使用率以 LowGPUUtilization 規則為基礎。它還總結了 GPU 使用率的統計資料、平均值、p95 和 p5，以判斷訓練工作是否未充分利用 GPU。

## 批次大小
<a name="debugger-profiling-report-walkthrough-batch-size"></a>

本區段顯示 CPU 總使用率、個別 GPU 使用率和 GPU 記憶體使用紀錄的詳細統計資料。BatchSize 規則會決定您是否需要變更批次大小，以提升 GPU 使用率。您可以檢查批次大小是否太小，導致使用率不足或過大，造成過度使用和記憶體不足的問題。在圖表中，方塊顯示 p25 和 p75 百分位數與中位數的距離範圍 (分別填滿深紫色和亮黃色)，誤差列顯示下限的第 5 個百分位數和上限的第 95 個百分位數。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/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%)。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/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 要求所花費的時間是否超過總訓練時間的百分比臨界值。這可能顯示出 I/O 瓶頸，GPU 在等待資料從儲存裝置送達。

## 多 GPU 訓練中的負載平衡
<a name="debugger-profiling-report-walkthrough-workload-balancing"></a>

在本區段中，您可以識別 GPU 之間工作負載平衡的問題。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/debugger/debugger-profiling-report-workload-balancing.gif)


## GPU 記憶體分析
<a name="debugger-profiling-report-walkthrough-gpu-memory"></a>

在本區段中，您可以分析 GPUMemoryIncrease 規則所收集的 GPU 記憶體使用率。在圖表中，方塊顯示 p25 和 p75 百分位數與中位數的距離範圍 (分別填滿深紫色和亮黃色)，誤差列顯示下限的第 5 個百分位數和上限的第 95 個百分位數。

![\[Debugger 分析報告的範例\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/debugger/debugger-profiling-report-gpu-memory-utilization.png)
