本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
偵錯工具內建剖析工具規則清單
使用 Amazon Debuter 提供的偵錯工具內建效能分析 SageMaker 工具規則,並分析訓練模型時收集的指標。偵錯工具內建規則監控對成功執行高效能訓練任務至關重要的各種常見條件。您可以使用 Amazon SageMaker Python SDK
注意
可附加至訓練工作的內建效能分析工具規則數目上限為 20。 SageMaker 偵錯工具可完全管理內建規則,並同步分析您的訓練工作。
重要
若要使用新的除錯程式功能,您需要升級 SageMaker Python SDK 和用SMDebug戶端程式庫。在您的 iPython 核心、Jupyter 筆記本或 JupyterLab 環境中,執行下列程式碼以安裝最新版本的程式庫,然後重新啟動核心。
import sys import IPython !{sys.executable} -m pip install -U sagemaker smdebug IPython.Application.instance().kernel.do_shutdown(True)
剖析工具規則
下列規則是可使用 ProfilerRule.sagemaker
類別方法呼叫的 Debugger 內建規則。
用於產生分析報告的偵錯工具內建規則
有效性範圍 | 內建規則 |
---|---|
任何 SageMaker 訓練工作的效能分析報告 |
適用於分析硬體系統資源使用率 (系統指標) 的偵錯工具內建規則
有效性範圍 | 內建規則 |
---|---|
任何 SageMaker 訓練工作的一般系統監視規則 |
分析架構指標的偵錯工具內建規則
有效性範圍 | 內建規則 |
---|---|
深度學習架構的效能分析規則 (TensorFlow 和 PyTorch) |
警告
為了使用 Amazon 效能分 SageMaker 析 SageMaker工具,偵錯工具會棄用從 TensorFlow 2.11 和 2.0 開始的架構分析功能。 PyTorch 您仍然可以在以前版本的框架中使用該功能,SDKs如下所示。
-
SageMaker SDKPython
-
PyTorch > = 版本 1.6.0,< 版本
-
TensorFlow > = 第 2.3.1 版,
另請參閱2023 年 3 月 16 日。
若要將內建規則與預設參數值搭配使用,請使用下列組態格式:
from sagemaker.debugger import Rule, ProfilerRule, rule_configs rules = [ ProfilerRule.sagemaker(rule_configs.
BuiltInRuleName_1
()), ProfilerRule.sagemaker(rule_configs.BuiltInRuleName_2
()), ... ProfilerRule.sagemaker(rule_configs.BuiltInRuleName_n
()) ]
若要使用內建規則來自訂參數值,請使用下列組態格式:
from sagemaker.debugger import Rule, ProfilerRule, rule_configs rules = [ ProfilerRule.sagemaker( base_config=rule_configs.
BuiltInRuleName
(), rule_parameters={ "key
": "value
" } ) ]
若要尋找 rule_parameters
參數的可用金鑰,請參閱參數描述資料表。
為參數描述資料表下方的每個內建規則提供範例規則組態程式碼。
-
如需使用偵錯工具內建規則的完整指示和範例,請參閱偵錯工具內建規則範例程式碼。
-
如需將內建規則與低階 SageMaker API作業搭配使用的完整指示,請參閱使用 設定偵錯工具 SageMaker API。
ProfilerReport
此規 ProfilerReport 則會叫用監視和效能分析的所有內建規則。它建立一個分析報告,並在觸發個別規則時更新。您可以在訓練任務執行期間或訓練任務完成後下載全方位的分析報告。您可以調整規則參數值,以自訂內建監控和分析規則的敏感度。下列範例程式碼顯示了透過規則調整內建規則參數的 ProfilerReport 基本格式。
rules=[ ProfilerRule.sagemaker( rule_configs.
ProfilerReport
(<BuiltInRuleName>
_<parameter_name>
=value
) ) ]
如果您在沒有任何自訂參數的情況下觸發此 ProfilerReport 規則 (如下列範例程式碼所示),則規 ProfilerReport 則會觸發所有內建規則,以便使用其預設參數值進行監視和效能分析。
rules=[ProfilerRule.sagemaker(rule_configs.ProfilerReport())]
下列範例程式碼顯示如何指定和調整CPUBottleneck規則的cpu_threshold
參數以及IOBottleneck規則的threshold
參數。
rules=[ ProfilerRule.sagemaker( rule_configs.ProfilerReport(
CPUBottleneck_cpu_threshold
=90
,IOBottleneck_threshold
=90
) ) ]
若要探索效能分析工具報告中的內容,請參閱SageMaker 偵錯工具效能分析報告。此外,由於此規則會啟動所有效能分析規則,因此您也可以使用 SageMaker Studio 實驗中的SageMaker 偵錯工具 UI 檢查規則分析狀態。
OverallSystemUsage 規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
<BuiltInRuleName>_<parameter_name> |
可自訂的參數,可調整其他內建監控和分析規則的閾值。 選用 預設值: |
BatchSize
該 BatchSize 規則有助於檢測GPU是否由於批量小而未充分利用。若要偵測此問題,此規則會監視平均CPU使用率、GPU使用率和GPU記憶體使用率。如果開啟CPUGPU、且GPU記憶體的使用率平均較低,可能表示訓練工作可以在較小的執行個體類型上執行,或者可以使用較大的批次大小執行。這種分析不適用於大量過度配置記憶體的架構。但是,增加批次大小可能會導致處理或資料載入瓶頸,因為每次反覆運算都需要更多資料預先處理的時間。
BatchSize 規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
cpu_threshold_p95 |
定義CPU使用率第 95 分位數的臨界值 (以百分比表示)。 選用 有效值:整數 預設值: |
gpu_threshold_p95 |
定義GPU使用率第 95 分位數的臨界值 (以百分比表示)。 選用 有效值:整數 預設值: |
gpu_memory_threshold_p95 |
定義GPU記憶體使用率第 95 分位數的臨界值 (以百分比表示)。 選用 有效值:整數 預設值: |
patience |
定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。 選用 有效值:整數 預設值: |
window |
運算分位數的視窗大小。 選用 有效值:整數 預設值: |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |
CPUBottleneck
此CPUBottleneck規則有助於偵測GPU是否因CPU瓶頸而未充分利用。如果CPU瓶頸數目超過預先定義的臨界值,則規則會傳回 True。
CPUBottleneck規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
threshold |
定義瓶頸時間與總訓練時間比例的閾值。如果比例超過為閾值參數指定的百分比,則規則會將規則狀態切換為 True。 選用 有效值:整數 預設值: |
gpu_threshold |
定義低GPU使用率的臨界值。 選用 有效值:整數 預設值: |
cpu_threshold |
定義高CPU使用率的臨界值。 選用 有效值:整數 預設值: |
patience |
定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。 選用 有效值:整數 預設值: |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |
GPUMemoryIncrease
此GPUMemoryIncrease規則有助於偵測上的記憶體使用量大幅增加GPUs。
GPUMemoryIncrease規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
increase |
定義絕對記憶體增加的閾值。 選用 有效值:整數 預設值: |
patience |
定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。 選用 有效值:整數 預設值: |
window |
運算分位數的視窗大小。 選用 有效值:整數 預設值: |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |
IOBottleneck
此規則有助於偵測GPU是否因為資料 IO 瓶頸而未充分利用。如果 IO 瓶頸數量超過預先定義的閾值,則規則會傳回 True。
IOBottleneck規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
threshold |
定義規則傳回 True 時的閾值。 選用 有效值:整數 預設值: |
gpu_threshold |
定義何時GPU被視為未充分利用的臨界值。 選用 有效值:整數 預設值: |
io_threshold |
定義高 IO 等待時間的閾值。 選用 有效值:整數 預設值: |
patience |
定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。 選用 有效值:整數 預設值: |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |
LoadBalancing
此 LoadBalancing 規則有助於偵測多個工作負載平衡的問題GPUs。
LoadBalancing 規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
threshold |
定義工作負載百分比。 選用 有效值:整數 預設值: |
patience |
定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。 選用 有效值:整數 預設值: |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |
L owGPUUtilization
L owGPUUtilization 規則有助於偵測使GPU用率是低還是有波動的影響。每個工作人員都會對此進GPU行檢查。如果第 95 個分位數低於 threshold_p95 (這表示使用量過低),則規則會傳回 True。如果第 95 個分位數高於 threshold_p95 和第五分位數低於 threshold_p5 (這表示波動),則規則會傳回 True。
L owGPUUtilization 規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
threshold_p95 |
第 95 個分位數的閾值低於該閾值被認為GPU是未充分利用。 選用 有效值:整數 預設值: |
threshold_p5 |
第五分位數的閾值。預設為 10%。 選用 有效值:整數 預設值: |
patience |
定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。 選用 有效值:整數 預設值: |
window |
運算分位數的視窗大小。 選用 有效值:整數 預設值: |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |
OverallSystemUsage
此 OverallSystemUsage 規則會測量每個 Worker 節點的整體系統使用量。規則目前只會彙總每個節點的值,並運算其百分位數。
OverallSystemUsage 規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |
MaxInitializationTime
此 MaxInitializationTime 規則有助於偵測訓練初始化是否花費太多時間。規則會等到第一個步驟可用為止。
MaxInitializationTime 規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
threshold |
定義等待第一個步驟變成可用的閾值 (以分鐘為單位)。 選用 有效值:整數 預設值: |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |
OverallFrameworkMetrics
該 OverallFrameworkMetrics 規則總結了在框架指標上花費的時間,例如向前和向後傳遞以及數據加載。
OverallFrameworkMetrics 規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |
StepOutlier
此 StepOutlier 規則有助於偵測步驟持續時間的異常值。如果有步驟持續時間大於某個時間範圍內整個步驟持續時間之 stddev
sigmas 的極端值,則此規則會傳回 True
。
StepOutlier 規則的參數說明
參數名稱 | 描述 |
---|---|
base_trial |
基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。 必要 有效值:字串 |
stddev |
定義與標準偏差相乘的係數。例如,當步驟持續時間大於或小於標準偏差的 5 倍時,則會依預設調用規則。 選用 有效值:整數 預設值: |
mode |
已在其下儲存步驟的模式,以及應在其上執行規則的模式。每個默認規則將在從EVAL和TRAIN階段的步驟上運行 選用 有效值:整數 預設值: |
n_outliers |
規則傳回 True 之前要忽略多少個極端值 選用 有效值:整數 預設值: |
scan_interval_us |
掃描時間軸檔案的時間間隔。 選用 有效值:整數 預設值: |