创建用于训练作业分析的 调试程序 自定义规则 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建用于训练作业分析的 调试程序 自定义规则

您可以使用 调试程序 规则 APIs 和开源 smdebug Python 库(它们提供了构建自己的规则容器的工具)创建自定义规则来监控训练作业。

创建 调试程序 自定义规则的先决条件

要创建 调试程序 自定义规则,您需要以下先决条件。

使用 调试程序 客户端库 smdebug 创建自定义规则 Python 脚本

规则 API 提供了一个接口,用于设置您自己的自定义规则。smdebug以下 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 脚本中根据需要添加多个自定义规则类,并通过在以下部分中构建自定义规则对象将它们部署到任何训练作业试验。

使用 调试程序 APIs 运行您自己的自定义规则

以下代码示例显示如何使用 Amazon SageMaker Python SDK 配置自定义规则。此示例假定您在上一步中创建的自定义规则脚本位于“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):这是容器的映像,该容器具有理解自定义规则的逻辑。它提供并评估您保存在训练作业中的指定张量集合。您可以从 SageMaker 中找到开源 Amazon SageMaker 调试程序 自定义规则评估程序的注册表URLs 规则评估程序映像的列表。

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

有关使用 调试程序 自定义规则的更多变体和高级示例,请参阅以下示例笔记本。