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

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

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

使用 Amazon Debug 提供的偵錯工具內建效能分析 SageMaker 工具規則,並分析訓練模型時收集的指標。偵錯工具內建規則監控對成功執行高效能訓練任務至關重要的各種常見條件。您可以使用 Amazon SageMaker Python 開發套件或低階 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 您仍然可以在舊版本的架構和開發套件中使用該功能,如下所示。

  • SageMaker Python 開發套件

  • PyTorch > = 版本 1.6.0,< 2.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 參數和 CPUBottleneck 規則的 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 記憶體使用率。如果 CPU、GPU 和 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 瓶頸而讓 GPU 的使用量過低。如果 CPU 瓶頸數量超過預先定義的閾值,則規則會傳回 True。

CPUBottleneck 規則的參數描述
參數名稱 描述
base_trial

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

必要

有效值:字串

threshold

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

選用

有效值:整數

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

gpu_threshold

定義低 GPU 使用率的閾值。

選用

有效值:整數

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

cpu_threshold

定義高 CPU 利用率的閾值。

選用

有效值:整數

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

patience

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

選用

有效值:整數

預設值:100

scan_interval_us

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

選用

有效值:整數

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

顯示卡 MemoryIncrease

GPU MemoryIncrease 規則有助於偵測 GPU 上記憶體使用量大幅增加。

GPU MemoryIncrease 規則的參數說明
參數名稱 描述
base_trial

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

必要

有效值:字串

increase

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

選用

有效值:整數

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

patience

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

選用

有效值:整數

預設值:100

window

運算分位數的視窗大小。

選用

有效值:整數

預設值:500

scan_interval_us

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

選用

有效值:整數

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

IOBottleneck

此規則有助於偵測 GPU 是否因為資料 IO 瓶頸而讓 GPU 的使用量過低。如果 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 規則有助於偵測多個 GPU 之間的工作負載平衡問題。

LoadBalancing 規則的參數說明
參數名稱 描述
base_trial

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

必要

有效值:字串

threshold

定義工作負載百分比。

選用

有效值:整數

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

patience

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

選用

有效值:整數

預設值:10

scan_interval_us

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

選用

有效值:整數

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

LowGPUUtilization

LowGPUUtilization 規則可協助偵測 GPU 使用率是否較低或受到波動的影響。這是針對每個工作者上的每個 GPU 進行檢查。如果第 95 個分位數低於 threshold_p95 (這表示使用量過低),則規則會傳回 True。如果第 95 個分位數高於 threshold_p95 和第五分位數低於 threshold_p5 (這表示波動),則規則會傳回 True。

LowGPUUtilization 規則的參數描述
參數名稱 描述
base_trial

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

必要

有效值:字串

threshold_p95

第 95 個分位數的閾值,低於此閾值,會將 GPU 視為使用量過低。

選用

有效值:整數

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

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

選用

有效值:整數

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

patience

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

選用

有效值:整數

預設值:1000

window

運算分位數的視窗大小。

選用

有效值:整數

預設值:500

scan_interval_us

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

選用

有效值:整數

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

OverallSystem用法

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

OverallSystemUsage 規則的參數說明
參數名稱 描述
base_trial

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

必要

有效值:字串

scan_interval_us

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

選用

有效值:整數

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

MaxInitialization時間

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

MaxInitializationTime 規則的參數說明
參數名稱 描述
base_trial

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

必要

有效值:字串

threshold

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

選用

有效值:整數

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

scan_interval_us

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

選用

有效值:整數

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

OverallFramework度量

該 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 (以微秒為單位)