案例研究
真实世界的推理部署案例,学习前人的经验教训
案例列表
案例 1:70B 模型从 PoC 到生产上线
背景: 业务需要接入 70B 大模型,支撑智能客服场景。
初始方案: 用 PyTorch 直接加载模型,两张 A100-80G,FP16。
遇到的问题:
| 问题 | 现象 | 根因 |
|---|---|---|
| 延迟高 | P99 = 2.5s | 没有优化,每步都加载全部权重 |
| 显存碎片 | batch=16 就 OOM | 连续分配 KV Cache 产生碎片 |
| 吞吐低 | 只有 30 tok/s/GPU | Static Batching 被长请求阻塞 |
| 成本高 | $4000/月/GPU | 利用率只有 35% |
优化过程:
Step 1: 换 vLLM
→ PagedAttention 解决碎片
→ batch 从 16 提升到 128
Step 2: Continuous Batching
→ GPU 利用率从 35% 提到 70%
Step 3: INT8 量化
→ 显存降一半,batch 还能更大
Step 4: 建立监控
→ 发现夜间利用率只有 5%
→ 引入弹性缩容,夜间减少实例
最终结果:
| 指标 | 优化前 | 优化后 | 改善 |
|---|---|---|---|
| P99 延迟 | 2500ms | 400ms | 6x |
| 吞吐 | 30 tok/s | 100 tok/s | 3x |
| GPU 利用率 | 35% | 75% | 2x |
| 单请求成本 | $0.01 | $0.003 | 3x |
| 月成本 | $32000 | $9600 | 3x |
复盘: 如果重来,会一开始就用 vLLM + 量化,而不是自己搭 PyTorch。Profiling 也应该更早做。
案例 2:新模型 1 周上线流程
背景: DeepSeek 发布新版本,需要在 1 周内部署到测试环境并出评估报告。
Day 1-2:信息收集 + 部署
- 阅读论文和博客
- 下载模型权重
- vLLM 启动,验证能跑通
Day 3-4:性能测试
- 跑标准 benchmark
- 对比上一版本的性能
- 测试量化兼容性
Day 5:评估报告
- 性能数据、精度评估
- 适用场景判断
- 上线建议
Day 6-7:小范围灰度
- 切 5% 流量测试
- 监控延迟和错误率
案例 3:GPU 利用率从 40% 提到 75%
背景: 线上推理服务 GPU 利用率长期只有 40%,成本浪费严重。
排查过程:
1. nvidia-smi 看到 GPU 利用率确实低
2. nsys profile 发现:
- 30% 时间在等 CPU 发请求
- 40% 时间在 decode
- 30% 时间 GPU 闲置(batch 不满)
根因:
- 请求量不够,batch 经常不满 → 实例过多
- CPU 处理慢(JSON 解析 + tokenization)→ GPU 等数据
优化:
| 优化项 | 效果 |
|---|---|
| 减少实例数,提高单实例 batch | 利用率 +15% |
| CPU 侧用多线程预处理 | 利用率 +10% |
| 引入前缀缓存 | 利用率 +10% |
| 合并短回复请求 | 利用率 +5% |
结果: 40% → 75%,成本降低约 40%。