调试程序内置规则列表 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

调试程序内置规则列表

使用 Amazon SageMaker 调试器提供的调试器内置规则,并分析训练模型时发出的张量。调试器内置规则监控对训练作业至关重要的各种常见情况。您可以使用内置规则调用Amazon SageMaker Python 开发工具包或低级别 SageMaker API 操作。根据您选择的深度学习框架,内置规则有四个有效性范围,如下表所示。

注意

培训作业的内置规则的最大数量为 20ProfilerRule20 用于Rule. SageMaker 调试器完全管理内置规则并行分析你的训练作业。有关计费的更多信息,请参阅Amazon SageMaker Studio 不收取额外费用的 部分Amazon SageMaker 定价页.

重要

要使用新的调试器功能,您需要升级 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

以下规则是调试器内置规则,可以使用ProfilerRule.sagemaker类方法。

用于生成分析报告的调试器内置规则
有效性范围 内置规则
任何 SageMaker 培训作业的分析报告
调试器用于监视硬件系统资源利用率的内置规则(系统指标)
有效性范围 内置规则
任何 SageMaker 培训作业的通用系统监控规则
用于分析框架指标的调试器内置规则
有效性范围 内置规则
深度学习框架的分析规则(TensorFlow 和 PyTorch)

调试程序规则

以下规则是调试器内置规则,可以使用Rule.sagemaker类方法。

用于生成训练报告的调试器内置规则
有效性范围 内置规则
SageMaker xgBoost 培训工作的培训报告
调试器用于调试模型训练数据(输出张量)的内置规则
有效性范围 内置规则
深度学习框架(TensorFlow、MXNet 和 PyTorch)
深度学习框架(TensorFlow、MXNet 和 PyTorch)和 XGBoost 算法
深度学习应用程序
XGBoost 算法

使用具有默认参数值的内置规则— 采用以下配置格式:

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

使用内置规则来自定义参数值— 采用以下配置格式:

