Debugger 内置探查器规则列表 - 亚马逊 SageMaker AI

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

Debugger 内置探查器规则列表

使用 Amazon SageMaker Debugger 提供的 Debugger 内置探查器规则,并分析在模型训练期间收集的张量。Debugger 内置规则监控对成功运行高性能的训练作业至关重要的各种常见条件。您可以使用 Amazon SageMaker Python SDK 或者是低级别的 SageMaker API 操作调用内置探查器规则。使用内置规则不会产生额外费用。有关计费的更多信息,请参阅 Amazon SageMaker 定价页面。

注意

在一个训练作业上可以附加的内置探查器规则的最大数量为 20。SageMaker Debugger 完全管理内置规则,并同步分析您的训练作业。

重要

要使用新的 Debugger 功能,您需要升级 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.sagemaker 类方法调用的 Debugger 内置规则。

用于生成分析报告的 Debugger 内置规则

有效性范围 内置规则
任何 SageMaker 训练作业的分析报告

Debugger 内置规则,用于分析硬件系统资源利用率(系统指标)

有效性范围 内置规则
用于任意 SageMaker 训练作业的通用系统监控规则

用于分析框架指标的 Debugger 内置规则

有效性范围 内置规则
用于深度学习框架(TensorFlow 和 PyTorch)的分析规则
警告

为了支持 Amazon SageMaker 探查器,SageMaker AI Debugger 从 TensorFlow 2.11 和 PyTorch 2.0 开始弃用了框架分析特征。您仍然可以在以前版本的框架和 SDK 中使用该功能,如下所示。

  • SageMaker Python SDK <= v2.130.0

  • PyTorch >= v1.6.0 且 < v2.0

  • TensorFlow >= v2.3.1 且 < v2.11

另请参阅2023 年 3 月 16 日

使用内置规则及默认参数值 – 使用以下配置格式:

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

使用内置规则及自定义参数值 – 使用以下配置格式:

from sagemaker.debugger import Rule, ProfilerRule, rule_configs rules = [ ProfilerRule.sagemaker( base_config=rule_configs.BuiltInRuleName(), rule_parameters={ "key": "value" } ) ]

要查找 rule_parameters 参数的可用键,请参阅参数描述表。

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

ProfilerReport

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

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

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

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

以下示例代码显示了如何指定和调整 CPUBottleneck 规则的 cpu_threshold 参数以及 IOBottleneck 规则的 threshold 参数。

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

要了解探查器报告中的内容,请参阅 SageMaker Debugger 分析报告。此外,由于此规则会激活所有分析规则,因此您还可以使用 SageMaker Studio 实验中的 SageMaker Debugger UI 来检查规则分析状态。

OverallSystemUsage 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

<BuiltInRuleName>_<parameter_name>

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

可选

默认值:None

BatchSize

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

BatchSize 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

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

CPUBottleneck

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

CPUBottleneck 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold

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

可选

有效值:整数

默认值:50(百分比)

gpu_threshold

定义低 GPU 利用率的阈值。

可选

有效值:整数

默认值:10(百分比)

cpu_threshold

定义高 CPU 利用率的阈值。

可选

有效值:整数

默认值:90(百分比)

patience

定义在规则开始评估之前要跳过的数据点数。训练作业的前几个步骤通常会显示大量的数据处理,因此请慎重保留该规则,防止使用您对此参数指定的给定数量的分析数据过早调用该规则。

可选

有效值:整数

默认值:100

scan_interval_us

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

可选

有效值:整数

默认值:60000000(微秒)

GPUMemoryIncrease

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

GPUMemoryIncrease 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

increase

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

可选

有效值:整数

默认值:10(百分比)

patience

定义在规则开始评估之前要跳过的数据点数。训练作业的前几个步骤通常会显示大量的数据处理,因此请慎重保留该规则,防止使用您对此参数指定的给定数量的分析数据过早调用该规则。

可选

有效值:整数

默认值:100

window

用于计算分位数的时间长度。

可选

有效值:整数

默认值:500

scan_interval_us

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

可选

有效值:整数

默认值:60000000(微秒)

IOBottleneck

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

IOBottleneck 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

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

可选

有效值:整数

默认值:50(百分比)

gpu_threshold

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

可选

有效值:整数

默认值:70(百分比)

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

可选

有效值:整数

默认值:50(百分比)

patience 定义在规则开始评估之前要跳过的数据点数。训练作业的前几个步骤通常会显示大量的数据处理,因此请慎重保留该规则,防止使用您对此参数指定的给定数量的分析数据过早调用该规则。

可选

有效值:整数

默认值:1000

scan_interval_us

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

可选

有效值:整数

默认值:60000000(微秒)

LoadBalancing

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

LoadBalancing 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold

定义工作负载百分比。

可选

有效值:整数

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

patience

定义在规则开始评估之前要跳过的数据点数。训练作业的前几个步骤通常会显示大量的数据处理,因此请慎重保留该规则,防止使用您对此参数指定的给定数量的分析数据过早调用该规则。

可选

有效值:整数

默认值:10

scan_interval_us

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

可选

有效值:整数

默认值:60000000(微秒)

LowGPUUtilization

LowGPUUtilization 规则有助于检测 GPU 利用率是低还是出现了波动。这会检查每个工作线程上的每个 GPU。如果第 95 个分位数低于 threshold_p95,则规则返回 True,表明利用率不足。如果第 95 个分位数高于 threshold_p95 且第 5 个分位数低于 threshold_p5,则规则返回 True,表示此时的情况为波动。

LowGPUUtilization 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold_p95

第 95 个分位数的阈值,低于此阈值即将 GPU 视为未充分利用。

可选

有效值:整数

默认值:70(百分比)

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

可选

有效值:整数

默认值:10(百分比)

patience

定义在规则开始评估之前要跳过的数据点数。训练作业的前几个步骤通常会显示大量的数据处理,因此请慎重保留该规则,防止使用您对此参数指定的给定数量的分析数据过早调用该规则。

可选

有效值:整数

默认值:1000

window

用于计算分位数的时间长度。

可选

有效值:整数

默认值:500

scan_interval_us

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

可选

有效值:整数

默认值:60000000(微秒)

OverallSystemUsage

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

OverallSystemUsage 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

scan_interval_us

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

可选

有效值:整数

默认值:60000000(微秒)

MaxInitializationTime

MaxInitializationTime 规则有助于检测训练初始化用时是否过长。规则会等待直至第一个步骤可用。

MaxInitializationTime 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

threshold

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

可选

有效值:整数

默认值:20(分钟)

scan_interval_us

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

可选

有效值:整数

默认值:60000000(微秒)

OverallFrameworkMetrics

OverallFrameworkMetrics 规则汇总用于框架指标的时间,例如向前和向后传递以及数据加载。

OverallFrameworkMetrics 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

scan_interval_us

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

可选

有效值:整数

默认值:60000000(微秒)

StepOutlier

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

StepOutlier 规则的参数描述

参数名称 描述
base_trial

基本试验训练作业名称。Amazon SageMaker Debugger 会自动将此参数设置为当前的训练作业。

必填

有效值:字符串

stddev

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

可选

有效值:整数

默认值:5(分钟)

mode 应保存步骤并在其上运行规则的模式。根据默认设置,规则将在从 EVAL 到 TRAIN 阶段的步骤上运行。

可选

有效值:整数

默认值:5(分钟)

n_outliers 可以忽略的异常值数量,超过该数量后规则返回 True

可选

有效值:整数

默认值:10

scan_interval_us

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

可选

有效值:整数

默认值:60000000(微秒)