【大模型】- 推理优化
推理优化
加速语言模型推理
类型: 学习 | 语言: Python | 🏷 前置:《推理优化》(本系列第 11 篇)
学习目标
- 理解推理优化的关键技术
- 实现 KV 缓存加速自回归生成
- 使用连续批处理提高吞吐量
- 优化注意力计算
- 部署高性能推理服务
推理瓶颈
LLM 推理的主要瓶颈:
- 内存带宽:加载模型权重
- 计算:注意力和 FFN 计算
- 延迟:逐 token 生成
- 批处理效率:GPU 利用率
KV 缓存
KV 缓存是最重要的优化之一:
1 | class KVCache: |
使用 KV 缓存的注意力
1 | def attention_with_cache(query, key, value, kv_cache=None, input_pos=None): |
连续批处理
连续批处理允许动态添加和移除请求:
1 | class ContinuousBatchScheduler: |
Flash Attention
Flash Attention 优化注意力计算:
1 | from torch.nn.functional import scaled_dot_product_attention |
Flash Attention 2
1 | # Flash Attention 2 需要安装 |
投机解码
使用小模型猜测,大模型验证:
1 | class SpeculativeDecoder: |
推理服务
1 | from fastapi import FastAPI, HTTPException |
性能监控
1 | import time |
优化技术总结
| 技术 | 效果 | 复杂度 | 适用场景 |
|---|---|---|---|
| KV 缓存 | 高 | 低 | 所有场景 |
| Flash Attention | 高 | 中 | 长序列 |
| 连续批处理 | 中 | 高 | 服务部署 |
| 投机解码 | 中 | 高 | 低延迟 |
| 量化 | 高 | 中 | 内存受限 |
总结
推理优化通过多种技术加速 LLM 推理。KV 缓存、Flash Attention 和连续批处理是关键优化。选择合适的优化技术需要平衡延迟、吞吐量和资源约束。
下一步
下一课将构建一个完整的 LLM 管道,整合所有优化技术。
📚 本文改编自 AI Engineering from Scratch(MIT License · 作者 Rohit Ghumare),中文内容来自官方中文镜像。原课程共 503 课 · 20 阶段 · 免费开源,教程网站见 aiengineeringfromscratch.com。
📝 自我检查(课程配套测验)
Q1(学前) LLM 推理的主要瓶颈是什么?
A. 磁盘 I/O
B. 内存带宽——自回归生成需逐 token 读取全部模型权重
C. 网络延迟
D. 分词速度
答案: B 解析: LLM 推理是 memory-bound:每生成一个 token 需读取全部模型权重。7B FP16 模型每 token 约 14GB 内存读取。优化重点是减少内存传输而非 raw 计算。
Q2(学前) KV cache 在 LLM 推理中的作用是什么?
A. 存储模型权重
B. 缓存先前 token 的 key 和 value 向量,避免每步重复计算
C. 缓存最终输出文本
D. 存储训练数据
答案: B 解析: 自回归生成中,先前 token 的 K/V 向量不变。KV cache 存储它们,每步只计算新 token 的 K/V。这将对已见 token 的 O(n) 注意力计算变为 O(1),但随序列长度增加内存。
Q3(学后) 什么是 speculative decoding(推测解码)?
A. 用更大模型生成所有 token
B. 小 draft 模型快速生成候选 token,大 target 模型并行验证,接受匹配 token 以加速
C. 随机猜测 token
D. 跳过某些层
答案: B 解析: 推测解码用小/fast draft 模型提出多个候选 token,大 target 模型一次前向并行验证。接受的 token 使有效吞吐量超过逐 token 生成,draft 与 target 分布接近时尤其有效。
Q4(学后) 连续 batching 为什么比静态 batching 更适合 LLM 服务?
A. 它使用更大 batch
B. 请求完成即从 batch 移除、新请求加入,提高 GPU 利用率——静态 batching 需等最长请求完成
C. 它消除 KV cache
D. 它只适用于训练
答案: B 解析: 静态 batching 中,batch 内一个长请求会阻塞其他已完成的请求。连续 batching(vLLM、TGI)动态管理 batch 组成,完成的序列立即被新请求替换,显著提高吞吐量。
Q5(学后) PagedAttention(vLLM)解决什么问题?
A. 模型训练速度
B. KV cache 内存碎片和浪费——像 OS 虚拟内存一样分页管理 KV cache
C. 网络带宽
D. 分词效率
答案: B 解析: KV cache 为最大序列长度预分配,短请求浪费内存。PagedAttention 将 KV cache 分成固定大小块,按需分配,类似虚拟内存分页,在相同 GPU 内存下显著提高 batch 大小和吞吐量。
- 标题: 【大模型】- 推理优化
- 作者: 宋
- 创建于 : 2026-08-19 09:12:00
- 更新于 : 2026-08-21 16:20:12
- 链接: https://sxl-space.tk/2026/08/19/010_LLM/010_LLM-12-InferenceOptimization/
- 版权声明: 版权所有 © 宋,禁止转载。