SageMaker 除錯器互動報表 - Amazon SageMaker

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

SageMaker 除錯器互動報表

接收由 Debugger 自動產生的分析報告。Debugger 報告提供訓練工作的深入解析,以及改善模型效能的建議。下列螢幕擷取畫面,顯示 Debugger 分析報告的拼貼。如需進一步了解,請參閱SageMaker 除錯器分析報告

注意

您可以在訓練工作執行時或工作完成時,下載 Debugger 報告。在訓練期間,Debugger 會同時更新報告,反映目前規則的評估狀態。只有在訓練工作完成後,您才能下載完整的 Debugger 報告。

重要

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

訓練工作 Debugger 摘要報告範例

SageMaker 除錯器分析報告

對於任何 SageMaker 訓練工作, SageMaker 除錯程式ProfilerReport規則會叫用所有監視和效能分析規則,並將規則分析彙總為完整的報表。按照本指南,使用 Amazon SageMaker Python 開發套件或 S3 主控台下載報告,並了解您可以從效能分析結果中解釋的內容。

重要

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

下載 SageMaker 除錯程式分析報告

在訓練任務執行期間或使用 Amazon SageMaker Python 開發套件和 AWS Command Line Interface (CLI) 完成任務後,下載 SageMaker 除錯程式分析報告。

注意

若要取得 SageMaker 偵錯工具所產生的效能分析報告,您必須使用 SageMaker 偵錯工具提供的內建ProfilerReport規則。若要在訓練工作中啟動規則,請參閱設定內建分析規則

提示

您也可以在 SageMaker Studio 偵錯工具深入解析儀表板中按一下,即可下載報告。不需要任何額外的指令碼,即可下載報告。要瞭解如何從 Studio 下載報告,請參閱開啟 Amazon SageMaker 偵錯工具見解儀表板

Download using SageMaker Python SDK and AWS CLI
  1. 查看目前工作的預設 S3 輸出基底 URI。

    estimator.output_path
  2. 查看目前的工作名稱。

    estimator.latest_training_job.job_name
  3. Debugger 分析報告儲存名稱為 <default-s3-output-base-uri>/<training-job-name>/rule-output。設定規則輸出路徑,如下所示:

    rule_output_path = estimator.output_path + estimator.latest_training_job.job_name + "/rule-output"
  4. 要檢查報告是否已生成,請在 rule_output_path 下使用 aws s3 ls 選定為 --recursive,以遞迴方式列出目錄和文件。

    ! aws s3 ls {rule_output_path} --recursive

    這會傳回文件的完整清單,文件位於一個名為 ProfilerReport-1234567890 的自動生成資料夾內。資料夾名稱是字串的組合:以ProfilerReport及以 ProfilerReport規則啟動時 Unix 時間戳記為基礎的唯一 10 位數標籤。

    規則輸出的範例

    profiler-report.html 是由 Debugger 自動產生的分析報告。其他的檔案還有儲存在 JSON 中的內建規則分析元件,以及用來將元件彙總到報表內的 Jupyter 筆記本。

  5. 使用 aws s3 cp 以遞迴方式下載文件。下列指令會將所有規則輸出檔案儲存到目前工作目錄下的 ProfilerReport-1234567890 資料夾中。

    ! aws s3 cp {rule_output_path} ./ --recursive
    提示

    如果使用 Jupyter 筆記本伺服器,請執行 !pwd 再次檢查目前的工作目錄。

  6. /ProfilerReport-1234567890/profiler-output 目錄下,打開 profiler-report.html。如果使用 JupyterLab,請選擇「信任 HTML」以查看自動產生的偵錯程式分析報告。

    規則輸出的範例
  7. 開啟 profiler-report.ipynb 檔案以探索報告產生的方式。您還可以使用 Jupyter 筆記本檔案來自訂和擴充分析報告。

Download using Amazon S3 Console
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/

  2. 搜尋基礎 S3 儲存貯體。例如,如果您尚未指定任何基本作業名稱,則基礎 S3 儲存貯體名稱應採用下列格式:sagemaker-<region>-111122223333。透過依名稱搜尋儲存貯體欄位查詢基礎 S3 儲存貯體。

    規則輸出 S3 儲存貯體 URI 的範例
  3. 在基礎 S3 儲存貯體中,在依字首搜尋物件輸入欄位中指定工作名稱的字首,藉以查詢訓練工作名稱。選擇訓練工作名稱。

    S3 儲存貯體 URI 規則輸出的範例
  4. 在訓練工作的 S3 儲存貯體中,Debugger 收集的訓練資料必須有三個子資料夾:debug-output/profiler-output/rule-output/。請選擇rule-output/

    規則輸出 S3 儲存貯體 URI 的範例
  5. 規則輸出/資料夾中,選擇 ProfilerReport-123 4567890,然後選擇效能分析檔輸出/資料夾。profiler-output/ 資料夾包含 profiler-report.html (以 html 格式自動產生的分析報告)、profiler-report.ipynb (包含用於產生報告之指令碼的 Jupyter 筆記本),以及一個 profiler-report/ 資料夾 (包含作為報表元件的規則分析 JSON 檔案)。

  6. 選取 profiler-report.html 檔案,選擇 Actions,然後選擇 Download

    規則輸出 S3 儲存貯體 URI 的範例
  7. 在 Web 瀏覽器中開啟下載的 profiler-report.html 檔案。

