适合计划在自有或合作机房部署开源模型、需要提出资源需求的技术团队。训练和微调的资源需求不同,见训练、微调与推理的资源差异。
显存由哪几部分组成
| 部分 | 怎么估 | 受什么影响 |
|---|---|---|
| 模型权重 | 参数量 × 每参数字节数 | 模型大小、精度(量化) |
| KV 缓存 | 每 Token 占用 × 同时在处理的 Token 总数 | 并发数、上下文长度、模型结构 |
| 运行余量 | 经验上预留 10% 到 20% | 推理框架、中间计算、显卡驱动 |
每个参数的字节数取决于精度:
| 精度 | 每参数字节数 | 70 亿参数约需 | 700 亿参数约需 |
|---|---|---|---|
| FP32 | 4 | 28 GB | 280 GB |
| BF16 / FP16 | 2 | 14 GB | 140 GB |
| INT8 | 1 | 7 GB | 70 GB |
| INT4 | 0.5 | 3.5 GB | 35 GB |
Hugging Face 的官方说明给出了同样的估算方法:以 BF16 加载时,权重显存约为参数量(以十亿计)的 2 倍 GB。
估算步骤与算例
KV 缓存每个 Token 的占用可以用模型配置算出:
每 Token KV 缓存 = 2 × 层数 × KV 头数 × 每头维度 × 每数值字节数
前面的 2 分别对应 K 和 V。层数、KV 头数和每头维度可以在模型的配置文件里找到。
下面用一个虚构但常见的配置演示:约 80 亿参数,32 层,8 个 KV 头,每头维度 128,以 BF16 运行。
- 权重:80 亿 × 2 字节 ≈ 16 GB。
- 每 Token KV 缓存:2 × 32 × 8 × 128 × 2 字节 = 131,072 字节 = 128 KB。
- 同时处理的 Token:高峰 20 个并发请求,每个上下文约 4000 Token,共 80,000 Token。
- KV 缓存总量:80,000 × 128 KB ≈ 10 GB。
- 加余量:(16 + 10) × 1.15 ≈ 30 GB。
结论:单张 24 GB 显存的卡放不下这个配置。可选的调整方向:
- 换显存更大的卡,或用两张卡分担;
- 权重改用 INT8(约 8 GB),总量降到约 21 GB,但要评估质量变化;
- 降低并发上限或上下文长度,减少 KV 缓存。
700 亿参数级别的模型,仅 BF16 权重就约 140 GB,需要多张卡协同运行。
量化怎么取舍
量化能大幅减少权重显存,但可能影响输出质量,影响程度与模型、量化方法和任务有关。建议:
- 用同一批真实样本,分别测试原精度和量化版本。
- 按业务的验收标准打分,而不只看通用评测分数。
- 质量下降在可接受范围内,再采用量化版本。
有些推理框架也支持对 KV 缓存量化,可以进一步节省显存,同样需要测试。
估算之后怎么实测
估算给出的是起点。上线前应在目标硬件上实测:
- 选定推理框架:比如 vLLM 等提供 OpenAI 兼容接口的服务框架,它们对显存的管理方式会影响实际容量。
- 按真实分布压测:请求长度、并发数和输出长度按业务实际设置,不只用短请求。
- 记录关键指标:首字延迟、每秒生成 Token 数、P95 延迟、显存占用峰值、错误率。
- 找到容量拐点:逐步提高并发,记录延迟开始明显上升的位置,把它作为容量上限的参考。
- 留出余量:日常负载控制在拐点以下,为峰值留出空间。
压测应在获得授权的环境里进行,不影响其他业务。
估算时常见的四个错误
- 只算权重:并发高、上下文长时,KV 缓存可能超过权重本身。
- 用最大上下文长度估算所有请求:会严重高估;按实际分布估算,再为长请求留余量。
- 量化后不测质量:显存省了,但结果可能不再满足验收标准。
- 只看显存不看带宽:生成速度还受显存带宽和计算能力影响,显存够,速度未必够。
常见问题
显存够了,速度一定够吗?
不一定。生成速度还取决于显卡的计算能力、显存带宽和推理框架。显存决定能不能运行,速度要实测。
多张卡一定比一张大卡好吗?
不一定。多卡需要卡间通信,会带来额外开销;能用一张卡放下时,通常更简单。具体取决于模型大小和可用设备。
模型配置文件在哪里找?
开源模型的发布页面通常附带配置文件,其中列出层数、注意力头数等参数。以模型官方发布的为准。
易AI能提供哪些显卡?
需要按工作负载与周期单独确认。可以按上面的方法整理需求,通过联系页说明。
参考资料
官方资料用于核对产品或通用概念,不构成对易AI的授权、认证或背书。具体合作以双方确认的方案为准。