from sagemaker.debugger import Rule, ProfilerRule, rule_configs rules = [ ProfilerRule.sagemaker( base_config=rule_configs.BuiltInRuleName(), rule_parameters={ "key": "value" } ) 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" } ) ] ) ]

查找可用的密钥rule_parameters参数,请参阅参数描述表。

参数描述表下方为每个内置规则提供了示例规则配置代码。

剖析器报告

ProfilerReport 规则调用所有内置规则来执行监控和分析。它会创建一个性能分析报告,并在触发单个规则时进行更新。您可以在训练作业运行期间或培训作业完成后下载全面的分析报告。您可以调整规则参数值以自定义内置监视和分析规则的敏感度。以下示例代码显示了通过 ProfilerREPORT 规则调整内置规则参数的基本格式。

rules=[ ProfilerRule.sagemaker( rule_configs.ProfilerReport( <BuiltInRuleName>_<parameter_name> = value ) ) ]

如果您在没有任何自定义参数的情况下触发此 ProfilerPORT 规则(如以下示例代码所示),则 ProfilerPORT 规则将触发所有内置规则,以便使用默认参数值进行监视和分析。

rules=[ProfilerRule.sagemaker(rule_configs.ProfilerReport())]

以下示例代码说明了如何指定和调整 CPUBalyeck 规则。cpu_threshold参数和 IO瓶颈规则threshold参数。

rules=[ ProfilerRule.sagemaker( rule_configs.ProfilerReport( CPUBottleneck_cpu_threshold = 90, IOBottleneck_threshold = 90 ) ) ]

整体系统使用规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

<BuiltInRuleName>_<parameter_name>

可自定义参数来调整其他内置监控和分析规则的阈值。

可选

默认值:None

BatchSize

BatchSize 规则有助于检测 GPU 是否由于批量大小而未充分利用。要检测此问题,此规则将监视平均 CPU 利用率、GPU 利用率和 GPU 内存利用率。如果 CPU、GPU 和 GPU 内存的使用率平均较低,则可能表明训练作业可以在较小的实例类型上运行,也可以使用更大的批量运行。这种分析不适用于大量分配内存过度的框架。但是,增加批量大小可能会导致处理或数据加载瓶颈,因为每次迭代都需要更长的数据预处理时间。

BatchSize 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

cpu_threshold_p95

定义 CPU 利用率 95 分位数的阈值(以百分比为单位)。

可选

有效值:整数

默认值:70(百分比)

gpu_threshold_p95

定义 GPU 利用率第 95 分位数的阈值(以百分比为单位)。

可选

有效值:整数

默认值:70(百分比)

gpu_memory_threshold_p95

定义 GPU 内存使用率第 95 分位数的阈值(以百分比为单位)。

可选

有效值:整数

默认值:70(百分比)

patience

定义规则开始评估之前要跳过的数据点数。培训作业的前几个步骤通常显示大量的数据流程,因此请保持耐心,并防止使用您使用此参数指定的给定数量的分析数据过早调用规则。

可选

有效值:整数

默认值:100

window

用于计算分位数的窗口大小。

可选

有效值:整数

默认值:500

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

CPU瓶颈

CPU瓶颈规则有助于检测 GPU 是否由于 CPU 瓶颈而未充分利用。如果 CPU 瓶颈数超过预定义的阈值,则规则返回 True。

CPUReck 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold

定义瓶颈时间与总训练时间的比例的阈值。如果比例超过为阈值参数指定的百分比,则规则会将规则状态切换为 True。

可选

有效值:整数

默认值:50(百分比)

gpu_threshold

定义 GPU 利用率低的阈值。

可选

有效值:整数

默认值:10(百分比)

cpu_threshold

定义 CPU 利用率高的阈值。

可选

有效值:整数

默认值:90(百分比)

patience

定义规则开始评估之前要跳过的数据点数。培训作业的前几个步骤通常显示大量的数据流程,因此请保持耐心,并防止使用您使用此参数指定的给定数量的分析数据过早调用规则。

可选

有效值:整数

默认值:100

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

gpumMory 增加

gpumemoryReader 规则有助于检测 GPU 上的内存使用量大幅增加。

Gpumemory 增加规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

increase

定义绝对内存增加的阈值。

可选

有效值:整数

默认值:10(百分比)

patience

定义规则开始评估之前要跳过的数据点数。培训作业的前几个步骤通常显示大量的数据流程,因此请保持耐心,并防止使用您使用此参数指定的给定数量的分析数据过早调用规则。

可选

有效值:整数

默认值:100

window

用于计算分位数的窗口大小。

可选

有效值:整数

默认值:500

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

IO瓶颈

此规则有助于检测 GPU 是否由于数据 IO 瓶颈而未充分利用。如果 IO 瓶颈数超过预定义的阈值,则规则返回 True。

IOBakeck 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold 定义规则返回 True 时的阈值。

可选

有效值:整数

默认值:50(百分比)

gpu_threshold

定义何时认为 GPU 被认为未充分利用的阈值。

可选

有效值:整数

默认值:70(百分比)

io_threshold 定义高 IO 等待时间的阈值。

可选

有效值:整数

默认值:50(百分比)

patience 定义规则开始评估之前要跳过的数据点数。培训作业的前几个步骤通常显示大量的数据流程,因此请保持耐心,并防止使用您使用此参数指定的给定数量的分析数据过早调用规则。

可选

有效值:整数

默认值:1000

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

负载均衡

LoadBalancing 规则有助于检测多个 GPU 之间的工作负载均衡中的问题。

负载平衡规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold

定义工作负载百分比。

可选

有效值:整数

默认值:0.5(无单位比例)

patience

定义规则开始评估之前要跳过的数据点数。培训作业的前几个步骤通常显示大量的数据流程,因此请保持耐心,并防止使用您使用此参数指定的给定数量的分析数据过早调用规则。

可选

有效值:整数

默认值:10

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

GPU 利用率低

LowGPU 利用率规则有助于检测 GPU 利用率是低还是受到波动影响。对于每个工作线程上的每个 GPU,都会检查这个 如果第 95 个分位数低于阈hold_p95 表示利用率不足,则规则返回 True。如果第 95 个分位数高于 tarhold_p95 且第 5 个分位数低于 tarhold_p5,则规则返回 true,这表示波动。

低 GPU 利用率规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold_p95

95 分位数的阈值,低于此阈值,GPU 被认为未充分利用。

可选

有效值:整数

默认值:70(百分比)

threshold_p5 第 5 个分位数的阈值。默认值为 10%。

可选

有效值:整数

默认值:10(百分比)

patience

定义规则开始评估之前要跳过的数据点数。培训作业的前几个步骤通常显示大量的数据流程,因此请保持耐心,并防止使用您使用此参数指定的给定数量的分析数据过早调用规则。

可选

有效值:整数

默认值:1000

window

用于计算分位数的窗口大小。

可选

有效值:整数

默认值:500

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

整体系统使用情况

OverallSystemUse 规则衡量每个工作节点的整体系统使用率。该规则目前仅聚合每个节点的值并计算其百分位数。

整体系统使用规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

最大初始化时间

maxInitialize Time 规则有助于检测训练初始化是否花费了太长的时间。规则一直等到第一步可用。

MaxInitialize 时间规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold

定义等待第一步可用的阈值(以分钟为单位)。

可选

有效值:整数

默认值:20(分钟)

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

整体框架指标

OverallFramerameMetrics 规则总结了花在框架指标上的时间,例如向前和向后传递以及数据加载。

总体框架指标规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

stepOtLier

stepOutLier 规则有助于检测步长持续时间内的异常值。此规则返回True如果有异常值的步长持续时间大于stddev在一个时间范围内整个步骤持续时间的 sigmas。

StepOutlier 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

stddev

定义将标准差乘以的因子。例如,当步长持续时间大于或小于标准差的 5 倍时,默认情况下会调用该规则。

可选

有效值:整数

默认值:5(分钟)

mode 已保存步骤的模式以及应在哪个规则上运行的模式。默认规则将在从 EVAL 和 TRAIN 阶段开始运行的步骤

可选

有效值:整数

默认值:5(分钟)

n_outliers 规则返回 True 之前要忽略多少异常值

可选

有效值:整数

默认值:10

scan_interval_us

扫描时间轴文件的时间间隔。

可选

有效值:整数

默认值:60000000(以微秒为单位)

CreateexGBoost 报告

CreatexgBoost报告规则收集 xgBoost 训练作业的输出张量,并自动生成全面的训练报告。您可以在训练作业运行期间或培训作业完成后下载全面的概况分析报告,并检查培训进度或培训作业的最终结果。默认情况下,CreatexgBoostReport 规则收集以下输出张量:

  • hyperparameters— 在第一步保存

  • metrics— 每 5 个步骤节省损失和准确性

  • feature_importance— 每 5 个步骤保存

  • predictions— 每 5 个步骤保存

  • labels— 每 5 个步骤保存

CreatexGBoost 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

rules=[ Rule.sagemaker( rule_configs.create_xgboost_report() ) ]

DeadRelu

此规则检测试验中的修正线性单元 (ReLU) 激活函数的百分比是否因它们的激活活动已降至阈值以下而被视为死亡。如果层中非活跃 ReLU 的百分比大于非活跃 ReLU 的 threshold_layer 值,则该规则会返回 True

DeadRelu 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

tensor_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:".*relu_output"

threshold_inactivity

定义一个活动级别,低于该级别的 ReLU 将被视为死亡。ReLU 可能在试验开始时处于活动状态,然后在训练过程中慢慢死亡。如果 ReLU 处于活动状态并低于 threshold_inactivity,则将其视为死亡。

可选

有效值:Float

默认值:1.0(百分比)

threshold_layer

如果层中非活跃 ReLU 百分比大于 threshold_layer,则返回 True

如果层中非活跃 ReLU 百分比小于 threshold_layer,则返回 False

可选

有效值:Float

默认值:50.0(百分比)

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.dead_relu(), rule_parameters={ "tensor_regex": ".*relu_output|.*ReLU_output", "threshold_inactivity": "1.0", "threshold_layer": "50.0" } collections_to_save=[ CollectionConfig( name="custom_relu_collection", parameters={ "include_regex: ".*relu_output|.*ReLU_output", "save_interval": "500" } ) ] ) ]

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

注意

此规则不适用于 XGBoost 算法。

ExplodingTensor

此规则检测训练期间发射的张量是否具有非有限值,即无限值或 NaN(不是数字)。如果检测到非有限值,则该规则返回 True

ExplodingTensor 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

collection_names

该规则检查其张量的集合名称列表。

可选

有效值:字符串

默认值:None

tensor_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串

默认值:None

only_nan

如果为 True,则仅监视 base_trial 张量是否为 NaN 值,而不监视无穷大。

如果为 False,则将 NaN 和无穷大都视为爆炸值并监视两者。

可选

默认值:False

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.exploding_tensor(), rule_parameters={ "tensor_regex": ".*gradient", "only_nan": "False" } collections_to_save=[ CollectionConfig( name="gradients", parameters={ "save_interval": "500" } ) ] ) ]

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

注意

此规则不适用于 XGBoost 算法。

PoorWeightInitialization

此规则检测模型参数是否初始化不当。

良好的初始化会破坏神经网络中权重和梯度的对称性,并在各层之间保持相应的激活方差。否则,神经网络无法有效地学习。诸如 Xavier 之类的初始化程序旨在使激活之间的方差保持恒定,这对于训练非常深的神经网络尤其重要。初始化太小可能会导致梯度消失。初始化过大可能会导致梯度爆炸。此规则检查各层激活输入的方差、梯度分布以及初始步骤的损失收敛性,确定神经网络是否初始化不当。

PoorWeightInitialization 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

activation_inputs_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串

默认值:".*relu_input"

threshold

如果每个层的权重的最小方差和最大方差之间的比率超过某个步骤中的 threshold,则该规则返回 True

可选

有效值:Float

默认值:10.0

distribution_range

如果梯度分布的第 5 百分位数和第 95 百分位数之间的最小差值小于 distribution_range,则该规则返回 True

可选

有效值:Float

默认值:0.001

patience

等到损失被认为不再减少的步骤数。

可选

有效值:整数

默认值:5

steps

此规则分析的步骤数。您通常只需要检查前几次迭代。

可选

有效值:Float

默认值:10

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.poor_weight_initialization(), rule_parameters={ "activation_inputs_regex": ".*relu_input|.*ReLU_input", "threshold": "10.0", "distribution_range": "0.001", "patience": "5", "steps": "10" }, collections_to_save=[ CollectionConfig( name="custom_relu_collection", parameters={ "include_regex": ".*relu_input|.*ReLU_input", "save_interval": "500" } ) ] ) ]

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

