Skip to content

01. VRAM Ledger and Metrics | 显存账本与指标口径

页面目标

本节对应 Task1:dtype、模型规模、硬件与显存账本。这里建立一套可以跨训练和推理复用的显存账本,回答显存由哪些对象构成、峰值可能出现在哪个阶段、理论估算和 GPU 实测分别能说明什么。

核心机制

显存问题不是单一的“参数太大”。参数、梯度、optimizer state、activation、KV Cache 以及框架 buffer 的生命周期不同,峰值也不一定同时出现。因此,账本需要同时记录对象、变化因素和证据出口。

账本先记录“对象—规模—dtype—生命周期—证据”五个字段。以 AdamW 为例,参数本身只是模型状态的一部分,优化器还会为可训练参数维护额外状态;不能用“参数字节数”代替完整训练账本。

显存对象主要变化因素账本中先记录什么需要什么证据
参数、梯度参数量、dtype、训练 / 推理模式理论字节数和是否常驻GPU 是否能加载、峰值显存
optimizer state优化器类型、参数量、更新状态单独估算常驻成本训练显存和 step 稳定性
activationbatch、sequence length、保存策略产生和释放的生命周期checkpoint 前后峰值、重算时间
KV Cache层数、KV heads、上下文、并发每请求增长和驻留方式cache 容量、并发、命中率
workspace / fragmentkernel、allocator、backend作为剩余预算和运行时开销reserved memory、trace 或 OOM

这些对象的峰值不一定同时出现,所以理论账本是容量估算或诊断近似,不能把各阶段峰值机械相加。

显存账本:对象、生命周期与证据

指标它回答什么问题适合怎样使用
peak memory运行中最高占用是否超过预算判断是否装得下、是否接近 OOM
reserved memoryallocator 已保留但当前未必使用多少观察碎片、buffer 和缓存行为
memory delta候选方案减少了多少峰值比较 baseline / candidate
step timethroughputlatency节省显存付出了多少时间判断优化是否值得

一个可复查的最小账本至少包含以下内容:

字段示例问题结果类型
对象与生命周期这是参数、activation 还是 KV Cache?在哪个阶段驻留?机制说明
规模与 dtype有多少元素,每个元素占多少字节?理论估算
峰值与保留量运行中最高占用是多少,allocator 保留了多少?GPU 实测
代价与质量节省显存后,时间、吞吐或质量变化如何?对照实验

理论账本用于提出假设,GPU 结果用于验证假设;两者应保留在同一份报告中,但不能互相替代。

判断与验证

遇到显存问题时,按下面顺序把账本转成实验问题:

  1. 先区分训练显存和推理显存,再指出主要对象。
  2. 把对象放回生命周期:forward、backward、optimizer step、prefill 或 decode。
  3. 判断当前目标是“装得下”,还是“装下以后仍有可接受的吞吐和质量”。
  4. 用 CPU 验证字节数、对象分类和账本关系;用 GPU 项目验证峰值、reserved、吞吐和 OOM 边界。

Task0 解释计算图和状态生命周期,Task1 的 01 数据类型02 参数量与 FLOPs03 GPU 架构与显存06 显存计算与 ZeRO 再把对象放入硬件和状态账本。需要连接 Attention 访存时,补看 20 FlashAttention Sim

后续验证出口按问题选择:训练侧进入 73 训练性能分析76 策略对比74 Profiling 收口;推理侧进入 04 推理 Cache 与显存预算

CPU 结果只能说明账本和机制;即使代码运行在带 GPU 的机器上,device='cpu' 的结果也不能写成 GPU 峰值、带宽或 OOM 结论。

Released under the MIT License.