Appearance
推理框架
状态:入门理解 · 更新于 2026-09-14
大模型推理的难点通常不是单次矩阵乘,而是不同请求的输入长度、生成进度和资源需求都不一样。推理框架要在正确性、延迟、吞吐和显存之间动态调度。
一次请求的生命周期
text
请求进入
↓
排队 / 调度
↓
Prefill:处理输入 Prompt
↓
Decode:逐 token 生成
↓
采样、停止判断、流式返回
↓
释放 KV Cache 与请求状态Prefill 更偏计算密集,Decode 往往更受访存和调度影响。把两者混在同一个“平均延迟”里,会掩盖真实瓶颈。
KV Cache
自回归生成时,历史 token 的 Key/Value 可以复用,避免每一步重复计算。单请求 KV Cache 的近似显存量为:
text
层数 × 2(K/V) × KV 头数 × 每头维度 × 序列长度 × 每元素字节数MQA/GQA 通过减少 KV 头数降低缓存占用和读取压力;代价是表达能力、质量或实现复杂度需要结合模型验证。上下文越长,KV Cache 越容易成为容量与带宽瓶颈。
PagedAttention 与连续批处理
连续批处理(Continuous Batching)在请求完成或新请求到达时动态调整批次,不必等待整个静态 Batch 结束。PagedAttention 将 KV Cache 按块管理,让不同长度请求按需分配和回收,减少预留造成的碎片和浪费。
这些机制解决的是调度与内存管理问题,不会自动消除模型计算、网络序列化或采样开销。
常见优化
| 优化 | 主要收益 | 需要关注 |
|---|---|---|
| KV Cache | 避免重复计算历史 token | 显存容量、带宽和回收 |
| Continuous Batching | 提高设备利用率 | 排队策略、SLO 公平性 |
| Prefix Caching | 复用相同前缀的 KV | 命中率、失效和租户隔离 |
| Quantization | 降低显存与访存 | 精度、Kernel 支持、校准 |
| Kernel Fusion | 减少中间读写和启动 | 寄存器、shape 覆盖、可维护性 |
| Speculative Decoding | 用小模型辅助生成 | 接受率、额外模型成本 |
vLLM 与 TensorRT-LLM
两者都覆盖高性能推理,但侧重点和适配方式不同。vLLM 以通用服务化、PagedAttention 和动态调度见长;TensorRT-LLM 更强调 NVIDIA 平台上的图优化、Kernel 和量化能力。实际选型要用目标模型、GPU、上下文长度、并发和 SLO 做基准测试,不应只比较项目名称。
评测指标
- 首 token 延迟(TTFT);
- 每输出 token 延迟(TPOT)与端到端延迟;
- 吞吐(requests/s、tokens/s);
- 并发、队列等待和超时率;
- KV Cache 命中率、显存峰值和碎片;
- 不同长度分布下的 P50/P95/P99。
压测时固定模型、量化、采样参数和请求长度分布;同时验证输出质量、错误率和取消请求后的资源回收。
信息来源
延伸阅读
更新日志
- 2026-09-14:补充请求生命周期、KV Cache、调度与评测指标。