注意

此规则不适用于 XGBoost 算法。

SaturatedActivation

此规则检测 tanh 和 sigmoid 激活层是否正在变得饱和。当层的输入接近激活函数的最大或最小值时,激活层将饱和。tanh 和 sigmoid 激活函数的最小和最大值由它们各自的 min_thresholdmax_thresholds 值定义。如果节点的活动降到 threshold_inactivity 百分比以下,则将其视为饱和。如果超过 threshold_layer 百分比的节点处于饱和状态,则该规则返回 True

SaturatedActivation 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

collection_names

该规则检查其张量的集合名称列表。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:无

tensor_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串

默认值:".*tanh_input|.*sigmoid_input".

threshold_tanh_min

定义 tanh 激活函数输入极值的最小和最大阈值,定义为:。(min_threshold, max_threshold). 默认值是根据梯度消失阈值 0.0000001 确定的。

可选

有效值:Float

默认值:-9.4999

threshold_tanh_max

定义 tanh 激活函数输入极值的最小和最大阈值,定义为:。(min_threshold, max_threshold). 默认值是根据梯度消失阈值 0.0000001 确定的。

可选

有效值:Float

默认值:9.4999

threshold_sigmoid_min

定义 sigmoid 激活函数输入极值的最小和最大阈值,定义为:。(min_threshold, max_threshold). 默认值是根据梯度消失阈值 0.0000001 确定的。

