SageMaker Debugger 交互式报告
接收 Debugger 自动生成的分析报告。通过 Debugger 报告,您可以深入了解训练作业,并获得有关改善模型性能的建议。以下屏幕截图显示了 Debugger 分析报告拼贴图。要了解更多信息,请参阅SageMaker Debugger 分析报告。
注意
您可以在训练作业运行期间或作业完成后下载 Debugger 报告。在训练期间,Debugger 同时更新报告,反映当前规则的评估状态。只有在训练作业完成后,您才能下载完整的 Debugger 报告。
重要
报告中提供的图表和建议仅供参考,并不确保准确无误。您应负责对其中的信息进行单独评测。
SageMaker Debugger 分析报告
对于任何 SageMaker 训练作业,SageMaker Debugger ProfilerReport 规则都会调用所有监控和分析规则,并将规则分析汇总到一份综合报告中。按照本指南,使用 Amazon SageMaker Python SDK
重要
报告中提供的图表和建议仅供参考,并不确保准确无误。您应负责对其中的信息进行单独评测。
下载 SageMaker Debugger 分析报告
在训练作业运行期间或作业完成后,使用 Amazon SageMaker Python SDK
注意
要获取 SageMaker Debugger 生成的分析报告,您必须使用 SageMaker Debugger 提供的内置 ProfilerReport 规则。要在训练作业中激活规则,请参阅配置内置探查器规则。
提示
您也可以在 SageMaker Studio Debugger Insights 控制面板中,只需一次单击即可下载报告。此操作不需要编写任何额外的脚本即可下载报告。要了解如何从 Studio 下载报告,请参阅打开 Amazon SageMaker Debugger Insights 控制面板。
注意
如果您在没有配置特定于 Debugger 参数的情况下启动训练作业,则 Debugger 仅根据系统监控规则生成报告,因为 Debugger 参数未配置为保存框架指标。要启用框架指标分析并接收扩展的 Debugger 分析报告,请在构造或更新 SageMaker 估算器时配置 profiler_config
参数。
要了解如何在启动训练作业之前配置 profiler_config
参数,请参阅配置框架分析。
要更新当前训练作业并启用框架指标分析,请参阅更新 Debugger 框架分析配置。
Debugger 分析报告演练
本节将向您逐个介绍 Debugger 分析报告中的不同部分。分析报告根据内置的监控和分析规则生成。报告仅显示发现了问题的规则的结果图。
重要
报告中提供的图表和建议仅供参考,并不确保准确无误。您应负责对其中的信息进行单独评测。
训练作业摘要
在报告的开头,Debugger 会提供训练作业的摘要。在此部分中,您可以概要了解不同训练阶段的持续时间和时间戳。
概要表包含以下信息:
-
start_time – 启动训练作业的确切时间。
-
end_time – 完成训练作业的确切时间。
-
job_duration_in_seconds – 从 start_time 到 end_time 的训练总时间。
-
training_loop_start – 启动第一个纪元的第一个步骤的确切时间。
-
training_loop_end – 完成最后一个纪元的最后一个步骤的确切时间。
-
training_loop_duration_in_seconds – 训练循环开始时间与训练循环结束时间所隔的总时间。
-
initialization_in_seconds – 初始化训练作业所用的时间。初始化阶段涵盖从 start_time 到 training_loop_start 时间之间的时段。初始化时间用于编译训练脚本、启动训练脚本、创建和初始化模型、启动 EC2 实例和下载训练数据。
-
finalization_in_seconds – 完成训练作业所花费的时间,例如完成模型训练、更新模型构件和关闭 EC2 实例。完成阶段涵盖从 training_loop_end 时间到 end_time 之间的时段。
-
initialization (%) – 用在 initialization 上的时间占总 job_duration_in_seconds 的百分比。
-
training loop (%) – 用在 training loop 上的时间占总 job_duration_in_seconds 的百分比。
-
finalization (%) – 用在 finalization 上的时间占总 job_duration_in_seconds 的百分比。
系统使用情况统计数据
在此部分中,您可以查看系统利用率统计数据概览。
Debugger 分析报告包含以下信息:
-
节点 – 列出节点的名称。如果在多个节点(多个 EC2 实例)上使用分布式训练,则节点名称的格式为
algo-n
。 -
指标 – Debugger 收集的系统指标:CPU、GPU、CPU 内存、GPU 内存、I/O 和网络指标。
-
单位 – 指标的单位。
-
最大值 – 每个系统指标的最大值。
-
p99 – 每个系统使用情况的第 99 个百分位数。
-
p95 – 每个系统使用情况的第 95 个百分位数。
-
p50 – 每个系统使用情况的第 50 个百分位数(中位数)。
-
最小值 – 每个系统指标的最小值。
框架指标摘要
在此部分中,以下饼图显示了 CPU 和 GPU 上的框架操作的细分。
每个饼图分析所收集框架指标的各个方面,如下所示:
-
训练/评估阶段及其他阶段之间的比率 – 显示不同训练阶段所花费时间的比率。
-
向前和向后传递之间的比率 – 显示训练循环中前向和向后传递所花费时间之间的比率。
-
CPU/GPU 运算符之间的比率 – 显示运行在 CPU 或 GPU 上的运算符(例如卷积运算符)所花费时间之间的比率。
-
框架中记录的一般指标 – 显示在主要框架指标(例如数据加载、向前和向后传递)上所花费时间之间的比率。
概述:CPU 运算符
此部分详细介绍 CPU 运算符的信息。表中显示了在最频繁调用的 CPU 运算符上所花费时间的百分比和绝对累计时间。
概述:GPU 运算符
此部分详细介绍 GPU 运算符的信息。表中显示了在最频繁调用的 GPU 运算符上所花费时间的百分比和绝对累计时间。
规则摘要
在此部分中,Debugger 汇总了所有规则评估结果、分析、规则描述和建议。
分析训练循环 – 步骤持续时间
在此部分中,您可以找到每个节点每个 GPU 核心步骤持续时间的详细统计信息。Debugger 评估步骤持续时间的平均值、最大值、p99、p95、p50 和最小值,并计算步骤异常值。下面的直方图显示了在不同 Worker 节点和 GPU 上捕获的步骤持续时间。您可以通过在右侧选择图例来启用或禁用各个 Worker 的直方图。您可以检查是否有特定 GPU 导致步骤持续时间异常。
GPU 利用率分析
此部分显示基于 LowGPUUtilization 规则的 GPU 核心利用率的详细统计信息。它还总结了 GPU 利用率统计数据、均值、p95 和 p5,以确定训练作业是否未充分利用 GPU。
批次大小
此部分显示了 CPU 总利用率、单个 GPU 利用率和 GPU 内存占用量的详细统计数据。BatchSize 规则决定是否需要更改批次大小以更好地利用 GPU。您可以检查批次大小是否太小而导致利用率不足,还是过大而导致利用率过高和内存不足问题。在图中,方框显示相对于中位数 (p50) 的 p25 和 p75 百分位数范围(分别填充深紫色和亮黄色),误差条形显示第 5 个百分位数作为下限,第 95 个百分位数作为上限。
CPU 瓶颈
在此部分中,您可以深入了解 CPUBottleneck 规则在训练作业中检测到的 CPU 瓶颈。该规则检查 CPU 使用率是否高于 cpu_threshold
(默认值为 90%)以及 GPU 利用率是否低于 gpu_threshold
(默认值为 10%)。
饼图显示以下信息:
-
CPU 瓶颈导致的低 GPU 使用率 – 显示 GPU 利用率高于和低于阈值的数据点与符合 CPU 瓶颈标准的数据点之间的比率。
-
训练/评估阶段及其他阶段之间的比率 – 显示不同训练阶段所花费时间的比率。
-
向前和向后传递之间的比率 – 显示训练循环中前向和向后传递所花费时间之间的比率。
-
CPU/GPU 运算符之间的比率 – 显示 Python 运算符(例如数据加载出现进程以及前向和向后传递运算符)在 GPU 和 CPU 上所花费时间的比率。
-
框架中记录的一般指标 – 显示主要框架指标以及在指标上所花费时间的比率。
I/O 瓶颈
在此部分中,您可以找到 I/O 瓶颈的摘要。该规则评估 I/O 等待时间和 GPU 利用率,并监控在 I/O 请求上花费的时间是否超过总训练时间的阈值百分比。这可能表明存在 I/O 瓶颈,GPU 在等待从存储传来的数据。
多 GPU 训练中的负载均衡
在此部分中,您可以识别 GPU 之间的工作负载均衡问题。
GPU 内存分析
在此部分中,您可以分析 GPUMemoryIncrease 规则收集的 GPU 内存利用率。在图中,方框显示相对于中位数 (p50) 的 p25 和 p75 百分位数范围(分别填充深紫色和亮黄色),误差条形显示第 5 个百分位数作为下限,第 95 个百分位数作为上限。