本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
具有不同分析選項的預設系統監控和自訂架構分析
本節提供有關支援的分析組態類別的資訊,以及範例組態。您可以透過下列設定檔組態類別來管理架構分析選項:
-
DetailedProfilingConfig
– 使用原生架構描述檔 (TensorFlow 描述檔和 PyTorch 描述檔) 指定目標步驟或時間範圍來描述架構操作。例如,如果使用 TensorFlow,偵錯工具勾點可讓 TensorFlow 分析器收集 TensorFlow特定的架構指標。詳細的分析可讓您在訓練工作的步驟前 (第一步之前)、步驟中以及步驟之間,分析所有架構運算子。 注意
詳細的分析可能會大幅增加GPU記憶體消耗。我們不建議您針對超過一兩個步驟啟用詳細的分析。
-
DataloaderProfilingConfig
– 指定目標步驟或時間範圍,以描述深度學習架構資料載入器程序。偵錯工具收集架構的每個資料載入器事件。 注意
資料載入器分析從資料載入器收集資訊時,可能會降低訓練效能。我們不建議您為超過一兩個步驟啟用資料載入器分析。
Debugger 已為註釋資料預先設定,僅適用於 AWS 深度學習容器的資料載入器程序。偵錯工具無法剖析來自任何其他自訂或外部訓練容器的資料載入器程序。
-
PythonProfilingConfig
– 指定要描述 Python 函數的目標步驟或時間範圍。您也可以在兩個 Python 描述檔: cProfile 和 Pyinstrument 之間進行選擇。 -
cProfile – 標準 Python profiler. 會 cProfile 收集訓練期間呼叫的每個 Python 運算子的資訊。透過 cProfile,偵錯工具可節省每次函數呼叫的累積時間和註釋,提供 Python 函數的完整詳細資訊。例如,在深度學習中,最常呼叫的函數可能是卷積篩選條件和向後傳遞運算子,並 cProfile 描述其中的每個函數。對於 cProfile 選項,您可以進一步選取計時器選項:總時間、CPU時間和非CPU上班時間。雖然您可以CPU即時描述在處理器 ( CPU和 GPU) 上執行的每個函數呼叫,但您也可以使用關閉CPU時間選項來識別 I/O 或網路瓶頸。預設值為總時間,偵錯工具會同時描述 CPU和 CPU非 時間。使用 cProfile,您可以在分析設定檔資料時深入探索每個單一函數。
-
Pyinstrument— Pyinstrument 是一種基於取樣的低額外負載 Python 剖析工具。使用 Pyinstrument 選項,偵錯工具每毫秒對分析事件進行一次取樣。由於 Pyinstrument 會測量經過的壁時鐘時間,而不是CPU時間,因此 Pyinstrument 選項可以比減少分析雜訊 (篩選掉累積速度快的不相關函數呼叫) 以及擷取實際運算密集 (累積速度慢) 的運算子來訓練模型 cProfile 的選項更好。使用 Pyinstrument 可以看到函式呼叫的樹狀,更能理解結構和緩慢的根本原因。
注意
啟用 Python 分析可能會減慢整體訓練時間。 在每次呼叫時, 會 cProfile 描述最常稱為 Python 運算子的 ,因此分析的處理時間會隨著呼叫次數而增加。至於 Pyinstrument,由於其取樣機制,累積分析時間會隨時間增加。
-
下列範例組態顯示當您以指定數值使用不同分析選項時的完整結構。
import time from sagemaker.debugger import (ProfilerConfig, FrameworkProfile, DetailedProfilingConfig, DataloaderProfilingConfig, PythonProfilingConfig, PythonProfiler, cProfileTimer) profiler_config=ProfilerConfig( system_monitor_interval_millis=
500
, framework_profile_params=FrameworkProfile( detailed_profiling_config=DetailedProfilingConfig( start_step=5
, num_steps=1
), dataloader_profiling_config=DataloaderProfilingConfig( start_step=7
, num_steps=1
), python_profiling_config=PythonProfilingConfig( start_step=9
, num_steps=1
, python_profiler=PythonProfiler.CPROFILE
, cprofile_timer=cProfileTimer.TOTAL_TIME
) ) )
如需可用分析選項的詳細資訊,請參閱 Amazon Python DetailedProfilingConfig