外观
GPU 与硬件选型
一句话定义:硬件选型就是为"模型大小 × 延迟要求 × 吞吐需求 × 预算"找一台满足约束的机器——显存定容量下限,带宽定速度上限,算力定峰值吞吐。
行业洞察:绝大多数模型部署事故不是代码问题,而是硬件不匹配:7B 模型塞进 16GB 显存的 T4,OOM 重启一整天;风控推理延迟要求 5ms,却为省预算选了 CPU 裸奔。反过来,过度采购也常见——一个日调用 1 万次的模型用 A100,GPU 利用率长期 <5%,等于每年烧掉几十万电费。会算账的部署工程师,一半时间在算显存和带宽,另一半时间在压测验证自己的估算。
一、显存:硬约束,先算清这笔账
1. 模型显存估算公式
text
模型权重显存 ≈ 参数量 × 每参数字节数
运行时显存 ≈ 权重显存 × 1.2 倍余量(激活 + 中间张量 + 引擎开销)每参数精度字节:FP32=4、FP16/BF16=2、INT8=1、INT4=0.5。
常见 LLM 的推理显存(仅权重,不含 KV Cache):
| 模型 | 参数量 | FP16 | INT8 | INT4 |
|---|---|---|---|---|
| Llama-7B | 7B | ~14 GB | ~7 GB | ~3.5 GB |
| Llama-13B | 13B | ~26 GB | ~13 GB | ~6.5 GB |
| Llama-70B | 70B | ~140 GB | ~70 GB | ~35 GB |
别忘 KV Cache 和激活
对 LLM 推理,KV Cache 随并发线性增长,可能比权重还大(7B 模型配 128 并发时 KV Cache 可吃掉 40GB+)。这套"显存账本"的完整算法见 大模型推理优化。
2. 显存不够时的三条路(按优先级)
- 量化:FP16 → INT8 立省一半,INT4 省 75%,见 量化;
- 卸载(offload):把不活跃权重放 CPU 内存/磁盘,牺牲延迟换容量;
- 换卡/多卡:张量并行把权重切到多卡,见 大模型推理优化。
二、GPU 关键指标:三看一不看
| 指标 | 单位 | 意义 | 对推理的影响 |
|---|---|---|---|
| 显存容量 | GB | 能装多大的模型 | 硬约束,不够就 OOM |
| 显存带宽 | GB/s | 每秒搬多少数据 | 决定 memory-bound 算子的速度(推理主战场) |
| 算力 | TFLOPS(FP16/INT8) | 每秒算多少次运算 | 决定 compute-bound 算子的上限(训练/大 batch) |
| NVLink 互连 | GB/s | 多卡通信带宽 | 决定多卡并行(张量并行)效率 |
"一看"是哪个? 对在线推理:先看显存容量,再看显存带宽,最后才算力。因为推理是带宽密集型(见 推理:从前向传播到推理引擎),一张高带宽的中端卡,常常比高算力的旗舰卡更适合小 batch 在线推理。
推理是带宽密集型,训练是算力密集型
Roofline 视角:每个算子有"算术强度"(FLOP/byte)。小 batch 推理的算术强度极低(每读一个权重字节只做几次运算),瓶颈在带宽;大 batch 训练算术强度高,瓶颈在算力。这解释了为什么:
- T4(带宽 320 GB/s)跑小 batch 与 A100(带宽 2 TB/s)跑小 batch 的差距,远小于两者算力(65 vs 312 TFLOPS)的差距;
- INT8 量化对推理提速接近 2 倍(带宽减半),对训练意义不大。
三、主流推理 GPU 对比
以 2024 年市场在售/常见机型为例(参数为公开规格近似值,采购前以官方白皮书为准):
| GPU | 显存 | 显存带宽 | FP16 算力 | 典型用途 |
|---|---|---|---|---|
| T4 | 16 GB | 320 GB/s | 65 TFLOPS | 入门在线推理、批量小模型 |
| L4 | 24 GB | 300 GB/s | 121 TFLOPS | T4 的升级替代、视频/视觉 |
| A10 | 24 GB | 600 GB/s | 125 TFLOPS | 中型在线推理、多路小模型 |
| L40S | 48 GB | 864 GB/s | 362 TFLOPS | 大模型推理、训练两相宜 |
| A100 40G/80G | 40/80 GB | 1.5~2 TB/s | 312 TFLOPS | 大模型、张量并行、训练 |
| H100 | 80 GB | 3.35 TB/s | 989 TFLOPS(含 sparse) | 旗舰推理与训练 |
| RTX 4090(消费级) | 24 GB | 1 TB/s | 330 TFLOPS | 开发、内部工具、小规模服务(无 ECC/没 vGPU) |
消费卡 vs 专业卡
RTX 4090 性价比极高(性能接近 A10 的两倍),但没有 ECC 内存、不支持 vGPU 虚拟化、无数据中心级散热与稳定性认证,且服务条款禁止数据中心使用。实验/开发可买,生产请走专业卡。
选型经验法则(模型 < 20B、在线推理):
text
模型 FP16 能塞进 1 张卡(≤ 24GB)且 QPS 要求不高 → L4 / A10
模型 FP16 塞进 1 张卡但 QPS 高(>200) → L40S / A100
模型 > 1 张卡装不下(≥ 70B) → 多卡张量并行(H100/A100×N)四、CPU 推理:被低估的第二战场
CPU 推理在 LLM 时代重新走红(llama.cpp 在普通笔记本上跑 7B 量化模型可达 5~10 token/s)。它的优化关键:
- 指令集:AVX2 → AVX-512 → AMX(Intel),差距可达 3~5 倍;
- 库:oneDNN(原 MKL-DNN)、OpenBLAS、llama.cpp 自研 ggml;
- 缓存友好:把权重重排成 CPU 友好的内存布局,避免 cache miss。
什么场景选 CPU:低 QPS + 小模型 + 省钱,以及边缘无 GPU 环境。判断规则见 推理:从前向传播到推理引擎 第四节。
五、NPU / TPU 与定制芯片
| 芯片 | 代表 | 定位 | 推理表现 |
|---|---|---|---|
| 边缘 NPU | 华为昇腾 Atlas、RK3588 NPU、Apple Neural Engine | 端侧/边缘 AI | 能效比极高,但算子支持窄 |
| 云 TPU | Google TPU v5e | 云上大模型训练与推理 | 算力强,绑定 TensorFlow/JAX 生态 |
| 其他 ASIC | AWS Inferentia、Groq LPU | 专用推理 | Inferentia 性价比好,生态约束明显 |
选型逻辑:NPU/ASIC 的诱惑是成本,风险是生态锁定。模型算子一旦不兼容,要么改写要么放弃。多数团队的做法是"GPU 打底,特定场景试点 NPU",而不是一上来就全量迁移。
六、多卡方案:并行三兄弟
模型单卡放不下,或单卡吞吐不够时,考虑多卡。三者的分工(详见 大模型推理优化 与 论文:并行与分布式推理):
text
数据并行:每卡一份完整模型,吃不同 batch ── 解决"吞吐不够"
张量并行:权重按层切到多卡,卡间频繁通信 ── 解决"单卡放不下"
流水并行:按层分组到多卡,卡间传激活 ── 解决"单卡放不下 + 通信省"要点:张量并行每加一张卡,通信开销就增加一分,通常 2~8 卡最佳;超过 8 卡建议结合流水并行。多卡方案必须有 NVLink/InfiniBand 高速互连,否则通信反噬性能。
七、云端选型决策表
按"模型规模 × 目标 QPS"粗略估算(单实例,假定动态 batching 生效):
| 模型规模(FP16 权重) | QPS < 10 | QPS 10~100 | QPS 100~1000 | QPS > 1000 |
|---|---|---|---|---|
| < 1 GB(小型 CNN/MLP) | CPU 2~4 核 | CPU 8 核 / T4 | T4×1~2 | L4×2+ |
| 1~7 GB(BERT 级) | T4 | T4 / L4 | L4×1~2 | L40S×2+ |
| 7~30 GB(7B~13B LLM) | L4 | L4 / L40S | L40S / A100 | A100×2+(张量并行) |
| > 30 GB(70B+) | 不现实 | A100/H100×2 | A100×2~4 | H100×4+(张量+流水并行) |
表格只是起点
真实 QPS 上限取决于模型、batch、延迟预算,必须用压测校准。方法见 压测与容量规划:先单实例压出最大 QPS,再按目标 QPS 反推实例数,并预留 30% 冗余应对流量尖峰。
一个完整的选型算例
目标:部署一个 13B 模型(FP16 约 26GB),要求 P99 延迟 < 1s,日均调用 100 万次(平均 QPS ≈ 12,峰值 ≈ 60)。
text
1) 显存:FP16 权重 26GB,加激活与 KV Cache → 单卡需 ≥ 48GB → L40S/A100
2) 带宽:峰值 60 QPS,若连续批处理吞吐可达 1000+ token/s → 单卡带宽够
3) 算力:LLM 生成阶段带宽受限,算力非瓶颈
4) 结论:1× L40S(48GB)起步,压测后按需扩到 2×权衡与取舍
| 决策点 | 选项 | 怎么选 |
|---|---|---|
| 容量优先 vs 速度优先 | 显存大的卡 vs 带宽高的卡 | 先满足容量,再在带宽/算力间权衡 |
| GPU vs CPU | GPU 快但贵;CPU 便宜但慢 | QPS 高、延迟敏感选 GPU;低 QPS 小模型选 CPU |
| 专业卡 vs 消费卡 | 稳定 vs 便宜 | 生产选专业卡,开发可用消费卡 |
| 单卡 vs 多卡 | 简单 vs 容量/吞吐 | 先量化省显存,还不够再上多卡 |
| GPU vs NPU/ASIC | 生态好 vs 成本低 | 常规 GPU 打底,稳定场景试点 ASIC |
一句话总结:显存定能不能跑,带宽定跑多快,算力定能撑多高——先算账、再选卡、最后压测校准。
延伸阅读
- 推理:从前向传播到推理引擎 —— 带宽 vs 算力的 Roofline 分析
- 量化 —— 显存不够时的第一优先级解法
- 大模型推理优化 —— KV Cache 显存账本与多卡并行
- 性能优化与容量规划 —— 压测如何校准硬件估算
- 压测与容量规划 —— 从估算到实测的完整方法