可选

有效值:Float

默认值:-23

threshold_sigmoid_max

定义 sigmoid 激活函数输入极值的最小和最大阈值,定义为:。(min_threshold, max_threshold). 默认值是根据梯度消失阈值 0.0000001 确定的。

可选

有效值:Float

默认值:16.99999

threshold_inactivity

不活动百分比,低于该百分比的激活层被视为饱和。激活可能在试验开始时处于活动状态,然后在训练过程中逐渐变得不那么活跃。

可选

有效值:Float

默认值:1.0

threshold_layer

如果层中的饱和激活数大于 threshold_layer 百分比,则返回 True

如果层中的饱和激活数小于 threshold_layer 百分比,则返回 False

可选

有效值:Float

默认值:50.0

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.saturated_activation(), rule_parameters={ "tensor_regex": ".*tanh_input|.*sigmoid_input", "threshold_tanh_min": "-9.4999", "threshold_tanh_max": "9.4999", "threshold_sigmoid_min": "-23", "threshold_sigmoid_max": "16.99999", "threshold_inactivity": "1.0", "threshold_layer": "50.0" }, collections_to_save=[ CollectionConfig( name="custom_activations_collection", parameters={ "include_regex": ".*tanh_input|.*sigmoid_input" "save_interval": "500" } ) ] ) ]

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

注意

此规则不适用于 XGBoost 算法。

VanishingGradient

该规则检测试验中的梯度是否变得非常小或降至零幅度。如果梯度绝对值的平均值低于指定的 threshold,则该规则返回 True

VanishingGradient 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold 确定梯度消失的值。

可选

有效值:Float

默认值:0.0000001

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.vanishing_gradient(), rule_parameters={ "threshold": "0.0000001" }, collections_to_save=[ CollectionConfig( name="gradients", parameters={ "save_interval": "500" } ) ] ) ]

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

注意

此规则不适用于 XGBoost 算法。

WeightUpdateRatio

此规则跟踪训练期间更新与权重的比率,并检测该比率是过大还是过小。如果更新与权重的比率大于 large_threshold value 或者此比率小于 small_threshold,则该规则返回 True

当更新与梯度相当时,训练条件是最佳的。过大的更新会使权重远离最佳值,而过小的更新会导致收敛速度非常慢。此规则要求权重可用于两个训练步骤,train.save_interval需要设置等于num_steps.

WeightUpdateRatio 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

num_steps

该规则检查以确定张量是否已更改的步骤数。

要比较权重比率的步骤数。如果未传递任何值,则默认情况下,将针对当前步骤和紧接的上一个保存步骤运行该规则。如果您通过传递此参数的值来覆盖默认值,则会在步骤之间进行比较。s然后一步>= s - num_steps.

可选

有效值:整数

默认值:None

large_threshold

在规则返回之前,要执行加权的更新比率可以取的最大值。True.

可选

有效值:Float

默认值:10.0

small_threshold

要执行加权的更新比率可以取的最小值,低于该值时规则将返回。True.

可选

有效值:Float

默认值:0.00000001

epsilon

