16 GB 权重,为什么训练状态会更多?
本页问题
指定 8B 混合精度 Adam 账本包含 BF16 工作权重 16 GB、低精度梯度 16 GB、FP32 主权重 32 GB,以及各 32 GB 的 m/v。持久小计为 128 GB;激活、临时空间与通信缓冲另计,因此它不是运行峰值。
RC-T1/b0 · 先看工作权重与一次更新
仍沿前面的一次更新:先前向计算损失,再求梯度。八十亿参数采用 BF16,每个数两个字节,工作权重就是十六 GB。这里用十进制 GB。权重文件只回答这套参数怎样保存,还没有列出为了修改参数而需要的其他对象。
进一步解释
BF16 和 FP32 分别为每数 2 与 4 bytes;本页不假定某个实际设备容量。
教师备课:指图与模拟问答
指图与推进 · 不朗读指16GB工作权重,再指小流程前向→loss→梯度→更新。
本态来源与条件
8B / 四卡混合精度 Adam 教学构造;ZeRO 机制,非硬件实测
RC-T1/b1 · 按用途加入另外四项
按本页的混合精度 Adam 设定,再加入十六 GB 低精度梯度、三十二 GB FP32 主权重,以及各三十二 GB 的历史统计 m 和 v。m 累计梯度方向,v 累计梯度平方的信息。当前梯度、主权重与这两份历史共同参与更新;新主权重再转成工作精度,供下一步计算。
进一步解释
m、v 是两份优化器历史统计,不是两套独立模型。图中三类输入一起进入 Adam 更新,再保存新主权重与新 m/v;没有 m/v 先转化为主权重的步骤。
教师备课:指图与模拟问答
指图与推进 · 不朗读逐项指账本四条新增对象;核对绿色更新框三类输入。
本态来源与条件
8B / 四卡混合精度 Adam 教学构造;ZeRO 机制,非硬件实测
RC-T1/b2 · 合计与峰值分开
五项相加是一百二十八 GB,相当于每参数十六字节。这是持久状态的小计,激活、临时工作区和通信缓冲还在账外,不能把它当运行峰值。现在加到四张卡:硬件容量增加了,程序会不会自动把每张卡保存的内容除以四?
教师备课:指图与模拟问答
指图与推进 · 不朗读指128GB总和与账外项目,再指四卡问题。
本态来源与条件
8B / 四卡混合精度 Adam 教学构造;ZeRO 机制,非硬件实测
接下来
四张卡能否让每张自然只保存四分之一?
补充推导、边界与来源
进一步阅读
条件与来源
以下从计算对象、条件与原始证据继续展开。
原 N44:一次更新,为什么不只需要模型权重?
一次更新先用工作权重做前向,给真实后词分配概率并计算 loss;反向沿计算图求出参数梯度。梯度表示当前损失对参数的局部变化关系,不是另一份模型知识或生成答案。反向还要使用前向激活或重算得到的中间量。
本课程采用混合精度 Adam 教学设定:BF16 工作权重与低精度梯度、FP32 主权重,以及两份 FP32 历史统计 m/v。优化器据此更新主权重,再形成工作权重供后续计算。实际实现可以采用不同精度和状态策略;这不是唯一训练实现。
完整训练状态账本;ZeRO §3.1(原论文讨论 FP16,本课用 BF16 设定)。
原 N45:16 GB 的模型,训练状态可以是 128 GB
以下全部采用十进制 GB,$1GB=10^9$ bytes,N=8×10⁹ 参数。
| 状态 | 每参数字节 | 本课容量 |
|---|---|---|
| BF16 工作权重 | 2 | 16 GB |
| 低精度梯度 | 2 | 16 GB |
| FP32 主权重 | 4 | 32 GB |
| FP32 统计 m | 4 | 32 GB |
| FP32 统计 v | 4 | 32 GB |
| 持久状态小计 | 16 | 128 GB |
图中五条从相同零点起,16GB 条长是32GB条的一半。128GB 不包括激活、临时算子空间、通信缓冲及运行环境;不能当实际运行峰值,也不是所有8B模型的固定训练需求。
本页证据与条件
8B / 四卡混合精度 Adam 教学构造;ZeRO 机制,非硬件实测