← 返回书架人工智能 · 交互式 Wiki
模型工程/完整训练 step 实测资料与边界
训练系统与性能进阶实测报告学习主线 6 / 6 · 实战延伸

实战四 / 在完整训练里检验局部优化

完整训练 step:时间与保存量到底花在哪里?

在自然语言项目的同一组权重与输入上,比较完整输出层和精确分块输出层。先验证目标与更新,再拆开计量整个训练 step。

01 / FIX THE WORKLOAD

两个方案算的是同一个训练目标

加载自然语言项目 seed 11 的最终权重,两个副本都转换为 CPU float64,并从相同的新 AdamW 状态开始。固定每批 4 个最多 96-token 窗口、相同的 batch 序列、全局有效 label 均值、裁剪阈值和更新次数。分块方案使用位置块 64、词表块 128,保留全部梯度贡献。

这份测量有 3 次预热和 12 次实测;每轮交替两个方案的先后顺序。计时期间不开启 profiler、保存张量 hooks 或逐事件分配审计。整个 step 允许分块浮点求和与 dense 存在舍入差;loss 和连续 15 次更新后的参数差先通过冻结门槛,随后才解释性能。

02 / WHOLE STEP MEASUREMENTS

查看同一次 step 的组成与原始样本

03 / EXPLAIN THE DENOMINATOR

做优化决策之前,核对四个口径

局部与整体

输出投影和 CE 只是完整 step 的一部分。Attention、MLP、整条反向和 AdamW 仍然执行;分块额外的 Python 循环和小矩阵调用也有成本。本轮整体时间增加是当前实现与形状的测量结果。

监督 token 与原始 token

这里吞吐的分子是实际参与 loss 的非 padding label 数。预分词样本已经在内存,整理 batch 与清空梯度计入 step;从磁盘加载与 tokenizer 执行没有计入,不能把它称为端到端数据流水线吞吐。

保存引用与物理峰值

另开一轮 hooks,按反向图仍引用的唯一底层 storage 计字节,视图别名只计一次。未保存的临时 tile、梯度缓冲、分配器峰值与 RSS 不在这个数中,不据此宣称实际显存下降了同样比例。

时钟与硬件

这是单线程 CPU double 计算,用墙钟按边界记录。评估与写文件另测;写入时间没有承诺 fsync 持久化。桌面后台任务仍可能干扰,不推导 GPU、CUDA kernel 或正式 float32 训练吞吐。

原始样本用于观察波动。逐阶段中位数来自不同次序位置,不能先相加再当作完整 step 中位数;切换到同一次样本时,各阶段之和应与该次总耗时一致。

04 / REPRODUCE

把数值依据和计时证据一起交付

完整报告保留所有阶段的 12 次样本、两种方法的连续更新误差、单独保存量测量,以及 3 次完整验证与 checkpoint 写入时间。下载包中的 profile/raw-step-times.json 可逐次核对阶段相加关系。

适用范围与一手资料

约 30 万参数真实文本 decoder、CPU float64、同权重和 batch 序列,3 次预热与 12 次交替测量。计时不插 hooks;保存引用另测。先核对 loss 与连续更新,再解释整步时间;不包含 GPU 性能、磁盘读入或在线分词。

公式与机制的原始依据 · 4 项
知识目录
搜索知识库