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

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

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

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

注意

您可以連接至訓練任務的內建分析器規則數目上限為 20。 SageMaker Debugger 會完整管理內建規則,並同步分析訓練任務。

重要

若要使用新的偵錯工具功能,您需要升級 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 Profiler, SageMaker AI Debugger 從 TensorFlow 2.11 和 PyTorch 2.0 開始取代架構分析功能。您仍然可以在舊版架構和 中使用此功能SDKs,如下所示。

  • SageMaker Python SDK <= 2.130.0 版

  • PyTorch >= v1.6.0、< v2.0

  • TensorFlow >= v2.3.1、< v2.11

另請參閱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 SageMaker Studio Experiments 中的偵錯工具 UI 來檢查規則分析狀態。

OverallSystemUsage 規則的參數描述

參數名稱 描述
base_trial

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

必要

有效值:字串

<BuiltInRuleName>_<parameter_name>

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

選用

預設值:None

BatchSize

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

BatchSize 規則的參數描述

參數名稱 描述
base_trial

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

必要

有效值:字串

cpu_threshold_p95

以百分比定義第 95 個分位數的使用CPU率閾值。

選用

有效值:整數

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

gpu_threshold_p95

以百分比定義第 95 個分位數的使用GPU率閾值。

選用

有效值:整數

預設值: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 Debugger 目前的訓練任務。

必要

有效值:字串

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 Debugger 目前的訓練任務。

必要

有效值:字串

increase

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

選用

有效值:整數

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

patience

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

選用

有效值:整數

預設值:100

window

運算分位數的視窗大小。

選用

有效值:整數

預設值:500

scan_interval_us

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

選用

有效值:整數

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

IOBottleneck

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

IOBottleneck 規則的參數描述

參數名稱 描述
base_trial

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

必要

有效值:字串

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 Debugger 目前的訓練任務。

必要

有效值:字串

threshold

定義工作負載百分比。

選用

有效值:整數

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

patience

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

選用

有效值:整數

預設值:10

scan_interval_us

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

選用

有效值:整數

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

LowGPUUtilization

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

L owGPUUtilization 規則的參數描述

參數名稱 描述
base_trial

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

必要

有效值:字串

threshold_p95

第 95 個四分位數的閾值低於此閾值GPU,被視為未充分利用。

選用

有效值:整數

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

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

選用

有效值:整數

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

patience

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

選用

有效值:整數

預設值:1000

window

運算分位數的視窗大小。

選用

有效值:整數

預設值:500

scan_interval_us

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

選用

有效值:整數

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

OverallSystemUsage

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

OverallSystemUsage 規則的參數描述

參數名稱 描述
base_trial

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

必要

有效值:字串

scan_interval_us

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

選用

有效值:整數

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

MaxInitializationTime

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

MaxInitializationTime 規則的參數描述

參數名稱 描述
base_trial

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

必要

有效值:字串

threshold

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

選用

有效值:整數

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

scan_interval_us

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

選用

有效值:整數

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

OverallFrameworkMetrics

此 OverallFrameworkMetrics 規則摘要說明架構指標所花費的時間,例如向前和向後傳遞,以及資料載入。

OverallFrameworkMetrics 規則的參數描述

參數名稱 描述
base_trial

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

必要

有效值:字串

scan_interval_us

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

選用

有效值:整數

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

StepOutlier

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

StepOutlier 規則的參數描述

參數名稱 描述
base_trial

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

必要

有效值:字串

stddev

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

選用

有效值:整數

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

mode 已在其下儲存步驟的模式,以及應在其上執行規則的模式。根據預設規則, 會在 EVAL和 TRAIN階段的步驟上執行

選用

有效值:整數

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

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

選用

有效值:整數

預設值:10

scan_interval_us

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

選用

有效值:整數

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