建立偵錯器自訂規則以訓練任務分析 - Amazon SageMaker

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

建立偵錯器自訂規則以訓練任務分析

您可以使用偵錯器規則 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 開發套件設定自訂規則。此範例假設您在上一個步驟中建立的自訂規則指令碼位於 'path/to/my_custom_rule.py'。

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()

有關使用偵錯器自訂規則的更多變化和進階範例,請參閱下列範例筆記本。