本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定偵錯工具內建規則
Amazon SageMaker 偵錯工具的內建規則會分析模型訓練期間發出的張量。 SageMaker偵錯工具提供 Rule
API 作業,可監控訓練工作進度和錯誤,以便成功訓練模型。例如,規則可以偵測漸層是否變得太大或太小、模型是過度擬合還是過度訓練,以及訓練任務是否不會降低損耗功能並改善。要查看可用內建規則的完整清單,請參閱偵錯工具內建規則清單。
在下列主題中,您將學習如何使用 SageMaker 除錯程式內建規則。
搭配預設參數設定使用偵錯工具內建規則
若要在估算器中指定偵錯工具內建規則,您需要設定清單物件。下列範例程式碼顯示列出偵錯工具內建規則的基本結構。
from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.
built_in_rule_name_1
()), Rule.sagemaker(rule_configs.built_in_rule_name_2
()), ... Rule.sagemaker(rule_configs.built_in_rule_name_n
()), ... # You can also append more profiler rules in the ProfilerRule.sagemaker(rule_configs.*()) format. ]
有關預設參數值和內建規則說明的詳細資訊,請參閱偵錯工具內建規則清單。
若要尋找除 SageMaker 錯程式 API 參考,請參閱sagemaker.debugger.rule_configs
sagemaker.debugger.Rule
例如,若要檢查模型的整體訓練效能和進度,請使用下列內建規則組態建構 SageMaker 估算器。
from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.
loss_not_decreasing
()), Rule.sagemaker(rule_configs.overfit
()), Rule.sagemaker(rule_configs.overtraining
()), Rule.sagemaker(rule_configs.stalled_training_rule
()) ]
當您開始訓練任務時,偵錯工具會每 500 毫秒收集一次系統資源使用率資料,並依預設每 500 個步驟收集一次遺失和準確度值。偵錯工具會分析資源使用率,來識別您的模型是否有瓶頸問題。loss_not_decreasing
、overfit
、overtraining
和 stalled_training_rule
會監控您的模型是否在沒有這些訓練問題的情況下,最佳化損耗功能。如果規則偵測到訓練有異常狀況,則規則評估狀態會變更為 IssueFound
。您可以設定自動化動作,例如使用 Amazon E CloudWatch vents 和 AWS Lambda. 如需詳細資訊,請參閱 Amazon SageMaker 調試器規則的操作。
搭配自訂參數值使用偵錯工具內建規則
如果您想要調整內建規則參數值並自訂張量集合 Regex,請設定 ProfilerRule.sagemaker
和 Rule.sagemaker
類別方法的 base_config
和 rule_parameters
參數。對於 Rule.sagemaker
類別方法,您還可以透過 collections_to_save
參數自訂張量集合。使用 CollectionConfig API 設定張量集合提供如何使用 CollectionConfig
類別的指示。
使用下列內建規則的組態範本來自訂參數值。您可以視需要變更規則參數,調整要觸發的規則敏感度。
-
base_config
引數是您呼叫內建規則方法的位置。 -
rule_parameters
引數是調整 偵錯工具內建規則清單 中所列出的內建規則預設金鑰值。 -
collections_to_save
引數透過CollectionConfig
API 進行張量設定,這需要name
和parameters
引數。-
要查找
name
的可用張量集合,請參閱Debugger 內建張量集合。 -
如需可調整的完整清單
parameters
,請參閱偵錯工具 CollectionConfig API。
-
如需有關偵錯程式規則類別、方法和參數的詳細資訊,請參閱 Amazon SageMaker Python 開發套件
from sagemaker.debugger import Rule, ProfilerRule, rule_configs, CollectionConfig rules=[ Rule.sagemaker( base_config=rule_configs.
built_in_rule_name
(), rule_parameters={ "key
": "value
" }, collections_to_save=[ CollectionConfig( name="tensor_collection_name
", parameters={ "key
": "value
" } ) ] ) ]
針對 偵錯工具內建規則清單 中的每個規則提供參數描述和參數值自訂範例。
範例筆記本和程式碼範例,以設定偵錯工具規則
在以下各節中,提供了如何使用偵錯工具規則監視 SageMaker 訓練工作的筆記本和程式碼範例。
偵錯工具內建規則範例筆記本
下列範例筆記本示範如何在使用 Amazon 執行訓練任務時使用偵錯工具內建規則 SageMaker:
在 Studio 中執行範例筆記本時,您可以找到在 [ SageMaker Studio 實驗清單] 索引標籤上建立的訓練工作試驗。例如,如下列螢幕擷取畫面所示,您可以尋找並開啟目前訓練任務的描述試驗元件視窗。在偵錯工具索引標籤上,您可以檢查偵錯程式規則 (vanishing_gradient()
和 loss_not_decreasing()
) 是否平行監控訓練任務工作階段。如需如何在 Studio UI 中尋找訓練工作試用元件的完整說明,請參閱 SageMaker Studio-檢視實驗、試用和試用元件。
![在 SageMaker Studio 中激活調試器內置規則運行培訓工作的圖像](images/debugger/debugger-built-in-rule-studio.png)
在 SageMaker 環境中使用 Debuter 內建規則有兩種方式:在準備好時部署內建規則,或根據需要調整其參數。下列主題示範如何搭配範例程式碼使用內建規則。
偵錯工具內建規則範例程式碼
下列程式碼範例示範如何使用 Rule.sagemaker
方法設定偵錯工具內建規則。若要指定要執行的內建規則,請使用 rules_configs
API 作業呼叫內建規則。要查找 Debugger 內建規則和預設參數值的完整清單,請參閱偵錯工具內建規則清單。
import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import Rule, CollectionConfig, rule_configs # call built-in rules that you want to use. built_in_rules=[ Rule.sagemaker(rule_configs.vanishing_gradient()) Rule.sagemaker(rule_configs.loss_not_decreasing()) ] # construct a SageMaker estimator with the Debugger built-in rules sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-built-in-rules-demo', instance_count=1, instance_type="
ml.p3.2xlarge
", framework_version="2.9.0
", py_version="py39
", # debugger-specific arguments below rules=built_in_rules ) sagemaker_estimator.fit()
注意
偵錯工具內建規則會與您的訓練任務平行執行。訓練任務的內建規則容器數量上限為 20。
如需有關偵錯程式規則類別、方法和參數的詳細資訊,請參閱 Amazon SageMaker Python 開發套件
要查找有關如何調整 Debugger 規則參數的範例,請參閱以下 使用偵錯工具內建規則與參數修改 部分。
使用偵錯工具內建規則與參數修改
下列程式碼範例示範調整參數的內建規則結構。在此範例中,stalled_training_rule
會每 50 個步驟會從訓練任務收集 losses
張量集合,並每 10 個步驟收集評估階段。如果訓練程序開始停止,而且在 120 秒內未收集張量輸出,則 stalled_training_rule
會停止訓練任務。
import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import Rule, CollectionConfig, rule_configs # call the built-in rules and modify the CollectionConfig parameters base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time())) built_in_rules_modified=[ Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ 'threshold': '120', 'training_job_name_prefix': base_job_name_prefix, 'stop_training_on_fire' : 'True' } collections_to_save=[ CollectionConfig( name="losses", parameters={ "train.save_interval": "50" "eval.save_interval": "10" } ) ] ) ] # construct a SageMaker estimator with the modified Debugger built-in rule sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name=base_job_name_prefix, instance_count=1, instance_type="
ml.p3.2xlarge
", framework_version="2.9.0
", py_version="py39
", # debugger-specific arguments below rules=built_in_rules_modified ) sagemaker_estimator.fit()
關於使用 CreateTrainingJob
API 的 Debugger 內建規則的進階組態,請參閱使用 Amazon SageMaker API 配置調試器。