一个小常量,用于确保在计算要执行加权的更新时,调试器不除以零。

可选

有效值:Float

默认值:0.000000001

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.weight_update_ratio(), rule_parameters={ "num_steps": "100", "large_threshold": "10.0", "small_threshold": "0.00000001", "epsilon": "0.000000001" }, collections_to_save=[ CollectionConfig( name="weights", parameters={ "train.save_interval": "100" } ) ] ) ]

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

注意

此规则不适用于 XGBoost 算法。

AllZero

此规则检测张量值的全部或值的指定百分比是否为零。

此规则可应用于受支持的深度学习框架(TensorFlow、MXNet 和 PyTorch)之一,也可以应用于 XGBoost 算法。必须指定 collection_namestensor_regex 参数。如果指定了这两个参数,则规则将检查两个集合内张量的并集。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

AllZero 的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

collection_names

该规则检查其张量的集合名称列表。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:None

tensor_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:None

threshold

指定张量中必须为零才能调用此规则的值的百分比。

可选

有效值:Float

默认值:100(以百分比为单位)

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.all_zero(), rule_parameters={ "tensor_regex": ".*", "threshold": "100" }, collections_to_save=[ CollectionConfig( name="all", parameters={ "save_interval": "500" } ) ] ) ]

ClassImbalance

此规则用于衡量分类之间的采样不平衡,如果不平衡状况超过阈值,或者由于不平衡而导致代表性不足的分类发生太多错误预测,则会引发错误。

分类模型需要训练数据集中的分类保持良好平衡,或者在训练期间对分类执行适当的加权/取样。此规则执行以下检查:

  • 它计算每个分类的发生次数。如果最小分类和最大分类之间的样本数比率大于 threshold_imbalance,则会引发错误。

  • 它检查每个分类的预测精度。如果未正确应用重采样或加权,则模型对于具有许多训练样本的分类来说可以达到较高的精度,但对于训练样本少的分类来说,精度较低。如果某个分类的错误预测比例大于 threshold_misprediction,则会引发错误。

此规则可应用于受支持的深度学习框架(TensorFlow、MXNet 和 PyTorch)之一,也可以应用于 XGBoost 算法。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

ClassImbalance 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold_imbalance

最小分类和最大分类中样本数之间可接受的不平衡。超过此阈值会引发错误。

可选

有效值:Float

默认值:10

threshold_misprediction

对每个分类允许的错误预测部分的限制。超过此阈值会引发错误。代表性不足的分类最有可能超过此阈值。

可选

有效值:Float

默认值:0.7

samples

在评估不平衡之前必须处理的标签数。在多个步骤中看到足够的样本之前,可能不会触发该规则。数据集包含的分类越多,此 sample 数值应越大。

可选

有效值:整数

默认值:500(假设像 MNIST 这样的数据集有 10 个类)

argmax

如果为 True,则 np.argmax 应用于预测张量。当您对每个分类都有概率向量时,此项是必需的。它用于确定哪个分类具有最高概率。

条件

有效值:Boolean

默认值:False

labels_regex

包含标签的张量的名称。

可选

有效值:字符串

默认值:".*labels"

predictions_regex

包含预测的张量的名称。

可选

有效值:字符串

默认值:".*predictions"

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.class_imbalance(), rule_parameters={ "threshold_imbalance": "10", "threshold_misprediction": "0.7", "samples": "500", "argmax": "False", "labels_regex": ".*labels", "predictions_regex": ".*predictions" }, collections_to_save=[ CollectionConfig( name="custom_output_collection", parameters={ "include_regex": ".*labels|.*predictions", "save_interval": "500" } ) ] ) ]

LossNotDecreasing

此规则检测值损失是否以适当的速度减少。这些损失必须是标量。

此规则可应用于受支持的深度学习框架(TensorFlow、MXNet 和 PyTorch)之一,也可以应用于 XGBoost 算法。必须指定 collection_namestensor_regex 参数。如果指定了这两个参数,则规则将检查两个集合内张量的并集。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

LossNotDecreasing 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

collection_names

该规则检查其张量的集合名称列表。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:None

tensor_regex

一个正则表达式模式列表,用于将此比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:None

use_losses_collection

如果设置为 True,则当名为“losses”的集合存在时,查找该集合中的损失。

可选

有效值:Boolean

默认值:True

num_steps

该规则检查损失是否已减少的最小步骤数。规则评估每 num_steps 个步骤发生一次。该规则将此步骤的损失与至少比当前步骤落后 num_steps 的步骤的损失进行比较。例如,假设每三个步骤保存一次损失,但 num_steps 设置为 10。在步骤 21 中,将步骤 21 的损失与步骤 9 的损失进行比较。检查损失的下一个步骤是步骤 33,因为步骤 21 之后的第十个步骤是步骤 31,并且在步骤 31 和步骤 32 中不保存损失。

