大模型推理优化技术概览
推理优化的本质:用内存换时间、用带宽换算力、用并行换吞吐。从资源瓶颈看,最终落到 5 个维度——计算(算子)、内存(KV Cache)、带宽(并行/通信)、调度(批处理/分离)、模型(量化/解码);从工程手段看,可归纳为 5 个方向(见第 2 节)。以下按「引擎 → 方向 → 技术 → 分层要点 → 指标 → 趋势」展开。
1. 推理引擎与服务框架
生产环境通常基于开源推理引擎构建,而非从零写 kernel。主流选择:
| 引擎 | 定位 | 代表特性 | 深入阅读 |
|---|---|---|---|
| vLLM | 高吞吐、内存高效的开源推理引擎 | PagedAttention、Continuous Batching、Automatic Prefix Caching、异步调度器(V1)、内置量化与投机解码 | vLLM 架构设计 |
| SGLang | 面向复杂推理与多模态的高性能框架 | RadixAttention(前缀树缓存)、分层缓存(HiCache)、PD 分离、结构化输出 | SGLang 介绍 |
| TensorRT-LLM | NVIDIA 官方优化推理引擎 | In-flight Batching、深度图优化、FP8/INT4 内核、TP/PP/EP 多级并行 | — |
| MindIE | 华为昇腾推理引擎(MindIE-Service 服务化 / MindIE-Turbo 加速库) | 昇腾 NPU 图编译、量化工具、服务化部署 | GPU vs 昇腾全景对比 |
| DeepSpeed-Inference / FlashInfer | 算子/内核级库 | 高性能 attention 与 GEMM 内核、稀疏模板 | — |
2. 优化方向总览
推理优化可归纳为 5 个方向:
- 降低 Host 开销:CUDA Graph 使能、异步调度、异步 KV 传输、PP 并行
- 避免快慢卡(负载不均):DPLB(数据并行负载均衡)、EPLB(专家并行负载均衡)、动态 CP
- 降低通信占比:掩盖(DBO、共享专家多流)、效率(分层通信)、通信量(量化通信、关闭 TP)
- 低精度量化:W8A8、W4A8、小模型训练优化、SP / DSA-CP
- 算子融合:MegaMoE、Triton Reject Sampler、访存优化(权重预取、KV Cache 量化)、显存优化(投机解码、WeightShard、SURESH、去冗余计算)
3. 关键技术一览
| 技术 | 一句话定位 | 深入阅读 |
|---|---|---|
| KV Cache | 缓存历史 K/V,避免重复计算自回归前序 | KV Cache 机制详解 |
| PagedAttention | 显存分页管理(OS 虚拟分页思想),消除 KV 碎片与浪费 | PagedAttention |
| Continuous Batching | 请求级动态调度,迭代级回收空闲槽位,消除批间等待 | 连续批处理 |
| Chunked Prefill | 长请求分块预填充,与解码交错,避免阻塞与长尾延迟 | Chunked Prefill |
| Prefix Caching | 前缀树/哈希复用共享前缀 KV,命中即省预填充 | Prefix Caching |
| Constrained Decoding | 约束解码(文法/正则/JSON Schema),保证输出格式 | — |
| Speculative Decoding | 草稿模型多 token 并行 + 大模型校验,突破串行瓶颈 | 推测解码完全指南 |
| KV Cache 压缩 | 量化 / 剪枝淘汰 / 检索式 / 稀疏,压缩缓存体积 | KV Cache 管理与优化架构 |
| Prefill-Decode 分离 | 两阶段分离部署,解耦算力需求,消除互相干扰 | Prefill-Decode 分离 |
| FlashInfer | 高性能推理算子库,统一 attention kernel 调度与稀疏模板 | — |
4. 分层要点
从底层内核到上层服务,优化分别在三个层次展开:算子层(怎么算)、模型层(算什么东西)、系统层(怎么调度)。上层依赖下层,下层为上层提供算力底座。
4.1 算子层
- 模型算子:Embedding、Linear、Matmul、RoPE、MHA/GQA/MQA、RMSNorm、Add、Softmax、MLP、MoE
- 前后处理算子:Argmax、Top-K、Top-P、Temperature
- Attention 优化:FlashAttention V1–V4(V4 面向 Blackwell、支持 FP8/NVFP4)· FlashInfer · RingAttention · PagedAttention · MLA(FlashAttention 详解、MLA)
- 算子加速:FlashMLA(DeepSeek 算子库)· GEMM 优化 · Fused MoE · DeepGEMM
- 编译优化:torch.compile · CUDA Graph · Triton · MegaMoE(CUDA Graph 一次捕获、多次回放,显著降低 Host 启动开销)
4.2 模型层
- 算子融合:Add + RMSNorm 融合 · 计算与读写显存融合 · Fused MoE / FlashMLA
- 推理特点:自回归 · KV Cache · Packing(长度分组填充)
- 模型量化:Weight-only(GPTQ、AWQ)· Weight-Activation(SmoothQuant、W8A8、FP8);W4A8 精度损失显著,W8A8 为生产甜点
- KV Cache 量化:FP8 / INT4 / NVFP4,与权重量化互补,进一步省显存
- MoE 优化:专家并行(EP)· 专家负载均衡(EPLB)· 共享专家多流 · 去冗余计算(MoE 图解指南)
- 模型通信:AllReduce / AllGather / All2All · Tree / Ring AllReduce
4.3 系统层
- 并行策略:DP(数据)· TP(张量)· PP(流水线)· EP(专家)· CP(上下文/序列)→ 训练技术概论
- 调度与批处理:Continuous Batching · Chunked Prefill · SLO 感知 · Prefix Caching · 优先级 / 公平 / 长度感知
- KV Cache 分级:L1-GPU / L2-CPU / L3-Remote · Paged KV / RadixAttention · Offload / 预取 / 淘汰
- 投机解码:EAGLE V1–V3(基于特征图草稿)· MTP(多 token 预测)· Medusa(多 head 草稿)· DFlash · DSpark · 自投机 / N-gram
- PD 分离:DistServe · Mooncake(KVCache-centric)· TaiChi · HiCache(Prefill-Decode 分离)
- 稳定性保障:Daily Test / 性能基线 · Metrics / Logs / Trace · 降级 / 故障诊断 / 流量回放
5. 关键性能指标
衡量推理服务质量的核心指标(推理指标):
| 指标 | 含义 | 优化目标 |
|---|---|---|
| TTFT | 首 token 延迟(从请求到首个输出 token) | 越低越好(受 Prefill 影响) |
| TPOT / ITL | 每 token 输出延迟 / token 间延迟 | 越低越好(受 Decode 影响) |
| Throughput | 单位时间完成的请求/token 数 | 越高越好 |
| Context Length | 可处理的最大序列长度 | KV Cache 与显存共同决定 |
| SLO 达标率 | 延迟/吞吐目标(SLO)下的请求达标比例 | 越高越好(受调度器影响) |
6. 新兴趋势
- 长上下文推理:KV Cache 分级与压缩、稀疏注意力(MiniMax Sparse Attention)、视觉-文本压缩,支撑百万级上下文
- 多模态推理:视觉 token 压缩、跨模态注意力,降低视觉输入显存占用
- MoE 大规模部署:宽专家并行(Wide EP)、专家负载均衡成为吞吐关键
- 异构与国产生态:昇腾(MindIE、vLLM-Ascend)、国产 GPU 适配成为国内落地重点(GPU 与 NPU 硬件组成)
- 编译驱动优化:torch.compile + CUDA Graph 组合持续降低 Host 侧开销
延伸阅读
- GPU 工作原理:视频 · GPU 与 NPU 硬件组成 · 性能第一性原理
- 注意力基础:MHA、MQA 与 GQA · MLA · FlashAttention 详解
- 调优与评测:vLLM 性能调优 · SGLang 性能调优 · 推理指标 · 解码采样参数解析
- 模型与生态:MoE 图解指南 · DeepSeek-R1 · GPU vs 昇腾全景对比 · NPU 融合注意力算子