本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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_sec onds — 花在完成训练作业上的时间,例如完成模型训练、更新模型工件和关闭实例。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
。 -
metric-调试器收集的系统指标:CPU、GPU、CPU内存、GPU内存、I/O 和网络指标。
-
单位 – 指标的单位。
-
最大值 – 每个系统指标的最大值。
-
p99 – 每个系统使用情况的第 99 个百分位数。
-
p95 – 每个系统使用情况的第 95 个百分位数。
-
p50 – 每个系统使用情况的第 50 个百分位数(中位数)。
-
最小值 – 每个系统指标的最小值。
框架指标摘要
在本节中,以下饼图显示了CPUs和的框架操作细分GPUs。
每个饼图分析所收集框架指标的各个方面,如下所示:
-
TRAIN/EVAL阶段与其他阶段之间的比率 — 显示在不同训练阶段所花费的时间间隔之间的比率。
-
向前和向后传递之间的比率 – 显示训练循环中前向和向后传递所花费时间之间的比率。
-
CPU/GPU运算符之间的比率-显示在CPU或GPU上运行运算符(例如卷积运算符)所花费的时间之间的比率。
-
框架中记录的一般指标 – 显示在主要框架指标(例如数据加载、向前和向后传递)上所花费时间之间的比率。
概述:CPU运算符
本节提供CPU运算符的详细信息。该表显示了在最常调用的CPU运算符上花费的时间百分比和绝对累积时间。
概述:GPU运算符
本节提供GPU运算符的详细信息。该表显示了在最常调用的GPU运算符上花费的时间百分比和绝对累积时间。
规则摘要
在此部分中,Debugger 汇总了所有规则评估结果、分析、规则描述和建议。
分析训练循环 – 步骤持续时间
在本节中,您可以找到每个节点每个内GPU核上步进持续时间的详细统计信息。Debugger 评估步骤持续时间的平均值、最大值、p99、p95、p50 和最小值,并计算步骤异常值。以下直方图显示了在不同工作节点上捕获的步骤持续时间和。GPUs您可以通过在右侧选择图例来启用或禁用各个 Worker 的直方图。您可以检查是否存在导致步长持续时间异常值的特定GPU因素。
GPU利用率分析
本节显示基于 L owGPUUtilization 规则的GPU核心利用率的详细统计信息。它还汇总了GPU利用率统计数据,即均值、p95 和 p5,以确定训练作业的利用率是否不足。GPUs
批次大小
本节显示总CPU利用率、单个GPU利用率和GPU内存占用空间的详细统计信息。该 BatchSize 规则决定了您是否需要更改批量大小以更好地利用GPUs。您可以检查批次大小是否太小而导致利用率不足,还是过大而导致利用率过高和内存不足问题。在图中,方框显示相对于中位数 (p50) 的 p25 和 p75 百分位数范围(分别填充深紫色和亮黄色),误差条形显示第 5 个百分位数作为下限,第 95 个百分位数作为上限。
CPU瓶颈
在本节中,您可以深入研究CPUBottleneck规则从您的训练作业中检测到的CPU瓶颈。该规则会检查CPU利用率是否高于cpu_threshold
(默认为 90%),以及GPU利用率是否低于gpu_threshold
(默认为 10%)。
饼图显示以下信息:
-
CPU瓶颈导致的低GPU使用率-显示GPU利用率高于和低于阈值的数据点与符合CPU瓶颈标准的数据点之间的比率。
-
TRAIN/EVAL阶段与其他阶段之间的比率 — 显示在不同训练阶段所花费的时间间隔之间的比率。
-
向前和向后传递之间的比率 – 显示训练循环中前向和向后传递所花费时间之间的比率。
-
CPU/GPU运算符之间的比率-显示在 Python 运算符(例如数据加载器进程以及向前GPUs和CPUs向后传递运算符)上花费的时间和时间之间的比率。
-
框架中记录的一般指标 – 显示主要框架指标以及在指标上所花费时间的比率。
I/O 瓶颈
在此部分中,您可以找到 I/O 瓶颈的摘要。该规则评估 I/O 等待时间和GPU利用率,并监控在 I/O 请求上花费的时间是否超过总训练时间的阈值百分比。它可能表明 I/O 瓶颈GPUs在哪里等待数据从存储器送达。
多GPU训练中的负载平衡
在本节中,您可以确定工作负载平衡问题GPUs。
GPU记忆分析
在本节中,您可以分析GPUMemoryIncrease规则收集的GPU内存利用率。在图中,方框显示相对于中位数 (p50) 的 p25 和 p75 百分位数范围(分别填充深紫色和亮黄色),误差条形显示第 5 个百分位数作为下限,第 95 个百分位数作为上限。