⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

扩展:模型推理机制与资源瓶颈 ​

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明。

所属章节: 第 5 章:LLM 基础


Prefill 与 Decode ​

自回归模型推理通常分为两个阶段:

text
Prefill:一次处理输入 token,建立各层状态
Decode:每次生成一个 token,并重复读取模型权重与历史状态

Prefill 适合并行矩阵计算;Decode 每步计算量较小但串行依赖强,常受内存带宽和调度开销限制。优化前应分别测量首 token 延迟、逐 token 延迟和吞吐。

KV cache ​

如果每一步都重新计算全部历史 token 的 Key 和 Value,会产生重复工作。KV cache 保存各层历史 K/V,新 token 只计算自己的投影,再与缓存交互。

一个简化的缓存元素数量为:

2×L×T×Hkv×dhead

其中 L 为层数、T 为缓存长度、Hkv 为 K/V 头数。再乘 batch size 和每元素字节数,可估计缓存容量。

KV cache 减少重复投影,却随并发和上下文长度线性增长。MQA、GQA、缓存量化、分页管理或潜在表示压缩都在不同位置降低缓存成本,代价可能是实现复杂度或质量变化。

Flash Attention ​

标准注意力若显式写出完整分数矩阵,会产生大量高带宽内存读写。Flash Attention 按块计算,并在片上存储中完成稳定 softmax 所需的中间统计,从而避免保存完整中间矩阵。

它计算的是相同的精确注意力形式,主要减少内存访问和中间存储;标准全注意力的运算量仍随序列长度近似二次增长。具体速度取决于 GPU、数据类型、序列形状、mask 和内核版本,不能用固定倍数概括。

长上下文 ​

序列长度从 T 增加到 kT 时,完整注意力分数数量约增加到 k2 倍。处理长上下文可以从不同层面入手:

方法改变什么需要验证什么
滑动窗口每个 token 只看附近窗口远距离信息是否丢失
稀疏注意力使用固定或学习的稀疏连接稀疏模式是否匹配任务
分块/摘要压缩早期上下文压缩误差和事实遗漏
检索只加入相关片段召回率和引用正确性
分页 KV 管理改善缓存分配碎片率和调度开销

模型声明支持某个上下文长度,不代表在整个长度范围内都保持相同检索和推理能力。

权重量化 ​

量化把权重或激活映射到较低位宽。对对称权重量化,可写为:

q=clip(round(w/s),qmin,qmax),w^=sq

误差来自舍入、裁剪、分组尺度和异常值。按通道或较小分组通常更精细,但需要更多尺度元数据和更复杂内核。

需要区分:

  • 仅权重量化与权重—激活同时量化;
  • 训练后量化与量化感知训练;
  • 模型文件大小、运行时显存和真实吞吐;
  • 理论位宽与硬件是否有对应高效内核。

最小性能记录 ​

text
模型、量化与模型推理框架版本
GPU/CPU、数据类型和 batch size
输入长度、输出长度与并发
首 token 延迟、每 token 延迟和吞吐
权重、KV cache 与峰值显存
任务质量和长上下文回归结果

优化结果必须同时包含质量与运行条件。只报告“加速倍数”无法迁移到其他硬件和请求分布。


返回: 第 5 章:LLM 基础

本教程采用 CC BY-NC-SA 4.0 许可协议