返回课堂

模型文件能放下,训练现场为什么放不下?

E01/b0 · 先放入工作权重

8B 教学模型 · 全参数混合精度 Adam · 十进制 GB

工作权重16 GB80 亿 × 2 bytes
用于前向计算
当前梯度16 GB本例每参数 2 bytes
来自本次反向传播
更新状态96 GBFP32 主权重 32 GB
两份 FP32 动量 64 GB
持久状态小计128 GB

下载的工作权重,是训练现场需要保存的一部分。

先放入工作权重

我们仍用八十亿参数作教学模型。工作权重以 BF16 保存,每个数两个字节,所以文件中的这部分是十六 GB。它是每层做预测时要用的参数。只看下载文件容易以为这就是训练所需显存;但训练还要根据错误改变这些参数。

教师备课:指图与模拟问答

指图与推进 · 不朗读指向左侧工作权重,保持另外两个对象未揭示。

E01/b1 · 一次更新还需要什么

8B 教学模型 · 全参数混合精度 Adam · 十进制 GB

工作权重16 GB80 亿 × 2 bytes
用于前向计算
当前梯度16 GB本例每参数 2 bytes
来自本次反向传播
更新状态96 GBFP32 主权重 32 GB
两份 FP32 动量 64 GB
持久状态小计128 GB

下载的工作权重,是训练现场需要保存的一部分。

一次更新还需要什么

预测后得到损失,反向传播给出梯度,它告诉我们当前损失如何随各参数变化。优化器还要保留更新所需的主权重和历史统计。现在看三个对象:拿来计算的权重、这一轮的梯度、跨轮保留的更新状态。它们不是三种模型能力,而是训练现场不同的工作材料。

教师备课:指图与模拟问答

指图与推进 · 不朗读揭示梯度和更新历史,沿预测—反向—更新的方向指示。

E01/b2 · 文件大小只是账本的一项

8B 教学模型 · 全参数混合精度 Adam · 十进制 GB

工作权重16 GB80 亿 × 2 bytes
用于前向计算
当前梯度16 GB本例每参数 2 bytes
来自本次反向传播
更新状态96 GBFP32 主权重 32 GB
两份 FP32 动量 64 GB
持久状态小计128 GB

仍不含激活、临时算子空间与通信缓冲;其他精度或优化器须重新记账。

文件大小只是账本的一项

在这一套混合精度 Adam 假设下,工作权重十六 GB、低精度梯度十六 GB,FP32 主权重和两份动量合计九十六 GB,总计一百二十八 GB。完整拆分在说明里可以逐项复算。这个小计仍未含激活、临时算子空间和通信缓冲。于是问题变得具体:四张卡一起训练,是每卡都保存一份,还是可以分开保存?

教师备课:指图与模拟问答

指图与推进 · 不朗读指持久状态小计与未计入项,转向四卡图。

补充推导、边界与来源

这里把预算中的模型配置放进一次全参数训练的现场。8B 表示 80 亿参数;在本课混合精度 Adam 假设下,每参数保存 2 字节工作权重、2 字节梯度、4 字节 FP32 主权重及合计 8 字节的一阶和二阶动量。相加为 16 字节,80 亿参数对应 128 GB。这里 GB 是十进制的十亿字节。

梯度记录当前损失对参数的局部变化关系,动量保留历史更新统计;主权重提供更高精度的更新副本。这些是训练需要的状态,不是模型在推理时都必须携带的附件。128 GB 尚未包含中间激活、临时算子空间、通信缓冲与运行环境。因此“权重文件能放入显存”只解决了容量账本的一项。其他实现的精度和保留策略可能不同,应先重建账本再比较。

本页证据与条件

8B 混合精度 Adam 教学设定 · 十进制 GB · 不含激活、临时空间、通信缓冲

进入主题正文