本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立偵錯器自訂規則以訓練任務分析
您可以使用偵錯器規則 API 和開放原始碼 smdebug Python 程式庫
建立偵錯器自訂規則的先決條件
若要建立偵錯器自訂規則,您需要下列先決條件。
使用偵錯器用戶端程式庫 smdebug
建立自訂規則 Python 指令碼
smdebug
規則 API 提供一個介面,可設定您自己的自訂規則。下列 python 指令碼範例示範如何自建構自訂規則,CustomGradientRule
。本教學課程自訂規則會監控梯度是否變得太大,並將預設閾值設為 10。自訂規則會在初始化訓練工作時採用由 SageMaker 估算器建立的基礎試驗。
from smdebug.rules.rule import Rule class CustomGradientRule(Rule): def __init__(self, base_trial, threshold=10.0): super().__init__(base_trial) self.threshold = float(threshold) def invoke_at_step(self, step): for tname in self.base_trial.tensor_names(collection="gradients"): t = self.base_trial.tensor(tname) abs_mean = t.reduction_value(step, "mean", abs=True) if abs_mean > self.threshold: return True return False
您可以在相同的 python 指令碼中新增任意多個自訂規則類別,並透過在以下區段建置自訂規則物件,將其部署至任何訓練任務試驗。
使用偵錯器 API 執行您自己的自訂規則
下列程式碼範例顯示如何使用 Amazon SageMaker Python 開發套件
from sagemaker.debugger import Rule, CollectionConfig custom_rule = Rule.custom( name='MyCustomRule', image_uri='759209512951.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rule-evaluator:latest', instance_type='ml.t3.medium', source='path/to/my_custom_rule.py', rule_to_invoke='CustomGradientRule', collections_to_save=[CollectionConfig("gradients")], rule_parameters={"threshold": "20.0"} )
以下清單說明偵錯器 Rule.custom
API 引數。
-
name
(str):根據需要指定自訂規則名稱。 -
image_uri
(str):這是容器映像,具備理解您的自訂規則的邏輯。它會取得並評估您在訓練任務中儲存的指定張量集合。您可以從Amazon SageMaker 調試器註冊表自URLs定義規則評估器中找到開放原始碼 SageMaker 規則評估器影像的清單。 -
instance_type
(str):您需要指定執行個體來建置規則 Docker 容器。這會與訓練容器同時加速運轉執行個體。 -
source
(str):這是您自訂規則指令碼的本機路徑或 Amazon S3 URI。 -
rule_to_invoke
(str):這會在您的自訂規則指令碼中指定特定的 Rule 類別實作。 SageMaker 在規則工作中,一次僅支援一個規則進行評估。 -
collections_to_save
(str):這會指定要儲存哪些張量集合來執行規則。 -
rule_parameters
(字典):這會接受採字典格式的參數輸入。您可以調整自訂規則指令碼中設定的參數。
在您設定custom_rule
物件之後,您可以使用它來建立任何訓練工作 SageMaker 的估算器。請指定 entry_point
至您的訓練指令碼。您不需要對訓練指令碼進行任何變更。
from sagemaker.tensorflow import TensorFlow estimator = TensorFlow( role=sagemaker.get_execution_role(), base_job_name='smdebug-custom-rule-demo-tf-keras', entry_point='path/to/your_training_script.py' train_instance_type='ml.p2.xlarge' ... # debugger-specific arguments below rules = [custom_rule] ) estimator.fit()
有關使用偵錯器自訂規則的更多變化和進階範例,請參閱下列範例筆記本。