第 2 步 · 选档位与显存
先选档位,再算显存
两个问题决定档位:做什么(推理还是训练)、给多少人用。档位定了,再由显存决定选哪台机器——显存带宽则决定生成速度。
按用途和规模
| 用途 | 负载 | 档位 | 关键约束 |
|---|---|---|---|
| 自己用的聊天 / 编程助手 | 推理,1 人 | 个人 | 装得下权重 + 上下文;速度看显存带宽 |
| 小团队内部工具 | 推理,2–20 并发 | 工作室团队 | KV 缓存 × 并发成为主要占用 |
| 对外 API / 正式产品 | 推理,100+ 并发 | 团队企业 | 每美元、每瓦吞吐;冗余(至少 2 台) |
| LoRA / QLoRA 微调 | 训练(适配器) | 个人工作室 | QLoRA 论文在单张 48GB 卡上微调了 65B 模型arxiv.org |
| 全参数微调 | 训练(全部权重) | 团队企业 | 混合精度 Adam 约每参数 16 字节(不含激活,ZeRO 论文)→ 70B 约 1.1TBarxiv.org |
| 预训练 / 大规模强化学习 | 多机训练 | 集群 | 网络(每卡 800G)、存储和可靠性是关键 |
推理显存怎么算
权重 = 参数量 × 每权重比特 ÷ 8。BF16 = 2 字节,FP8 = 1 字节,4 位约 0.5–0.6 字节(Q4_K_M 约 4.85 bit)。github.com
KV 缓存 = 2 × 层数 × KV 头数 × 头维度 × 上下文 × 并发数 × 字节数。随上下文和并发线性增长——繁忙的服务器上可能比权重还大。
MoE 模型: 所有专家都要放进显存,所以按总参数算;只有速度按激活参数算。
速度: 单用户生成速度大致是显存带宽 ÷ 每个 token 要读的字节数——所以同一个两边都装得下的模型,273 GB/s 的 DGX Spark 会比 1.8 TB/s 的 RTX 5090 慢。nvidia.comnvidia.com
速查:权重 + 10% 开销
| 参数量 | BF16 | FP8 | 4 位(Q4_K_M) |
|---|---|---|---|
| 8B | 18 GB | 10 GB | 6 GB |
| 32B | 71 GB | 38 GB | 22 GB |
| 70B | 155 GB | 82 GB | 47 GB |
| 235B | 518 GB | 275 GB | 157 GB |
| 405B | 892 GB | 474 GB | 271 GB |
| 671B | 1.48 TB | 785 GB | 448 GB |
| 1T | 2.20 TB | 1.17 TB | 667 GB |
按公式估算,不含 KV 缓存——用下面的计算器加上上下文和并发。
显存计算器
架构参数(用于 KV 缓存)
KV 缓存 = 2 × 层数 × KV 头数 × 头维度 × 上下文 × 并发 × 字节数。MLA 模型(DeepSeek-V3、Kimi K2)每层缓存 576 维潜向量,这里按 1 个头 × 288 折算。
显卡与服务器(独立显存)
- 8GB 显卡(如 RTX 4060)
- 12GB 显卡(如 RTX 3060 12G)
- 16GB 显卡(如 RTX 5060 Ti 16G)
- GeForce RTX 4090 · 24GB
- GeForce RTX 5090 · 32GB
- 2 × RTX 5090 · 64GB
- H100 SXM · 80GB
- RTX PRO 6000 Blackwell · 96GB
- DGX Spark · 128GB
- H200 SXM · 141GB
- B200 SXM · 180GB
- Instinct MI300X · 192GB
- B300 SXM · 288GB
- Instinct MI355X · 288GB
- 4 × RTX PRO 6000 · 384GB
- 8 × H100 · 640GB
- 8 × H200 · 1,128GB
- 8 × B200 · 1,440GB
- 8 × Instinct MI300X · 1,536GB
- 8 × B300 · 2,304GB
- 8 × Instinct MI355X · 2,304GB
Mac / DGX Spark(统一内存)
macOS 默认只允许 GPU 使用部分统一内存:36GB 及以下约 2/3,更大的机型约 3/4,这里按此比例判断。DGX Spark 按 128GB 的约 90% 可用估算(以实际系统镜像为准,待核实)。
假设:运行开销 = 权重的 10% + 0.5GB。多卡行假设张量 / 流水线并行把权重和 KV 平均切分,未计每卡重复的缓冲区。绿色 = 放得下;黄色 = 余量不到 10%;灰色 = 放不下。实际占用因推理引擎(vLLM、SGLang、llama.cpp、Ollama、MLX)而异——例如 vLLM 会预先占用大部分空闲显存做 KV 缓存。