本工具估算稠密 Transformer 推理所需内存,单位为 GiB,不计算训练显存或每秒生成速度。权重与 KV 缓存分别计算;额外预留由你设定,不代表实测运行时开销。
怎样使用估算器
填写检查点的总参数量和权重位宽。从模型配置中核对层数、键值注意力头数和每个头的维度。采用分组查询注意力时,KV 头可能少于查询头,不要把查询头数直接填入。
缓存 token 数包含运行时保留的提示词和已生成 token。并发序列数对应同时驻留的缓存数量。权重量化和 KV 缓存精度是两个独立设置:4-bit 权重文件并不意味着 KV 缓存也是 4-bit。
默认值是假设的 80 亿参数模型,具有 32 层、8 个 KV 头和 128 维头维度。这只是示例,不代表所有 8B 模型。关闭 JavaScript 时可以提交表单计算;开启时在浏览器内完成计算。
内存计算公式
权重(GiB)= 参数数量 × 每个权重的位数 ÷ 8 ÷ 2³⁰。输入参数量以十亿为单位,因此先乘以 10⁹。
KV 缓存(GiB)= 2 × 层数 × KV 头数 × 每头维度 × 缓存 token 数 × 并发序列数 × 缓存位宽 ÷ 8 ÷ 2³⁰。乘数 2 代表 key 与 value。这是针对常规 Transformer 完整缓存布局的简化计算。
总估算 =(权重 + KV 缓存)×(1 + 预留百分比 / 100)。预留用于覆盖未单独建模的分配,应根据运行框架实测调整,不是通用的安全余量。
计算示例:8B、4-bit
默认配置下,权重名义存储约 3.73 GiB。32 层、8 个 KV 头、128 维,单序列缓存 8,192 个 token,16-bit KV 缓存约 1.00 GiB。加入 25% 预留后,总估算约 5.91 GiB。
在这一简化模型中,缓存 token 数翻倍会使缓存项翻倍,但不会让权重翻倍。增加并发序列同样会增加缓存。权重从 4-bit 改为 8-bit,会让名义权重存储翻倍,不会改变你单独选择的缓存精度。
哪些部分没有被精确计入
- 量化元数据与混合精度:缩放因子、零点、填充和未量化张量会改变实际存储量。
- 运行时分配:激活、临时缓冲、注意力内核、图捕获、分配器和显示占用各有差异。
- 不同架构:滑动窗口或混合注意力、压缩缓存等结构可能不符合此公式。
- 混合专家模型:激活参数量不等于需要存储的总参数量,还要考虑路由、放置与卸载。
- 多设备推理:切分和复制方式决定每张卡的内存,不能简单把总量除以显卡数。
- 训练:梯度、优化器状态和保存的激活不在本推理估算范围内。
估算低于显卡标称容量,不代表一定兼容。还需验证文件格式、运行框架、实际可用内存、目标上下文和真实批量大小,并在实际工作负载中测量峰值占用。
来源与下一步
- Transformers:KV 缓存策略,介绍缓存方案及内存权衡。
- Transformers:量化概览,介绍格式与支持方法。
部署前可阅读开放权重与开源的区别,并追踪开放模型专题。反馈计算或文档错误。