注意

如果您在未設定 Debugger 特定參數的情況下開始訓練工作,則 Debugger 只會根據系統監視規則產生報告,因為 Debugger 參數並未被設定以儲存框架度量。若要啟用架構度量剖析並接收延伸的偵錯工具分析報告,請在建構或更新 SageMaker 預估器時設定profiler_config參數。

要瞭解如何配置 profiler_config 參數,請參閱配置架構分析

要更新目前訓練工作並啟用框架度量分析,請參閱更新 Debugger 框架分析組態

Debugger 分析報告解析

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

重要

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

訓練工作總結

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

Debugger 分析報告的範例

總結表包含以下資訊:

  • start_time — 訓練工作開始的確切時間。

  • end_time — 訓練工作完成的確切時間。

  • job_duration_in_seconds — 從start_timeend_time的總工作時間。

  • training_loop_start - 第一個 epoch 的第一步開始的確切時間。

  • training_loop_end - 最後一個 epoch 的最後一步完成的確切時間。

  • training_loop_duration_in_seconds - 訓練循環開始至訓練循環結束的總時間。

  • initialization_in_seconds - 將工作初始化所花費的時間。初始化階段涵蓋從 start_timetraining_loop_start 的時間。初始化時間是用來編譯訓練指令碼、啟動訓練指令碼、建立和初始化模型、啟動 EC2 執行個體,以及下載訓練資料。

  • finalization_in_seconds — 完成訓練工作所花費的時間,例如完成模型訓練、更新模型成品以及關閉 EC2 執行個體。完成階段涵蓋從 training_loop_endend_time 的時間。

  • initialization (%)初始化的時間佔總 job_duration_in_seconds 的百分比。

  • training loop (%)訓練循環所花費的時間佔總 job_duration_in_seconds 的百分比。

  • finalization (%) 完成的時間佔總 job_duration_in_seconds 的百分比。

系統使用率統計

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

Debugger 分析報告的範例

Debugger 分析報告包含下列資訊:

  • node — 列出節點的名稱。如果在多節點 (多個 EC2 執行個體) 上使用分散式訓練,則節點名稱的格式為 algo-n

  • metric — Debugger 收集的系統指標:CPU、GPU、CPU 記憶體、GPU 記憶體、I/O 和網路指標。

  • Unit — 指標的單位。

  • max — 每個系統指標的最大值。

  • p99 — 每個系統使用率的第 99 個百分位數。

  • p95 — 每個系統使用率的第 95 個百分位數。

  • p50 — 每個系統利用率的第 50 個百分位數 (中位數)。

  • min — 每個系統指標的最小值。

框架度量摘要

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

Debugger 分析報告的範例

每個圓餅圖分析從以下各方面收集的框架度量:

  • TRAIN/EVAL 階段與其他階段比率 — 顯示在不同訓練階段所花費的時間比率。

  • 向前和向後傳遞的比率 — 顯示訓練循環中向前和向後傳遞所花費的持續時間比率。

  • CPU/GPU 運算子的比率 — 顯示在 CPU 或 GPU上運作的運算子 (例如卷積運算子) 所花費的時間比率。

  • 架構內記錄的一般指標 — 顯示花費在主要架構指標 (例如資料載入、向前和向後傳遞) 的時間比率。

概觀:CPU 運算子

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

Debugger 分析報告的範例
概觀:GPU 運算子

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

Debugger 分析報告的範例

規則摘要

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

Debugger 分析報告的範例

分析訓練循環 — 步驟持續時間

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

Debugger 分析報告的範例

GPU 使用率分析

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

批次大小

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

Debugger 分析報告的範例

CPU 瓶頸

在此區段中,您可以深入探討 CPUBottleneck 規則從您的工作中偵測到的 CPU 瓶頸。規則會檢查 CPU 使用率是否高於 cpu_threshold (預設為 90%),以及 GPU 使用率是否低於 gpu_threshold (預設為 10%)。

Debugger 分析報告的範例

圓餅圖會顯示下列資訊:

  • CPU 瓶頸造成的低 GPU 使用率 — 顯示 GPU 使用率高於和低於閾值的資料點與符合 CPU 瓶頸條件資料點的比率。

  • TRAIN/EVAL 階段與其他階段的比率 — 顯示在不同訓練階段所花費的時間比率。

  • 向前和向後傳遞的比率 — 顯示訓練循環中向前和向後傳遞的持續時間比率。

  • CPU/GPU 運算子的比率 — 顯示 Python 運算子花費在 GPU 和 CPU 上的時間比率,例如資料載入器處理程序和向前及向後傳遞運算子 。

  • 框架中記錄的一般指標 — 顯示主要框架指標,以及在指標上所花費的時間的比率。

I/O 瓶頸

在本區段中,您可以找到 I/O 瓶頸的摘要。此規則會評估 I/O 等待時間和 GPU 使用率,並監控 I/O 要求所花費的時間是否超過總訓練時間的百分比臨界值。這可能顯示出 I/O 瓶頸,GPU 在等待資料從儲存裝置送達。

多 GPU 訓練中的負載平衡

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

Debugger 分析報告的範例

GPU 記憶體分析

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

Debugger 分析報告的範例