可选

有效值:整数

默认值:10

diff_percent

num_steps 个步骤之间,损失应减少的最小百分比差异。

可选

有效值:0.0 < 浮点值 < 100

默认值:0.1(百分比)

increase_threshold_percent

在损失一直在增加的情况下,允许损失增加的最大阈值百分比

可选

有效值:0 < 浮点值 < 100

默认值:5(百分比)

mode

用于查询张量值以进行规则检查的调试器模式的名称。如果未传递该参数,规则默认按顺序进行检查,先检查 mode.EVAL,然后检查 mode.TRAIN,最后检查 mode.GLOBAL

可选

有效值:String (EVALTRAIN,或者GLOBAL

默认值:GLOBAL

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.loss_not_decreasing(), rule_parameters={ "tensor_regex": ".*", "use_losses_collection": "True", "num_steps": "10", "diff_percent": "0.1", "increase_threshold_percent": "5", "mode": "GLOBAL" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

Overfit

此规则通过比较验证和训练损失来检测模型是否与训练数据过度拟合。

此规则可应用于受支持的深度学习框架(TensorFlow、MXNet 和 PyTorch)之一,也可以应用于 XGBoost 算法。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

注意

防止过度拟合的标准方法是对模型进行规范化。

Overfit 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

tensor_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:无

start_step

开始比较验证和训练损失的步骤。

可选

有效值:整数

默认值:0

patience

在模型被视为过度拟合之前允许 ratio_threshold 超过设置的值的步数。

可选

有效值:整数

默认值:1

ratio_threshold

平均验证损失和平均训练损失之间的差异与平均训练损失的最大比率。如果 patience 个步骤超过此阈值,则表示模型过度拟合,并且规则返回 True

可选

有效值:Float

默认值:0.1

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.overfit(), rule_parameters={ "tensor_regex": ".*", "start_step": "0", "patience": "1", "ratio_threshold": "0.1" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "train.save_interval": "100", "eval.save_interval": "10" } ) ] ) ]

Overtraining

此规则检测模型是否过度训练。在对行为良好的模型进行了多次训练迭代(训练和验证损失减少)之后,该模型接近损失函数的最低限度,并且不再改善。如果模型继续训练,则可能会发生验证损失开始增加,因为模型开始过度拟合。该规则设置阈值和条件,以确定模型是否没有改进,并防止由于过度训练而导致的过度拟合问题。

此规则可应用于受支持的深度学习框架(TensorFlow、MXNet 和 PyTorch)之一,也可以应用于 XGBoost 算法。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

注意

可以通过提前停止来避免过度训练。有关提前停止的信息,请参阅提前停止训练作业。有关演示如何将 Spot 训练用于调试器的示例,请参阅。使用 Amazon SageMaker 调试器启用竞价培训.

Overtraining 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

patience_train

在认为训练损失不再有改进之前等待的步骤数。

可选

有效值:整数

默认值:5

patience_validation 在认为验证损失不再有改进之前等待的步骤数。

可选

有效值:整数

默认值:10

delta

误差被视为新的最佳值之前应改进的误差程度的最小阈值。

可选

有效值:Float

默认值:0.01

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.overtraining(), rule_parameters={ "patience_train": "5", "patience_validation": "10", "delta": "0.01" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

SimilarAcrossRuns

此规则将从基本试验中收集的张量与从另一试验中收集的张量进行比较。

此规则可应用于受支持的深度学习框架(TensorFlow、MXNet 和 PyTorch)之一,也可以应用于 XGBoost 算法。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

SimilarAcrossRuns 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

other_trial

要将其张量与从当前收集的那些张量进行比较的已完成训练作业名称。base_trial.

必填

有效值:字符串

collection_names

该规则检查其张量的集合名称列表。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:无

tensor_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:无

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.similar_across_runs(), rule_parameters={ "other_trial": "<specify-another-job-name>", "collection_names": "losses", "tensor_regex": ".*" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

已停止的训练规则

stalledTraininGrule 检测训练作业是否没有进展,如果规则触发,则停止训练作业。该规则要求张量在其定义的时间间隔内定期保存张量threshold参数。该规则会继续监控新张量,如果没有发出新的张量,阈值间隔规则将被触发。

TalledTraininGRule 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold

一个阈值,定义规则等待张量输出直到触发停滞的训练问题的时间(以秒为单位)。默认值为 1800 秒。

可选

有效值:整数

默认值:1800

stop_training_on_fire

如果设置为True,观察基础训练作业是否输出张量”threshold“秒。

可选

有效值:Boolean

默认值:False

training_job_name_prefix

基本训练任务名称的前缀。如果stop_training_on_fire是的,该规则会在同一账户中搜索带有此前缀的 SageMaker 培训作业。如果发现不活动状态,则规则需要StopTrainingJobaction. 请注意,如果找到多个具有相同前缀的作业,则规则将跳过终止。重要的是,每个培训作业的前缀都是唯一的。

可选

有效值:字符串

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ "threshold": "1800", "stop_training_on_fire": "True", "training_job_name_prefix": "<specify-training-base-job-name>" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

TensorVariance

该规则检测您是否具有方差非常高或非常低的张量。张量中的非常高或非常低的方差可能会导致神经元饱和,从而降低神经网络的学习能力。张量非常高的方差最终还会产生张量爆炸问题。使用此规则可以提前检测出此类问题。

此规则可应用于受支持的深度学习框架(TensorFlow、MXNet 和 PyTorch)之一,也可以应用于 XGBoost 算法。必须指定 collection_namestensor_regex 参数。如果指定了这两个参数,则规则将检查两个集合内张量的并集。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

TensorVariance 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

collection_names

该规则检查其张量的集合名称列表。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:无

tensor_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:无

max_threshold

张量方差上限的阈值。

可选

有效值:Float

默认值:无

min_threshold

张量方差下限的阈值。

可选

有效值:Float

默认值:无

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.tensor_variance(), rule_parameters={ "collection_names": "weights", "max_threshold": "10", "min_threshold": "0.00001", }, collections_to_save=[ CollectionConfig( name="weights", parameters={ "save_interval": "500" } ) ] ) ]

