前面两篇文章主要介绍了大模型GPU资源需求计算及使用场景:大模型GPU显存算力需求计算 | 大模型推理资源需求计算及使用场景示例。
在常见并发推理场景中,显存需求会随着并发数的增加而显著增长,因为KV Cache是显存占用的主要变量。下面我们来系统性地介绍并发推理的显存计算方法,并通过7B、32B、70B三个模型的示例进行全面评估。
一、并发推理显存计算核心公式
1.1 总显存构成
总显存 = 模型参数 + KV Cache + 中间激活值 + 系统开销
1.2 KV Cache显存计算公式
KV Cache是并发场景下显存增长的主要来源,其精确计算公式如下-7:
KV Cache显存(GB) = 2 × 最大并发请求数 × 序列长度 × 层数 × 隐层维度 × 精度字节数 ÷ (1024³)
其中:
2:Key和Value两份缓存
最大并发请求数:服务能同时处理的请求数量
序列长度:输入+输出的总token数
层数:Transformer层数
隐层维度:每个token的表示维度
精度字节数:FP16为2,INT8为1
KV Cache 大小和 并发数有关,和 batch size 无关;batch 只影响一次计算的规模,不改变 KV 总量。
1.3 vLLM的内存分配机制
vLLM通过gpu_memory_utilization参数控制显存分配-7:
可用显存 = 总GPU显存 × gpu_memory_utilization 模型权重显存 + KV Cache显存 ≤ 可用显存
通常设置gpu_memory_utilization = 0.8-0.9,预留部分显存用于系统开销和中间激活值-7-8。
1.4 CPU与内存需求
CPU核心:建议≥并发数/2,用于数据预处理和调度
系统内存:需存储模型权重副本(用于CPU卸载场景)和数据缓存
二、7B模型并发推理资源需求
以Llama 2-7B或DeepSeek-7B为例,假设模型配置:
层数:32
隐层维度:4096
精度:FP16(2字节/参数)
2.1 不同并发数的显存需求
| 并发数 | KV Cache显存公式 | KV Cache显存 | 参数显存 | 总显存需求 | 说明 |
|---|---|---|---|---|---|
| 1 | 2×1×2048×32×4096×2÷(1024³) | 1.0GB | 14GB | ~16GB | 单用户场景 |
| 4 | 2×4×2048×32×4096×2÷(1024³) | 4.0GB | 14GB | ~19GB | 小团队使用 |
| 8 | 2×8×2048×32×4096×2÷(1024³) | 8.0GB | 14GB | ~23GB | 中等负载 |
| 16 | 2×16×2048×32×4096×2÷(1024³) | 16.0GB | 14GB | ~31GB | 高并发场景 |
2.2 资源需求总览
| 并发数 | GPU显存需求 | 推荐GPU配置 | CPU核心 | 系统内存 | 适用场景 |
|---|---|---|---|---|---|
| 4 | 19GB | 1×RTX 4090 24GB | 4-8核 | 32GB | 个人API服务 |
| 8 | 23GB | 1×RTX 4090 24GB | 8核 | 64GB | 中小团队 |
| 16 | 31GB | 1×A100 40GB 或 2×RTX 4090 | 8-16核 | 64-128GB | 企业级服务 |
优化提示:当并发数超过8时,单张RTX 4090 24GB已接近极限,建议使用张量并行(TP)分散到多卡-1。
三、32B模型并发推理资源需求
以Qwen-32B或DeepSeek-32B为例,假设模型配置:
层数:64
隐层维度:5120
精度:FP16(2字节/参数)
3.1 不同并发数的显存需求
| 并发数 | KV Cache显存公式 | KV Cache显存 | 参数显存 | 总显存需求 | 说明 |
|---|---|---|---|---|---|
| 1 | 2×1×2048×64×5120×2÷(1024³) | 2.5GB | 64GB | ~67GB | 单用户场景 |
| 4 | 2×4×2048×64×5120×2÷(1024³) | 10.0GB | 64GB | ~75GB | 小团队使用 |
| 8 | 2×8×2048×64×5120×2÷(1024³) | 20.0GB | 64GB | ~85GB | 中等负载 |
| 16 | 2×16×2048×64×5120×2÷(1024³) | 40.0GB | 64GB | ~105GB | 高并发场景 |
3.2 资源需求总览
| 并发数 | GPU显存需求 | 推荐GPU配置 | CPU核心 | 系统内存 | 适用场景 |
|---|---|---|---|---|---|
| 4 | 75GB | 1×A100 80GB | 8-16核 | 128GB | 企业API服务 |
| 8 | 85GB | 2×A100 40GB(TP=2) | 16核 | 256GB | 中型负载 |
| 16 | 105GB | 2×A100 80GB(TP=2) | 16-32核 | 256-512GB | 高并发场景 |
vLLM配置示例(2×A100 80GB)-1:
vllm serve Qwen-32B \ --tensor-parallel-size 2 \ --max-num-seqs 16 \ --gpu-memory-utilization 0.9
四、70B模型并发推理资源需求
以Llama 2-70B或DeepSeek-70B为例,假设模型配置:
层数:80
隐层维度:8192
精度:FP16(2字节/参数)
4.1 不同并发数的显存需求
| 并发数 | KV Cache显存公式 | KV Cache显存 | 参数显存 | 总显存需求 | 说明 |
|---|---|---|---|---|---|
| 1 | 2×1×2048×80×8192×2÷(1024³) | 5.0GB | 140GB | ~146GB | 单用户场景 |
| 4 | 2×4×2048×80×8192×2÷(1024³) | 20.0GB | 140GB | ~161GB | 小团队使用 |
| 8 | 2×8×2048×80×8192×2÷(1024³) | 40.0GB | 140GB | ~181GB | 中等负载 |
| 16 | 2×16×2048×80×8192×2÷(1024³) | 80.0GB | 140GB | ~221GB | 高并发场景 |
4.2 资源需求总览
| 并发数 | GPU显存需求 | 推荐GPU配置 | CPU核心 | 系统内存 | 适用场景 |
|---|---|---|---|---|---|
| 4 | 161GB | 2×A100 80GB(TP=2) | 16-32核 | 256GB | 企业API服务 |
| 8 | 181GB | 4×A100 40GB(TP=4) | 32核 | 512GB | 中型负载 |
| 16 | 221GB | 4×A100 80GB(TP=4) | 32-64核 | 1TB | 高并发场景 |
五、MoE模型(如DeepSeek-V3)的特殊考量
混合专家模型(MoE)的并发推理显存计算与稠密模型有所不同-6-9:
5.1 MoE模型显存构成
总显存 = 共享参数 + 专家参数 + KV Cache + 路由开销
其中:
5.2 并行策略选择
5.3 资源估算示例(DeepSeek-V3 671B)
假设模型配置-9:
专家数量E=256,每个专家参数量约2.6B
共享参数量约300B
精度:FP8(1字节/参数)
激活专家数K=8(Top-8路由)
| 并发数 | 显存需求 | 推荐GPU配置(EP并行) | CPU核心 | 系统内存 |
|---|---|---|---|---|
| 4 | ~350GB | 8×A100 80GB(EP=8) | 32核 | 512GB |
| 8 | ~380GB | 8×A100 80GB(EP=8) | 32-64核 | 1TB |
| 16 | ~450GB | 16×A100 80GB(EP=16) | 64核+ | 2TB+ |
关键提示:MoE模型通过专家并行(EP)可将专家参数分散到多卡,大幅降低单卡显存压力-6-9。
六、并发推理优化策略
6.1 vLLM核心参数调优
| 参数 | 作用 | 推荐值 | 说明 |
|---|---|---|---|
gpu_memory_utilization | 显存利用率 | 0.8-0.9 | 预留10-20%用于系统开销-7 |
max_num_seqs | 最大并发数 | 根据显存计算 | 控制KV Cache上限-8 |
max_num_batched_tokens | 批处理token上限 | 4096-8192 | 平衡吞吐与延迟-8 |
tensor_parallel_size | 张量并行度 | 2/4/8 | 模型放不下时启用-1 |
enable_expert_parallel | 专家并行开关 | True(MoE模型) | 对DeepSeek等MoE模型有效 |
6.2 量化技术
| 量化精度 | 参数显存减少 | KV Cache显存减少 | 适用场景 |
|---|---|---|---|
| INT8 | 50% | 50% | 高并发、追求吞吐 |
| INT4 | 75% | 75% | 超大模型、资源受限 |
6.3 抢占与分块预填充
当KV Cache空间不足时,vLLM会触发抢占(Preemption)机制-8。为避免性能下降:
适当提高
gpu_memory_utilization启用分块预填充(Chunked Prefill)平衡预填充和解码请求-8
七、快速参考表
不同并发度下的显存需求速查(FP16)
| 模型规模 | 参数显存 | 并发1 | 并发4 | 并发8 | 并发16 |
|---|---|---|---|---|---|
| 7B | 14GB | 16GB | 19GB | 23GB | 31GB |
| 32B | 64GB | 67GB | 75GB | 85GB | 105GB |
| 70B | 140GB | 146GB | 161GB | 181GB | 221GB |
推荐配置速查
| 模型规模 | 目标并发 | GPU配置 | CPU核心 | 系统内存 |
|---|---|---|---|---|
| 7B | 8 | 1×RTX 4090 24GB | 8核 | 64GB |
| 7B | 16 | 2×RTX 4090 24GB(TP=2) | 16核 | 128GB |
| 32B | 8 | 2×A100 40GB(TP=2) | 16核 | 256GB |
| 32B | 16 | 2×A100 80GB(TP=2) | 32核 | 512GB |
| 70B | 8 | 4×A100 40GB(TP=4) | 32核 | 512GB |
| 70B | 16 | 4×A100 80GB(TP=4) | 64核 | 1TB |
总结
并发推理显存核心公式:总显存 ≈ 参数显存 + 2×并发数×序列长度×层数×隐层维度×精度
KV Cache是并发场景下的主要变量,与并发数成正比增长
MoE模型需结合专家并行(EP)优化-6,显存计算需考虑共享参数和专家参数的分布
CPU和内存需求:CPU核心数建议≥并发数/2,系统内存需能容纳完整模型权重
参考: