推理优化概述
AI推理是将训练好的模型部署到生产环境的关键环节。 推理优化直接影响用户体验和运营成本,是AI工程化的核心课题。
预计阅读时间:50分钟·难度:中级·更新时间:2024年4月
推理优化概述
推理面临的挑战
相比训练,推理面临着更苛刻的约束条件,需要在有限资源下实现最优性能。
推理的核心挑战
- 延迟要求:用户期望毫秒级响应,大模型推理动辄几秒
- 成本压力:推理持续运行,GPU成本高昂
- 显存限制:大模型显存需求超出单卡容量
- 吞吐瓶颈:高并发场景下服务能力不足
- 精度保持:优化后需保证模型效果不显著下降
优化目标
推理优化的核心指标
| 指标 | 说明 | 典型要求 |
|---|---|---|
| 首Token延迟 (TTFT) | 从请求到首个Token输出的时间 | < 500ms |
| Token生成速度 | 每秒生成的Token数 | > 50 tokens/s |
| 吞吐量 | 单位时间处理的请求数 | 最大化 |
| 显存占用 | 模型占用的显存 | 最小化 |
| 精度损失 | 优化前后效果差异 | < 1% |
优化维度
延迟优化
延迟直接影响用户体验,特别是对话类应用对TTFT非常敏感。
延迟优化策略
1. 模型层面 - 量化:INT8/INT4降低计算量 - 剪枝:移除冗余参数 - 知识蒸馏:小模型替代大模型 2. 系统层面 - 模型并行:切分模型到多卡 - Speculative Decoding:推测加速 - KV Cache优化:减少重复计算 3. 硬件层面 - 使用更强GPU - 优化数据传输 - 充分利用Tensor Core
吞吐优化
高并发场景需要最大化吞吐量,降低单个请求的平均成本。
吞吐优化技术
- 连续批处理:动态合并请求,提高GPU利用率
- 前缀缓存:复用公共前缀的KV Cache
- 异步处理:解码和采样并行
- 负载均衡:多实例智能调度
内存优化
大模型显存需求巨大,内存优化是部署的前提条件。
显存优化方案
模型显存估算: - 参数量 × 字节数/参数 - 70B FP16: 70 × 2 = 140GB - 70B INT4: 70 × 0.5 = 35GB 优化手段: ┌─────────────────────────────────────────┐ │ 方法 │ 压缩比 │ 精度损失 │ 速度 │ ├─────────────────────────────────────────┤ │ FP16量化 │ 2x │ 极小 │ 快 │ │ INT8量化 │ 4x │ 小 │ 快 │ │ INT4量化 │ 8x │ 中等 │ 快 │ │ GPTQ/AWQ │ 4-8x │ 小 │ 快 │ │ 量化感知训练 │ 4x │ 极小 │ 快 │ │ 模型并行 │ N卡分摊 │ 无 │ 中 │ │ CPU卸载 │ 显存→内存│ 无 │ 慢 │ └─────────────────────────────────────────┘
核心技术栈
量化技术
量化是最有效的优化手段,将高精度浮点数转换为低精度表示。
主流量化方法对比
| 方法 | 类型 | 特点 | 适用场景 |
|---|---|---|---|
| PTQ | 训练后量化 | 无需重训 | 快速部署 |
| GPTQ | 训练后量化 | 高精度INT4 | LLM量化 |
| AWQ | 激活感知 | 保护重要权重 | LLM量化 |
| QAT | 量化感知训练 | 精度最高 | 精度敏感场景 |
| GGUF | 文件格式 | CPU友好 | 本地部署 |
剪枝技术
移除模型中的冗余参数,减少计算量和存储需求。
剪枝策略
- 非结构化剪枝:移除单个权重,稀疏性高但需要特殊硬件支持
- 结构化剪枝:移除整行/列/通道,硬件友好
- 半结构化剪枝:N:M稀疏模式,A100/H100原生支持
知识蒸馏
用大模型(教师)指导小模型(学生)学习,在保持效果的同时大幅降低计算量。
蒸馏方法
教师模型 (GPT-4 1.8T参数)
│
│ 知识迁移
▼
学生模型 (7B-70B参数)
蒸馏类型:
1. 软标签蒸馏:使用软概率分布
2. 中间层蒸馏:对齐中间表示
3. 注意力蒸馏:迁移注意力模式
4. 渐进式蒸馏:多阶段蒸馏
典型效果:
- 模型减小: 10x-100x
- 精度保持: 90%-95%
- 速度提升: 10x-50x图优化与编译
常见图优化技术
- 算子融合:合并多个算子减少内存访问
- 常量折叠:预计算常量表达式
- 死代码消除:移除无效计算
- 内存规划:优化内存分配策略
- 内核自动调优:选择最优CUDA内核
推理框架对比
主流推理框架
| 框架 | 特点 | 适用场景 |
|---|---|---|
| vLLM | PagedAttention,高吞吐 | LLM服务 |
| TensorRT-LLM | NVIDIA优化,极致性能 | NVIDIA GPU |
| TGI | HuggingFace出品,易用 | 快速部署 |
| ONNX Runtime | 跨平台,通用性强 | 多硬件部署 |
| TensorFlow Serving | 成熟稳定,生态完善 | TF模型 |
| llama.cpp | CPU友好,轻量级 | 本地推理 |
选型指南
如何选择推理优化方案?
场景分析: 1. 低延迟要求(<100ms) → 模型量化 + TensorRT-LLM → 小模型 + 知识蒸馏 2. 高吞吐要求(批量服务) → vLLM + 连续批处理 → 前缀缓存优化 3. 显存受限(单卡部署大模型) → INT4量化(GPTQ/AWQ) → 模型并行/卸载 4. 成本敏感 → 量化到INT8/INT4 → 使用消费级GPU 5. 精度敏感 → QAT量化感知训练 → 保守量化策略