本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SageMaker 调试器性能分析报告
对于任何 SageMaker 培训作业,调试器剖析器报告规则调用所有监控和分析规则并将规则分析汇总到一份综合报告中。遵循本指南,使用Amazon SageMaker Python 开发工具包
报告中提供了地块和建议供参考,但不是确定性的。您有责任对信息进行单独评估。
下载调试器性能分析报告
在训练作业运行期间或作业完成后使用Amazon SageMaker Python 开发工具包
您还可以通过 SageMaker Studio 调试器见解仪表板只需单击一下即可下载报告,而无需进行其他脚本编写。要了解如何从 Studio 下载报告,请参阅打开 Amazon SageMaker 调试程序见解控制面板.
如果您在没有配置调试器特定参数的情况下开始训练作业,则调试器仅根据系统监控规则生成报告,因为调试器参数未配置为保存框架指标。要启用框架指标分析并接收扩展的调试器性能分析报告,请配置profiler_config
构建或更新 SageMaker 估计器时的参数。
要了解如何配置profiler_config
参数在开始训练作业之前,请参阅配置调试器框架分析.
要更新当前的培训作业并启用框架指标分析,请参阅更新调试器框架分析配置.
调试器性能分析报告演练
本节指导您逐节完成调试器分析报告。分析报告是根据监控和分析的内置规则生成的。该报告仅显示发现问题的规则的结果图。
报告中提供了地块和建议供参考,但不是确定性的。您有责任对信息进行单独评估。
训练 Job 摘要
在报告的开头,调试器提供了训练工作的摘要。在本节中,您可以概述不同训练阶段的时间持续时间和时间戳。

汇总表包含以下信息:
-
start_time— 培训工作开始的确切时间。
-
end_time— 培训工作完成的确切时间。
-
job_持续时间 _in_秒/秒— 从start_time到end_time.
-
训练_loop _start— 第一个时代的第一步开始的确切时间。
-
训练_loop _end— 最后一个时代的最后一步完成的确切时间。
-
训练_loop _ 持续时间 _in_秒— 训练循环开始时间和训练循环结束时间之间的总时间。
-
初始化 _in_秒数— 在初始化培训工作上花费的时间。初始化阶段涵盖从start_time到训练_loop _start时间。初始化时间花在编译训练脚本、启动训练脚本、创建和初始化模型、启动 EC2 实例和下载训练数据上。
-
最终化 _in_秒数— 花在完成培训任务上的时间,例如完成模型训练、更新模型工件和关闭 EC2 实例。最后定稿阶段涵盖从训练_loop _end是时候去end_time.
-
初始化 (%)— 花在上面的时间百分比初始化总数超过job_持续时间 _in_秒/秒.
-
训练循环 (%)— 花在上面的时间百分比训练循环超过总数job_持续时间 _in_秒/秒.
-
最后定稿 (%)— 花在上面的时间百分比最后确定总数超过job_持续时间 _in_秒/秒.
系统计数据
在本节中,您可以看到系统利用率统计信息的概述。

调试器分析报告包括以下信息:
-
节点— 列出节点的名称。如果在多节点(多个 EC2 实例)上使用分布式训练,则节点名称的格式为
algo-n
. -
公制— 调试器收集的系统指标:CPU、GPU、CPU 内存、GPU 内存、I/O 和网络指标。
-
单元— 系统指标的单位。
-
max— 每个系统指标的最大值。
-
p99— 每个系统利用率的 99%。
-
p95— 每个系统利用率的第 95 个百分位。
-
p50— 每个系统利用率的第 50 个百分位数(中位数)。
-
分钟— 每个系统指标的最小值。
框架指标摘要
在本节中,以下饼图显示了 CPU 和 GPU 上的框架操作的细分。

