跳转到主要内容

QSA 式稀疏选择、HC 与输出门控:原理和推理成本

沿着历史 token 选择、残差信息流和 Attention 输出,理解三个结构改动及其性能账本。

· 约 6 分钟阅读

本文目录

理解这三项技术,可以先问三个问题:本次 Attention 读哪些历史 token?各层之间怎样传递信息?Attention 算出的信息有多少继续向后传? 它们分别对应稀疏选择、HC 和输出门控。

30 秒复习
  • 一句话:稀疏选择决定读哪些历史,HC 决定多路残差怎样交换信息,门控决定 Attention 输出怎样传递。
  • 三个判断:索引筛选需要计算;HC 需要混合与状态读写;门控需要生成门值并应用到输出。
  • 核心模型:主 Attention 的节省,减去索引、残差混合和门控开销,再结合显存约束判断服务产能。
  • 边界:本文用公开的 DSA、HC 和 Gated Attention 解释机制;“QSA 式”指索引评分后选取稀疏 KV 的结构,具体压缩方式、HC 参数化和门控粒度以模型实现为准。

1. 稀疏选择:先筛历史,再做主 Attention

普通 Attention 让当前 Query 与全部可见 Key 交互,再对 Value 加权求和。索引器先用较低维的 Query/Key 计算相关性,选出 TopK 位置,主 Attention 只读取入选的 K/V。DSA 的 lightning indexer 就采用这类思路。DeepSeek-V3.2 技术报告

flowchart LR
    X[当前隐藏状态] --> I[低维索引投影]
    H[历史索引 Key] --> S[相关性评分]
    I --> S
    S --> K[TopK 位置]
    K --> A[读取选中 KV 并做 Attention]
    V[历史主 KV] --> A

直觉上,主 Attention 从读一整本书变成读候选段落;索引器仍需完成检索。设历史长度为 SS,索引维度为 did_i、头数为 hih_i,主 Attention 选取 KK 个 token:

成本一次 Decode 的主要增长项
索引评分约 2Shidi2Sh_id_i 次浮点运算;若索引 Key 按比例 cc 池化,则候选长度约为 S/cS/c
TopK扫描评分并选择位置,成本依赖选择算法和融合方式
主 Attention读取约 KK 份 K/V,完成 QK 和加权 V
常驻缓存保存后续请求可能选中的主 KV,以及索引 Key

选 2K 个 token,描述的是访问量;缓存容量仍由保留的历史决定。 模型可以每步选择不同历史位置,因此不能据此把完整 KV 存储直接缩成 2K。

实现还决定评分是否写回 HBM、选择是否融合、离散 KV 读取是否高效。vLLM 的 DSA 介绍分别讨论索引与稀疏 Attention kernel,这两段都需要计时。vLLM 实现说明

前缀复用为什么仍有评分成本

设缓存前缀长 PP,新增输入长 UU。新增 Query 仍然需要检索已有历史。密集因果交互的面积近似为:

PU+U22=(P+U)2−P22PU+\frac{U^2}{2}=\frac{(P+U)^2-P^2}{2}

若索引候选按 cc 压缩,评分交互数量近似再除以 cc。90% 前缀复用减少了新投影与新 Query 数量,但新增 Query 仍会访问前缀索引。仿真必须明确接口里的长度是 UU 还是 P+UP+U。可配合因果 Attention 与 KV 命中面积一起看。

2. HC:让多路残差信息流交换信息

普通残差连接可写成 x′=x+F(x)x'=x+F(x)。HC 将残差状态扩成多路,学习如何混合这些状态作为层输入,再把层输出写回各路,同时保留各路之间的连接。动态 HC 的混合权重还会依赖当前输入。Hyper-Connections 论文

它给网络更多选择:哪些历史特征保留、哪些交给当前层处理、结果写回哪一路。主 Attention/FFN 的宽度可以保持原样,多路状态主要出现在残差通道。

算性能时,按实际参数化列出混合投影、状态读写和残差更新。如果某实现用 nh→r→nhnh\rightarrow r\rightarrow nh 的两次低秩投影,单 token 投影开销约为 4nhr4nhr FLOPs,参数量约为 2nhr2nhr;这里 nn 是路数、hh 是隐藏维度、rr 是秩。这是该低秩实现的成本式,其他 HC 参数化应从对应张量形状重算。

观察 HC 的有效入口是每层新增的 GEMM、ElementWise 和 activation 工作区。层数翻倍时,每层重复的这些工作也随之翻倍。

3. 输出门控:控制 Attention 结果怎样传递

令 A=Attention⁡(Q,K,V)A=\operatorname{Attention}(Q,K,V),一种 SDPA 输出门控为:

G=σ(XWg),Y=(A⊙G)WoG=\sigma(XW_g),\qquad Y=(A\odot G)W_o

门值根据当前输入产生,在 Attention 输出投影前调节各个特征。Gated Attention 论文对比了门控位置和粒度,发现 SDPA 后的门控可以改善模型表现与训练稳定性,并缓解 Attention sink。Gated Attention 论文

性能上有两笔账:生成 GG 的投影,以及 sigmoid/逐元素相乘。逐元素门控有时与 Q 投影融合,此时 Q 一侧同时输出 Query 和 gate,输出宽度增加;K/V 宽度保持原值。按 head 生成一个门值与逐元素生成门值,投影尺寸也不同。

门值接近零体现信息选择。要把它变成硬件加速,还需要执行路径确实跳过计算;常规稠密 kernel 仍会计算这些元素。

4. 仿真怎样把三项接起来

模块至少核对的成本容易遗漏的部分
索引器Q/K 与评分权重投影、池化、评分、选择只缩小主 Attention 的窗口
缓存主 KV、索引 Key、选择结果及工作区把访问稀疏等同于缓存缩小
HC按实现生成混合操作与状态读写只记录配置中的扩展路数
门控门值投影、sigmoid/乘法只解析字段,或只增加投影宽度

验证时先固定 batch 与并行方案,分别关闭某一项,确认对应算子和开销确实变化;再重新搜索最优配置,观察显存与时延约束是否改变。这样能分清“单次执行变慢”和“最优 batch 换档”两种影响。

索引选择若只有解析估算,应记录融合假设与效率来源,再用实测 kernel 校准。最终比较服务产能,还要按 Prefill、Decode 两端的卡时配平;MTP 的每步产出已经进入 TPOT 后,只计一次。

继续阅读

修改历史1 次提交