推理显存三段式:
VRAM ≈ 模型权重 + KV cache + 激活/运行时开销
权重是静态的(只与参数量和精度有关);KV cache 随上下文长度线性增长;激活随 batch 增长。下面以 deepseek-v4-flash(MoE,总参 284B / 激活 13B / 1M 上下文)逐项拆解。
0. 模型参数速览(官方 config.json)
| 项 | 值 |
|---|---|
| 层数 / hidden / 词表 | 43 / 4096 / 129,280 |
| 注意力 | MLA 变体:KV 压成 512 维 latent + 64 维 RoPE,Shared-KV(K/V 共用一条向量) |
| 注意力层配比 | 3 层全量 + 20 层 CSA(4x 压缩)+ 20 层 HCA(128x 压缩),另加 128 token 滑动窗口 |
| 专家 | 256 routed(top-6)+ 1 shared,expert intermediate 2048 |
| 官方权重精度 | 专家 FP4 + 非专家 FP8(QAT 原生量化,不是后量化) |
1. 权重显存 = 参数量 × 每参数字节数
| 精度 | 每参数 | 284B 权重 |
|---|---|---|
| BF16/FP16(理论”原版”全精度) | 2 B | 568 GB(≈529 GiB) |
| FP8 / INT8 | 1 B | 284 GB |
| INT4 | 0.5 B | 142 GB |
| INT4 + scale(group=128) | ≈0.52 B | ≈146 GB |
| MXFP4(block32 + E8M0 scale) | ≈0.53 B | ≈151 GB |
GB 按 1e9 字节、GiB 按 2^30;GPU 显存颗粒按 GiB 计。
MoE 关键点:显存看总参,速度看激活参。 每 token 只激活 13B(6 专家 + shared + 注意力),但 256 个专家共 277B(≈97.5%)必须全量驻留显存——路由是动态的,无法预知下一个 token 选哪 6 个专家。13B 决定的是 FLOPs 与生成速度,不决定显存。
参数分布验算(≈284B):routed experts 43×256×(3×4096×2048) ≈ 277B;shared expert ≈1.1B;注意力+indexer ≈2-3B;emb+lm_head ≈1.1B。
官方发布精度:V4 为 QAT 训练,官方 checkpoint 专家已是 FP4、非专家 FP8 blockwise,实测权重 ≈150-162 GB(GGUF 卡:AD-BF16 原样重打包 162.1 GB、AD-MXFP4 154.5 GB)。即对这个模型而言”原版”≠BF16。
2. KV cache = 每 token 每层字节 × 层数 × 上下文长度
通用公式:
- MHA/GQA/MQA:bytes/token = 2(K+V) × n_kv_heads × head_dim × n_layers × 每元素字节
- MLA(V3 式):KV 压成单个 latent,bytes/token = (kv_lora_rank + rope_dim) × n_layers × 字节;V3.2 为 (512+64)×2×61 ≈ 70 KB/token
- V4 再沿序列维度压缩:CSA 每 4 token 合 1 条、HCA 每 128 token 合 1 条,且 Shared-KV(一条 576 维向量同时当 K 和 V)
BF16 下 deepseek-v4-flash 每 token 摊到各层的 KV:
| 层类型 | 层数 | 每 token 字节 | 小计 |
|---|---|---|---|
| 全量(ratio 0) | 3 | 576×2 = 1152 | 3456 |
| CSA(1/4) | 20 | 288 | 5760 |
| HCA(1/128) | 20 | 9 | 180 |
| 合计 | 43 | ≈9.2 KB/token | ≈9.4 KB |
1M 上下文:≈10 GB(BF16 KV)/ ≈5 GB(FP8 KV)。CSA 层另有 Lightning Indexer 索引键缓存(~128 维/token/层量级),合计上浮到 15 GB 量级。交叉验证:官方口径”1M 下 V4-Flash KV 为 V3.2 的 7%“,V3.2 同条件 ≈70 GB → ≈5 GB,量级一致(个位十几 GB);对比 naive GQA8 基线官方称仅 ~2%。
结论:V4 时代 1M 上下文的 KV 也只有个位~十几 GB,显存大头始终是权重。 别照搬 V3 时代”长上下文 KV 比权重还大”的直觉。
3. 激活与运行时开销
- 激活 ∝ batch × seq × hidden × 层数;单 batch 解码通常 GB 级,远小于权重
- 框架预留:vLLM/SGLang 按
gpu_memory_utilization(常 0.85-0.9)预占 KV pool;CUDA context/graph ~1-3 GB - MTP 投机头(config
num_nextn_predict_layers: 1):小几 GB 内
4. 总量与部署档位
| 版本 | 权重 | +1M KV+开销 | 合计 | 可跑硬件 |
|---|---|---|---|---|
| 理论原版 BF16 | 568 GB | +~15 GB | ≈585 GB | 8×H800 80G 紧、8×96G 稳 |
| 官方混合精度(FP4 专家+FP8) | ~155 GB | +~10 GB | ≈165-175 GB | 2×H800 96G / 2×DGX Spark(社区实测 1.5M ctx)/ Mac ≥192G 统一内存 |
| INT4 量化 | ~146-155 GB | +~10 GB | ≈160-170 GB | 同上,或 8×RTX 4090 24G |
Insight:INT4 版与官方版权重几乎一样大——专家占 97.5% 参数且官方已 QAT 到 4bit,社区 INT4 基本是”原样打包”;再往下压(<3bit)PPL/KL 快速劣化(GGUF 卡有实测表)。想进一步省显存,方向是压 KV(FP8/NVFP4 KV)和稀疏化 KV 管理(见 2606.09079_flashmemory-deepseek-v4 的预测式 KV 管理,KV 再压到基线 13.5%)。
5. 速查公式(任意模型)
权重 GB ≈ 参数量(B) × 每参数字节 # BF16=2, FP8=1, INT4≈0.5+scale
KV GB ≈ 2 × n_kv_heads × head_dim × 层数 × 字节 × seq × batch / 1e9 # MHA/GQA
MLA: 2×n_kv×d_head 换成 (kv_lora_rank + rope_dim)
V4 : 每层再 × 1/compress_ratio(4 或 128),+滑动窗口常量项
激活/开销 ≈ 1-5 GB 起步,随 batch 线性
MoE: 权重按总参算,FLOPs 按激活参算
关联
- 2606.09079_flashmemory-deepseek-v4 — 预测式 KV cache 管理,显存压到 Full-Context 基线 13.5%
- deepseek-reasonix — DeepSeek 原生 terminal coding agent,架构围绕 prefix-cache 稳定性设计
资源
- 官方 config:https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash/blob/main/config.json
- GGUF 量化实测表(各档位大小/PPL/KL):https://huggingface.co/AtomicChat/DeepSeek-V4-Flash-0731-GGUF
- 流式推理权重转换说明(FP4 专家 + BF16 非专家,~150 GB):https://www.modelscope.cn/models/robinLua/DeepSeek-V4-Flash-SI