这是一个非常经典且实际的问题。简短的结论是:对于 7B 和 13B 模型,单卡 A100(80GB)或 H100(80GB)通常完全足够支撑实时推理,绝大多数场景下不需要多卡并行。
但是,“是否足够”取决于你对延迟(Latency)、并发量(Concurrency)以及量化精度的具体要求。以下是详细的分析和不同场景下的建议:
1. 核心瓶颈分析:显存 vs. 计算
在 LLM 推理中,主要瓶颈通常是显存带宽(Memory Bandwidth),而非单纯的算力(Compute)。
-
显存占用估算:
- FP16/BF16 (未量化):
- 7B 模型权重约需 14 GB。
- 13B 模型权重约需 26 GB。
- 加上 KV Cache(上下文窗口)和激活值,单卡 80GB 显存可以轻松容纳长上下文(例如 32k-128k tokens)。
- INT4/INT8 (量化,推荐):
- 使用 INT4 量化(如 AWQ, GGUF, ExLlamaV2),7B 模型仅需约 5-6 GB,13B 模型仅需约 9-10 GB。
- 这留下了巨大的显存空间用于更长的上下文或更高的并发。
- FP16/BF16 (未量化):
-
推理速度(Token/s):
- A100 (80GB):带宽约为 2 TB/s。
- 7B (INT4):可达 100+ tokens/s。
- 13B (INT4):可达 60-80 tokens/s。
- H100 (80GB):带宽高达 3.35 TB/s,且 Tensor Core 性能更强。
- 7B (INT4):可达 150+ tokens/s。
- 13B (INT4):可达 100+ tokens/s。
- A100 (80GB):带宽约为 2 TB/s。
注:人类阅读速度约为 15-20 tokens/s。上述速度远超人类阅读极限,因此单卡在生成速度上完全满足“实时”体验。
2. 场景化判断:是否需要多卡?
场景 A:单用户 / 低并发服务 (Single User / Low Concurrency)
- 需求:一个用户连续对话,或者 QPS < 5。
- 结论:单卡绝对足够。
- 无论是 A100 还是 H100,单卡处理 7B/13B 都能提供丝滑的体验。
- 多卡反而会增加通信开销(NVLink/CUDA IPC),降低首字延迟(TTFT),除非是为了极端的并发。
场景 B:高并发服务 (High Concurrency)
- 需求:同时服务多个用户(例如 QPS > 20-50,取决于具体负载)。
- 结论:单卡可能成为瓶颈,但原因不是“装不下”,而是“算不过来”。
- 显存方面:单卡依然装得下所有模型权重。
- 吞吐量方面:如果并发太高,单卡的显存带宽会被占满,导致排队等待。
- 解决方案:
- 多卡并行:使用张量并行(Tensor Parallelism, TP)或多路并行(Pipeline Parallelism)来分摊计算压力,提升总吞吐量。
- 批处理优化:使用 vLLM 等框架的 Continuous Batching 技术,可以在单卡上最大化并发效率,往往比简单堆多卡性价比更高。
- 混合部署:如果是生产环境,通常建议至少 2 卡起步以保障 SLA(服务等级协议),防止单点故障。
场景 C:超长上下文 (Long Context)
- 需求:需要处理 128k 甚至 200k+ tokens 的上下文。
- 结论:
- 7B 模型:单卡 A100/H100 轻松应对,无需多卡。
- 13B 模型:如果使用 FP16 且上下文极长,可能会接近 80GB 上限。此时必须使用量化(INT4/INT8)。如果强制用 FP16 跑超长上下文,可能需要双卡(将模型切分)或更大显存的卡(如 H100 80GB + 更多内存扩展)。
3. A100 vs. H100 的差异
虽然两者单卡都够用,但体验有差异:
| 特性 | A100 (80GB) | H100 (80GB) | 对推理的影响 |
|---|---|---|---|
| 显存带宽 | ~2.0 TB/s | ~3.35 TB/s | H100 生成速度快约 50%-60% |
| 架构 | Ampere | Hopper | H100 支持 FP8 推理,能效比极高 |
| 成本效益 | 性价比高 | 价格昂贵 | 对于 7B/13B 这种小模型,H100 的性能溢出严重,A100 性价比更高 |
| 适用性 | 完美胜任 | 性能过剩 | 除非预算充足或追求极致低延迟,否则 A100 已足够 |
4. 关键建议与最佳实践
如果你决定使用单卡进行部署,为了获得最佳效果,请务必注意以下几点:
-
必须使用量化:
- 强烈建议使用 INT4 量化(如
bitsandbytes,AWQ,ExLlamaV2)。 - 对于 7B/13B 模型,INT4 带来的精度损失几乎不可感知,但能显著减少显存占用并大幅提升推理速度(因为受限于带宽,数据量越小越快)。
- 强烈建议使用 INT4 量化(如
-
选择合适的推理引擎:
- 不要使用原生 PyTorch 脚本。
- 推荐使用 vLLM(目前业界标准,支持 PagedAttention,并发效率极高)、Text Generation Inference (TGI) 或 Ollama (本地快速部署)。
- 这些引擎能在单卡上通过动态批处理(Continuous Batching)实现极高的吞吐量。
-
何时考虑多卡?
- 当你需要同时服务数百个并发请求时。
- 当你需要运行更大的模型(如 70B)时。
- 当你需要极低的首字延迟(TTFT)且并发量很大时。
- 注意:对于 7B/13B,多卡并行(TP=2)通常会增加启动时间和调度复杂度,收益可能不如单卡配合高并发优化来得直接。
总结
- 7B 模型:单卡 A100/H100 绰绰有余。即使不量化也能流畅运行,量化后更是性能过剩。
- 13B 模型:单卡 A100/H100 完全足够(前提是开启 INT4 量化)。
- 是否需要多卡:
- 单用户/常规业务:不需要。单卡即可提供毫秒级响应。
- 超高并发/企业级 SLA:建议多卡,主要是为了提升吞吐量(Throughput)和容灾能力,而非因为单卡跑不动。
最终建议:先尝试在单卡 A100/H100 上使用 vLLM + INT4 量化 进行部署。只有在监控到显存带宽打满且并发队列过长时,再考虑扩容至多卡。
云知道CLOUD