UnchangedTensor

此规则检测张量是否不再随步骤而发生更改。

此规则运行numpy.allclose检查张量是否未发生更改的方法。

此规则可应用于受支持的深度学习框架(TensorFlow、MXNet 和 PyTorch)之一,也可以应用于 XGBoost 算法。必须指定 collection_namestensor_regex 参数。如果指定了这两个参数,则规则将检查两个集合内张量的并集。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

UnchangedTensor 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

collection_names

该规则检查其张量的集合名称列表。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:无

tensor_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:无

num_steps

该规则检查以确定张量是否已更改的步骤数。

规则将检查可用的最后 num_steps 个步骤。步骤不必是连续的。如果 num_steps 是 2,则在第 s 个步骤处,规则不一定检查第 s-1 个步骤和第 s 个步骤。如果第 s-1 个步骤不可用,规则会检查最后一个可用步骤以及第 s 个步骤。在这种情况下,规则会检查最后一个可用步骤及当前步骤。

可选

有效值:整数

默认值:3

rtol

要传递给 numpy.allclose 方法的相对容差参数。

可选

有效值:Float

默认值:1e-05

atol

要传递给 numpy.allclose 方法的绝对容差参数。

可选

有效值:Float

默认值:1e-08

equal_nan

比较 NaN 时是否视为相等。如果为 True,则在输出数组中将输入数组 a 中的 NaN 视为等于输入数组 b 中的 NaN。此参数传递给 numpy.allclose 方法。

可选

有效值:Boolean

默认值:False

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.unchanged_tensor(), rule_parameters={ "collection_names": "losses", "tensor_regex": "", "num_steps": "3", "rtol": "1e-05", "atol": "1e-08", "equal_nan": "False" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

CheckInputImages

此规则检查输入图像是否已正确归一化。具体而言,规则会检测样本数据的平均值与零之间的差异是否超过阈值。许多计算机视觉模型要求输入数据的平均值和单位方差为零。

此规则适用于深度学习应用程序。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

CheckInputImages 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold_mean

一个阈值,该阈值定义输入数据的平均值可以与 0 相差多少。

可选

有效值:Float

默认值:0.2

threshold_samples

在引发错误之前必须采样的图像数量。如果值过低,则对数据集平均值的估计将不准确。

可选

有效值:整数

默认值:500

regex

输入数据张量的名称。

可选

有效值:字符串

默认值:".*hybridsequential0_input_0"(使用 HybridSequential 的 Apache MXNet 模型的输入张量的名称)

channel

颜色通道在输入张量形状数组中的位置。

可选

有效值:整数

默认值:1(例如,MXNet 需要输入数据采用以下形式:(batch_size, channel, height, width)

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.check_input_images(), rule_parameters={ "threshold_mean": "0.2", "threshold_samples": "500", "regex": ".*hybridsequential0_input_0", "channel": "1" }, collections_to_save=[ CollectionConfig( name="custom_inputs_collection", parameters={ "include_regex": ".*hybridsequential0_input_0" "save_interval": "500" } ) ] ) ]

NLPSequenceRatio

给定其余输入序列(对于优化性能很有用)的情况下,此规则将计算特定令牌的比率。例如,您可以计算输入序列中填充句尾 (EOS) 令牌的百分比。如果 EOS 令牌数量过高,则应执行替代分桶策略。您还可以计算输入序列中未知令牌的百分比。如果未知单词的数量过高,可以使用替代词汇表。

此规则适用于深度学习应用程序。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

NLPSequenceRatio 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

