
🧠 记忆锚点:训练要高吞吐地更新参数;推理要在动态请求下低延迟读权重、管 KV,并逐 token 生成。
💡 答案要点
核心区别:
| 维度 | 训练 | 推理 |
|---|---|---|
| 计算模式 | 并行(整句) | 串行(逐token) |
| 瓶颈 | 计算(FLOPs) | 内存带宽(I/O) |
| 批处理 | 大(128-1024) | 小(1-32) |
| 延迟要求 | 不敏感 | 极度敏感(<1s) |
| 显存占用 | 模型+梯度+优化器 | 模型+KV Cache |
为什么推理难优化?
自回归生成是串行的
训练:一次性处理整个句子 "今天天气真好" → 并行计算所有token 推理:一个个生成token "今天" → "天气" → "真" → "好" (必须串行)内存带宽瓶颈(Memory-bound)
每生成1个token: - 需要加载整个模型参数(7B = 14GB) - 计算量很小(几十 GFLOPS) - GPU 利用率 < 10% 问题:GPU 算力浪费,等待内存加载KV Cache 增长
上下文越长,KV Cache 越大 4K 上下文:1GB 128K 上下文:32GB 显存炸了!
性能对比(7B 模型,A100 GPU):
| 场景 | 吞吐量 | GPU 利用率 |
|---|---|---|
| 训练 | 1000 tokens/s | 80-90% |
| 推理(batch=1) | 50 tokens/s | 5-10% |
| 推理(batch=32) | 800 tokens/s | 40-50% |
面试话术:
"推理的核心挑战是内存带宽瓶颈。训练是计算密集型,推理是访存密集型。优化思路完全不同:训练优化算法,推理优化内存访问。"