偵錯工具內建剖析工具規則清單 - Amazon SageMaker

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

偵錯工具內建剖析工具規則清單

使用 Amazon Debuter 提供的偵錯工具內建效能分析 SageMaker 工具規則,並分析訓練模型時收集的指標。偵錯工具內建規則監控對成功執行高效能訓練任務至關重要的各種常見條件。您可以使用 Amazon SageMaker Python SDK 或低階 SageMaker API作業呼叫內建效能分析工具規則。使用內建規則無需額外付費。如需有關計費的詳細資訊,請參閱 Amazon SageMaker 定價頁面。

注意

可附加至訓練工作的內建效能分析工具規則數目上限為 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 參數的可用金鑰,請參閱參數描述資料表。

為參數描述資料表下方的每個內建規則提供範例規則組態程式碼。

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>

可自訂的參數,可調整其他內建監控和分析規則的閾值。

選用

預設值:None

BatchSize

該 BatchSize 規則有助於檢測GPU是否由於批量小而未充分利用。若要偵測此問題,此規則會監視平均CPU使用率、GPU使用率和GPU記憶體使用率。如果開啟CPUGPU、且GPU記憶體的使用率平均較低,可能表示訓練工作可以在較小的執行個體類型上執行,或者可以使用較大的批次大小執行。這種分析不適用於大量過度配置記憶體的架構。但是,增加批次大小可能會導致處理或資料載入瓶頸,因為每次反覆運算都需要更多資料預先處理的時間。

BatchSize 規則的參數說明

參數名稱 描述
base_trial

基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。

必要

有效值:字串

cpu_threshold_p95

定義CPU使用率第 95 分位數的臨界值 (以百分比表示)。

選用

有效值:整數

預設值:70 (以百分比表示)

gpu_threshold_p95

定義GPU使用率第 95 分位數的臨界值 (以百分比表示)。

選用

有效值:整數

預設值:70 (以百分比表示)

gpu_memory_threshold_p95

定義GPU記憶體使用率第 95 分位數的臨界值 (以百分比表示)。

選用

有效值:整數

預設值:70 (以百分比表示)

patience

定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。

選用

有效值:整數

預設值:100

window

運算分位數的視窗大小。

選用

有效值:整數

預設值:500

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)

CPUBottleneck

此CPUBottleneck規則有助於偵測GPU是否因CPU瓶頸而未充分利用。如果CPU瓶頸數目超過預先定義的臨界值,則規則會傳回 True。

CPUBottleneck規則的參數說明

參數名稱 描述
base_trial

基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。

必要

有效值:字串

threshold

定義瓶頸時間與總訓練時間比例的閾值。如果比例超過為閾值參數指定的百分比,則規則會將規則狀態切換為 True。

選用

有效值:整數

預設值:50 (以百分比表示)

gpu_threshold

定義低GPU使用率的臨界值。

選用

有效值:整數

預設值:10 (以百分比表示)

cpu_threshold

定義高CPU使用率的臨界值。

選用

有效值:整數

預設值:90 (以百分比表示)

patience

定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。

選用

有效值:整數

預設值:100

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)

GPUMemoryIncrease

此GPUMemoryIncrease規則有助於偵測上的記憶體使用量大幅增加GPUs。

GPUMemoryIncrease規則的參數說明

參數名稱 描述
base_trial

基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。

必要

有效值:字串

increase

定義絕對記憶體增加的閾值。

選用

有效值:整數

預設值:10 (以百分比表示)

patience

定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。

選用

有效值:整數

預設值:100

window

運算分位數的視窗大小。

選用

有效值:整數

預設值:500

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)

IOBottleneck

此規則有助於偵測GPU是否因為資料 IO 瓶頸而未充分利用。如果 IO 瓶頸數量超過預先定義的閾值,則規則會傳回 True。

IOBottleneck規則的參數說明

參數名稱 描述
base_trial

基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。

必要

有效值:字串

threshold 定義規則傳回 True 時的閾值。

選用

有效值:整數

預設值:50 (以百分比表示)

gpu_threshold

定義何時GPU被視為未充分利用的臨界值。

選用

有效值:整數

預設值:70 (以百分比表示)

io_threshold 定義高 IO 等待時間的閾值。

選用

有效值:整數

預設值:50 (以百分比表示)

patience 定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。

選用

有效值:整數

預設值:1000

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)

LoadBalancing

此 LoadBalancing 規則有助於偵測多個工作負載平衡的問題GPUs。

LoadBalancing 規則的參數說明

參數名稱 描述
base_trial

基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。

必要

有效值:字串

threshold

定義工作負載百分比。

選用

有效值:整數

預設值:0.5 (無單位比例)

patience

定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。

選用

有效值:整數

預設值:10

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)

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是未充分利用。

選用

有效值:整數

預設值:70 (以百分比表示)

threshold_p5 第五分位數的閾值。預設為 10%。

選用

有效值:整數

預設值:10 (以百分比表示)

patience

定義規則開始評估前要略過的資料點數量。訓練任務的前幾個步驟通常會顯示大量的資料程序,因此請讓規則保持耐心,並防止過早以您使用此參數指定的特定分析資料數量來調用規則。

選用

有效值:整數

預設值:1000

window

運算分位數的視窗大小。

選用

有效值:整數

預設值:500

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)

OverallSystemUsage

此 OverallSystemUsage 規則會測量每個 Worker 節點的整體系統使用量。規則目前只會彙總每個節點的值,並運算其百分位數。

OverallSystemUsage 規則的參數說明

參數名稱 描述
base_trial

基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。

必要

有效值:字串

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)

MaxInitializationTime

此 MaxInitializationTime 規則有助於偵測訓練初始化是否花費太多時間。規則會等到第一個步驟可用為止。

MaxInitializationTime 規則的參數說明

參數名稱 描述
base_trial

基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。

必要

有效值:字串

threshold

定義等待第一個步驟變成可用的閾值 (以分鐘為單位)。

選用

有效值:整數

預設值:20 (以分鐘為單位)

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)

OverallFrameworkMetrics

該 OverallFrameworkMetrics 規則總結了在框架指標上花費的時間,例如向前和向後傳遞以及數據加載。

OverallFrameworkMetrics 規則的參數說明

參數名稱 描述
base_trial

基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。

必要

有效值:字串

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)

StepOutlier

此 StepOutlier 規則有助於偵測步驟持續時間的異常值。如果有步驟持續時間大於某個時間範圍內整個步驟持續時間之 stddev sigmas 的極端值,則此規則會傳回 True

StepOutlier 規則的參數說明

參數名稱 描述
base_trial

基礎試驗訓練任務名稱。此參數會由 Amazon SageMaker 除錯器自動設定為目前的訓練任務。

必要

有效值:字串

stddev

定義與標準偏差相乘的係數。例如,當步驟持續時間大於或小於標準偏差的 5 倍時,則會依預設調用規則。

選用

有效值:整數

預設值:5 (以分鐘為單位)

mode 已在其下儲存步驟的模式,以及應在其上執行規則的模式。每個默認規則將在從EVAL和TRAIN階段的步驟上運行

選用

有效值:整數

預設值:5 (以分鐘為單位)

n_outliers 規則傳回 True 之前要忽略多少個極端值

選用

有效值:整數

預設值:10

scan_interval_us

掃描時間軸檔案的時間間隔。

選用

有效值:整數

預設值:60000000 (以微秒為單位)