3 个章节·按类别展开/折叠
公式
显存占用公式
<p>显存占用 = 参数 + 梯度 + 优化器状态 + 激活值 + 临时 buffer</p><p>以 7B 模型为例:</p><table border="1"><tr><th>项</th><th>大小</th><th>说明</th></tr><tr><td>参数 (FP16)</td><td>14 GB</td><td>7B x 2 字节</td></tr><tr><td>梯度 (FP16)</td><td>14 GB</td><td>同参数</td></tr><tr><td>Adam 状态 (FP32)</td><td>56 GB</td><td>7B x 8 字节 (m+v+master_weight)</td></tr><tr><td>激活值 (seq=2048)</td><td>~20 GB</td><td>和 batch_size、seq_len、层数相关</td></tr><tr><td>合计</td><td>~104 GB</td><td>需要 A100 80GB 都不够</td></tr></table>
知识
省显存招数
- 混合精度 (AMP):参数/激活 FP16,loss FP32。显存减半。
- Gradient Checkpointing:重计算激活,不存中间值。激活从 20GB → 5GB。
- ZeRO-3 / FSDP:优化器状态分片到多卡。
- LoRA:只训练 0.1% 参数,冻结其他。显存降到 30GB。
- INT8/INT4 量化:推理时用。训练很少用。
表格
各精度显存对比
不同精度下的 7B 模型显存需求