每个饼图分析收集的框架指标的各个方面,如下所示:
-
TRAIN/EVAL 阶段与其他阶段之间的比率— 显示在不同训练阶段花费的时间之间的比率。
-
向前和向后传递之间的比率— 显示训练循环中前向和向后传递花费的时间之间的比率。
-
CPU/GPU 运营商之间的比率— 显示花在 CPU 或 GPU 上运行的操作员(例如卷积运算符)上的时间之间的比率。
-
框架中记录的一般指标— 显示花在主要框架指标(例如数据加载、向前和向后传递)上的时间之间的比率。
概述:CPU 运营商
本节详细介绍 CPU 操作员的信息。该表显示了花在最常称为 CPU 运算符的时间百分比和绝对累计时间。

概述:GPU 运营商
本节详细介绍 GPU 运算符的信息。该表显示了花在最常称为 GPU 运算符的时间百分比和绝对累计时间。

规则摘要
在本节中,调试器汇总了所有规则评估结果、分析、规则描述和建议。

分析训练循环 — 步骤持续时间
在本节中,您可以在每个节点中找到有关每个 GPU 核心的步长持续时间的详细统计信息。调试器评估步长持续时间的平均值、最大值、p99、p95、p50 和最小值,并计算步长异常值。下面的直方图显示了在不同工作节点和 GPU 上捕获的步长持续时间。您可以通过选择右侧的图例来启用或禁用每个工作人员的直方图。您可以检查是否有特定 GPU 导致步长持续时间异常值。

GPU 利用率分析
本节显示了基于 LowGPU 利用率规则的 GPU 核心利用率的详细统计信息。它还总结了 GPU 利用率统计数据,均值、p95 和 p5,以确定培训作业是否未充分利用 GPU。
Batch 大小
本节显示了 CPU 总使用率、单个 GPU 利用率和 GPU 内存占用量的详细统计信息。BatchSize 规则决定是否需要更改批处理大小以更好地利用 GPU。您可以检查批处理大小是太小导致利用不足还是过大导致过度利用和内存不足问题。在图中,方框显示中位数 (p50) 中的 p25 和 p75 百分位数范围(分别填充深紫色和亮黄色),误差条显示下限的第 5 个百分位数和上限的第 95 个百分位数。

CPU 瓶颈
在本节中,您可以深入了解 CPU瓶颈规则在培训作业中检测到的CPU 瓶颈。该规则检查 CPU 使用率是否高于cpu_threshold
(默认情况下为 90%)以及 GPU 利用率低于gpu_threshold
(默认情况下为 10%)。

饼图显示以下信息:
-
CPU 瓶颈导致的 GPU 使用率低— 显示 GPU 使用率高于和低于阈值的数据点与符合 CPU 瓶颈标准的数据点之间的比率。
-
TRAIN/EVAL 阶段与其他阶段之间的比率— 显示在不同训练阶段花费的时间之间的比率。
-
向前和向后传递之间的比率— 显示训练循环中前向和向后传递花费的时间之间的比率。
-
CPU/GPU 运营商之间的比率— 显示 Python 操作员(例如数据加载器进程以及前向和向后传递运算符)在 GPU 和 CPU 上花费的时间之间的比率。
-
框架中记录的一般指标— 显示主要框架指标以及在指标上花费的时间持续时间之间的比率。
I/O 瓶颈
在本节中,您可以找到 I/O 瓶颈的摘要。该规则评估 I/O 等待时间和 GPU 利用率,并监控在 I/O 请求上花费的时间是否超过总训练时间的阈值百分比。这可能表明 GPU 正在等待数据从存储到达的 I/O 瓶颈。
多 GPU 训练中的负载均衡
I在本节中,您可以识别 GPU 之间的工作负载平衡问题。

GPU 内存分析
在本部分中,您可以分析 GpumemoryGress 规则收集的 GPU 内存利用率。在图中,方框显示中位数 (p50) 中的 p25 和 p75 百分位数范围(分别填充深紫色和亮黄色),误差条显示下限的第 5 个百分位数和上限的第 95 个百分位数。