tensor_regex

正则表达式模式列表,用于将该比较限制为特定的标量值张量。该规则仅检查与列表中指定的正则表达式模式匹配的张量。如果未传递任何模式,则该规则默认情况下比较试验中收集的所有张量。只能匹配标量值张量。

可选

有效值:字符串列表或逗号分隔的字符串

默认值:".*embedding0_input_0"(假设作为网络的初始层嵌入)

token_values

一个由令牌数值列表构成的字符串。例如,"3, 0"。

可选

有效值:以逗号分隔的数值字符串

默认值:0

token_thresholds_percent

一个字符串,由与 token_values 的每个令牌对应的阈值(以百分比为单位)列表构成。例如,"50.0, 50.0"。

可选

有效值:以逗号分隔的浮点值字符串

默认值:"50"

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.nlp_sequence_ratio(), rule_parameters={ "tensor_regex": ".*embedding0_input_0", "token_values": "0", "token_thresholds_percent": "50" }, collections_to_save=[ CollectionConfig( name="custom_inputs_collection", parameters={ "include_regex": ".*embedding0_input_0" } ) ] ) ]

Confusion

此规则评估分类问题的混淆矩阵的优点。

它创建一个大小为 category_no*category_no 的矩阵,并使用来自 (labels, predictions) 对的数据填充该矩阵。对于每个 (labels, predictions) 对,confusion[labels][predictions] 中的计数增加 1。当完全填充矩阵后,按以下所示计算数据对角线值和非对角线值的比率:

  • 对于对角线上的元素:confusion[i][i]/sum_j(confusion[j][j])>=min_diag

  • 对于非对角线上的元素:confusion[j][i])/sum_j(confusion[j][i])<=max_off_diag

此规则可应用于 XGBoost 算法。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

Confusion 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

category_no

类别的数量。

可选

有效值:整数 ≥2

默认值:"None"

labels

这些区域有:labels张量集合或真实标签的 1-d 向量。

可选

有效值:字符串

默认值:"labels"

predictions

这些区域有:predictions张量集合或估计标签的 1-d 向量。

可选

有效值:字符串

默认值:"predictions"

labels_collection

该规则针对 labels 检查此集合中的张量。

可选

有效值:字符串

默认值:"labels"

predictions_collection

该规则针对 predictions 检查此集合中的张量。

可选

有效值:字符串

默认值:"predictions"

min_diag

对角线上数据比率的最小阈值。

可选

有效值:0≤float ≤1

默认值:0.9

max_off_diag

对角线以外的数据比率的最大阈值。

可选

有效值:0≤float ≤1

默认值:0.1

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.confusion(), rule_parameters={ "category_no": "10", "labels": "labels", "predictions": "predictions", "labels_collection": "labels", "predictions_collection": "predictions", "min_diag": "0.9", "max_off_diag": "0.1" }, collections_to_save=[ CollectionConfig( name="labels", parameters={ "save_interval": "500" } ), CollectionConfig( name="predictions", parameters={ "include_regex": "500" } ) ] ) ]
注意

如果未指定可选参数的值,则此规则会推断采用默认值。

功能重要性超重

此规则累积每个步骤 n 个最大要素重要性值的权重,并确保它们不会超过阈值。例如,您可以将前 3 个要素的阈值设置为不超过模型总权重的 80%。

此规则仅对 XGBoost 算法有效。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

功能重要性超重规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold

定义累计总和的比例的阈值n最大的功能。该数字n由定义nfeatures参数。

可选

有效值:Float

默认值:0.8

nfeatures

最大功能的数量。

可选

有效值:整数

默认值:3

tensor_regex

张量的正则表达式(正则表达式)命名要分析的规则。

可选

有效值:字符串

默认值:".*feature_importance/weight"

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.feature_importance_overweight(), rule_parameters={ "threshold": "0.8", "nfeatures": "3", "tensor_regex": ".*feature_importance/weight" }, collections_to_save=[ CollectionConfig( name="feature_importance", parameters={ "save_interval": "500" } ) ] ) ]

TreeDepth

此规则测量 XGBoost 模型中树的深度。XGBoost 会拒绝拆分,如果拆分不能改进损失。这会将训练规范化。因此,树的深度可能无法达到由depth参数。

此规则仅对 XGBoost 算法有效。

有关如何配置和部署内置规则的示例,请参阅配置调试程序内置规则

TreeDepth 规则的参数描述
参数名称 描述
base_trial

基本试用训练任务名称。Amazon SageMaker 调试器会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

depth

树的深度。通过计算最大节点 ID 的以 2 为底的对数,可以获得树的深度。

可选

有效值:Float

默认值:4

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.tree_depth(), rule_parameters={ "depth": "4" }, collections_to_save=[ CollectionConfig( name="tree", parameters={ "save_interval": "500" } ) ] ) ]