← 返回 2026-09-11

HyQuant:面向大语言模型注意力的混合精度量化 HyQuant: Hybrid-Precision Quantization for LLM Attention

Jiatong Ding, Bingxin Xing, Yu Zhang, Dian Ding, Xiaodong Yi, Xianbin Ouyang, Feihu Zhou, Kun Zhang, Zhenyu Guo, Hao Pan, Guangtao Xue, Yiming Zhang 📅 2026-08-28 👍 17 2026-09-12 18:30
KV缓存压缩 LLM推理加速 模型量化 注意力机制 混合精度 长上下文

保留少数垂直线token和局部窗口为全精度,其余低比特量化,实现近无损长上下文推理加速

前置知识

注意力机制与注意力图

Transformer中每个查询向量 $q$ 与所有键向量 $k$ 计算相似度并经 $\mathrm{softmax}(QK^\top/\sqrt{d})$ 归一化得到注意力权重,再加权求和值向量。注意力图(heatmap)以行为query、列为key可视化权重大小,行内的亮斑表示该query强烈关注的key位置。

本文全部出发点建立在注意力图的可视化观察上:作者发现跨模型普遍存在垂直亮线(vertical-line)结构,即少数key位置被大量query反复高强度关注,这是设计混合精度分配的直接依据。

Prefill 与 Decode 两阶段推理

LLM推理分两阶段:Prefill 阶段一次性处理整个输入prompt,主要是大批量矩阵乘法,属于计算瓶颈;Decode 阶段逐token自回归生成,每步都要反复读写历史KV状态,属于内存容量与带宽瓶颈。两阶段的优化目标与手段截然不同。

HyQuant 的核心卖点之一是同时优化两个阶段:Prefill 用算子级量化降低计算误差与开销,Decode 用KV缓存量化+融合反量化降低带宽压力,理解两阶段差异才能理解其设计动机。

低比特量化与KV缓存量化

量化把FP16/BF16数值映射到低比特整数或浮点(如INT4/FP8),通常按分块做缩放 $s_K=\max(|K_T|)/c_B$($c_B$ 为该格式最大表示值,INT8取127、FP8取448)。KV缓存量化把历史的键值状态压缩存储,直接降低Decode阶段的内存占用与读取带宽。

本文对比基线 KIVI、KVTuner、SageAttention 都是量化方法,HyQuant 本身也是量化框架;理解 per-tile scale、对称/非对称量化等细节是读懂 Algorithm 2/3 的前提。

FlashAttention 与在线softmax

FlashAttention 通过分块计算注意力并用在线softmax(维护运行最大值 $m$、归一化和 $\ell$ 与输出累加器 $acc$,即 $O=acc/\ell$)避免实例化完整的 $L_q\times L_k$ 注意力矩阵,实现IO高效且数值精确的注意力。

HyQuant 的融合算子明确保持 FlashAttention 式的在线softmax分块扫描结构,把量化段、垂直线段、窗口段合并成单kernel顺序扫描并共享同一个softmax状态,这是其低开销的关键。

注意力汇聚与垂直线/垂直斜线模式

注意力汇聚指模型过度关注序列开头少数特殊token的现象。MInference 等工作进一步观察到两类稀疏模式:垂直线(某列key被许多query关注)和斜线(对角带状)。这些模式的共同本质是注意力质量高度集中于极少数位置。

本文与 MInference 的垂直线观察同源但用法完全不同:MInference 用它做稀疏mask丢弃低分token,HyQuant 用它做精度分配。区分这两种用法是理解本文创新点的核心。

GQA(分组查询注意力)

GQA 让多个查询头共享一组KV头(分组因子 $g=H_Q/H_{KV}$),大幅减小KV缓存。计算时需把 $g$ 个查询头堆叠后与共享KV头做einsum,避免显式复制KV头。

论文的垂直线识别算法(Algorithm 1)和解码kernel(Algorithm 3)都给出 GQA 原生实现:用 $\bar{Q}_g$ 与 $K_{pre}$ 做einsum得到列分数,解码时把 $g$ 个查询头打包成 $\tilde{q}_t$ 再与反量化KV相乘。

研究动机

低比特量化虽已广泛用于降低LLM推理成本,但把注意力模块激进压到很低比特(如4-bit)会引入大误差。作者在长上下文CoT推理设置下发现两个具体问题:其一,注意力分布高度不均衡,uniform token-wise量化对误差敏感度不同的token一视同仁,导致过度压缩关键token、又浪费预算在无关位置——实测 Qwen3-8B 上 KIVI(K4V4) 使 LongBench v1 平均分从全精度 FA2 的 44.59 跌到 37.68,SageAttention 也只有 38.13。其二,量化误差在高位注意力位置被放大:Query 3-8B 第28层的误差分析显示均匀4-bit量化的中间注意力输出MSE显著高于8-bit,因为少数高分工的位置会被大量后续query反复访问,微小的KV扰动被反复累积。作者测量注意力质量覆盖率发现,Llama-3.1-8B 全局top-1%的key位置就覆盖了58.83%的注意力质量,top-5%覆盖64.09%,再加上 $W=128$ 的局部窗口覆盖率达85.63%(Qwen3-8B分别为47.30%、54.10%、82.53%),而这一小撮关键token通常只占序列的不到5%。

本文的目标是论文要回答一个'推理中心'的混合精度设计问题:如何在长上下文CoT推理中,按token异质敏感性分配精度预算,在精度与效率间取得平衡。具体目标是:只保留极小一部分精度关键区域为全精度——即在线识别的垂直线token(约5%以内)和固定大小的局部滑动窗口 $W=128$——而把其余绝大多数KV压到低比特(INT8/FP8或INT4/FP4);在Prefill阶段把量化路径与全精度路径融合成一个FlashAttention式的量化注意力算子以控制计算误差;在Decode阶段用混合精度KV缓存压缩内存与带宽,并把反量化融合进注意力kernel避免额外显存搬运。最终希望在多个模型、多个基准上保持接近全精度的准确率,同时取得解码kernel级1.32倍至3.58倍、端到端1.04倍至1.17倍的加速,且垂直线识别带来的额外开销控制在3%-5%运行时以内。

与已有工作不同的是,与已有工作的本质区别在于'用途'而非'观察':垂直线结构 MInference 早已发现,但 MInference 把它用作稀疏mask,直接丢弃非垂直线token的注意力计算,在长CoT场景会永久丢失可能有用的长尾信息(论文Table 12显示vertical-only版本在narrativeqa上F1从31.49暴跌到14.69);而 HyQuant 把垂直线用于精度分配——关键token保FP16,长尾token仍以低比特保留全部信息,做到'降精度不删token'。与 KVTuner 的敏感性感知混合精度相比,KVTuner 在不同层之间分配精度,HyQuant 则在同一层的token粒度上分配。此外,已有方法通常只优化单一阶段(如SageAttention只管Prefill、KIVI只管Decode),HyQuant 提供了Prefill算子量化+Decode缓存量化的统一设计,并以'反量化融合进注意力'区别于KIVI/KVTuner的'先反量化再计算'路线。

核心方法

直觉层面:既然超过80%的注意力质量集中在不到5%的垂直线token加上 $W=128$ 的近期窗口上,而量化误差恰恰在这些高分工位置被放大,那么最划算的精度分配就是把这一小撮'锚点'保持全精度,其余压到低比特。技术路线分三步:第一步,把每层每头的key位置划分为三个互斥子集 $K = K_{VL} \cup K_{Win} \cup K_Q$,其中 $K_{Win}(t)=\{k \in [\max(0,t-W+1),\,t]\}$ 为固定大小局部窗口,$K_{VL}$ 为从非窗口前缀中选出的垂直线位置,$K_Q$ 为待量化的大多数。第二步,Prefill 阶段计算融合算子 $O=\mathrm{Softmax}\big([Q\hat{K}_Q^\top/\sqrt{d}\,\|\,QK_{FP}^\top/\sqrt{d}]\cdot[\hat{V}_Q\|V_{FP}]\big)$,量化路径与全精度路径在同一kernel内用在线softmax顺序扫描合并。第三步,Decode 阶段把KV缓存存成混合精度格式,扫描到量化块时在线反量化 $\hat{K}_b=\mathrm{DeQuant}(K^Q_b)$ 并立即参与打分与累加,不落地全精度中间结果。识别垂直线的分数定义为列注意力质量 $S(k)=\sum_{t\in T}a_{t,k}$,取非窗口前缀的top-$\rho$(实践中 $\rho=5\%$)。

核心创新是把'垂直线感知'从稀疏加速工具改造成精度分配信号:不丢弃任何token,只让不同token以不同精度参与注意力。这带来两个直接收益:一是误差侧,量化误差最大的高位注意力位置被完全保真(Fig. 2显示保留top-1%/top-5%高分工就能把4-bit误差压回接近8-bit水平);二是效率侧,因为绝大多数token仍是低比特,KV内存、带宽和计算量收益基本保留。第二个关键 idea 是算子级协同设计:Prefill 的三段式扫描(量化前缀→垂直线段→窗口段)和 Decode 的四段式扫描(量化前缀→垂直线→暂存缓冲→窗口)都共享同一个在线softmax状态 $(m,\ell,acc)$,量化与全精度路径融合成单个FlashAttention式kernel,附加开销极小;Decode进一步采用'dequantize-in-attention'——反量化在kernel内在线完成并即时消耗,而KIVI/KVTuner是'dequantize-then-attend'需要先展开缓存再跑标准注意力,这正是Table 8中端到端加速1.17倍对0.69倍差距的来源。

方法步骤详情

流程由四个算法组成。第一步垂直线识别(Algorithm 1):排除最近 $W=128$ 个token得到非窗口前缀,用尾部查询代理 $\bar{Q}=\frac{1}{t}\sum_{i}Q_{:,:,i,:}$ 计算列分数 $S=\bar{Q}K_{pre}^\top$(GQA模型按 $g=H_Q/H_{KV}$ reshape后做einsum),每64个token累积一次归约,取top-$\rho$(5%)得索引 $I_{VL}$,开销仅3%-5%运行时、辅助内存仅64个query向量。第二步Prefill算子(Algorithm 2):先按 $I_{VL}$ 重排KV,量化前缀按tile做 $s_K^T=\max(|K_T|)/c_B$($c_B=127$ INT8、448 FP8),然后量化前缀→垂直线段→窗口段三段扫描,共享在线softmax状态输出 $O_b=acc/\ell$。第三步FREEZE切换(Algorithm 4):Prefill结束冻结 $I_{VL}$,窗口与垂直线token保留FP,其余前缀量化打包进低比特KV buffer,初始化容量 $W_s=128$ 的暂存缓冲。第四步Decode(Algorithm 3):单token query分四段扫描——量化前缀按split-K分 $S$ 块并行、在线反量化 $\hat{K}_s,\hat{V}_s$ 并打包GQA查询 $\tilde{q}_t\in\mathbb{R}^{g\times d}$,经 $\mathrm{ReduceSoftmax}$ 归并后依次累加垂直线段、暂存段与全精度窗口段。

技术新颖性

技术新颖性体现在四个层面。第一,精度分配的粒度与依据是新的:KVTuner 的敏感性感知在层间分配精度,MInference 的垂直线用于稀疏剪枝,而本文首次把垂直线结构转译为token级的保留精度信号,且配套了开销可忽略的在线识别算法(尾部查询代理+周期性归约,3%-5%运行时)。第二,信息保留哲学不同:Table 12的消融直接量化了这一点,vertical-only稀疏在Qwen3-8B上平均分36.58,而保留低比特长尾的HyQuant达49.97,证明'低精度保留'显著优于'高精度丢弃'。第三,kernel协同设计:Decode端融合反量化避免了KIVI/KVTuner必须先展开整个量化缓存再计算的显存往返,使多批设置下唯一能在batch 16存活(231.6 tokens/s,其余全OOM)、并在batch 32仍能运行的方法。第四,Prefill+Decode一体化:同一垂直线集合在FREEZE时一次确定、两阶段复用,避免每个解码步重算全局重要性。这些都是系统与算法联合设计的产物,而非单一算法点子。

Overview of HyQuant
Fig. 3: Overview of HyQuant
Vertical-line awareness process
Fig. 4: Vertical-line awareness process

实验结果

端到端精度:LongBench v1 上 Qwen3-8B(thinking) 平均 45.04 vs FA2 44.59,大幅领先 KIVI 37.68、SageAttention 38.13、KVTuner 40.45;Llama-3.1-8B 46.73 vs FA2 46.63;GLM-4-9B 45.78 vs FA2 44.83;Qwen3-32B 48.46 vs FA2 48.61。数学推理上 GSM8K 达 96.52 反超 FA2 的 95.88,MATH500 78.73 略低于 FA2 的 80.14 但远高于 KIVI 的 72.89。Prefill误差(Fig. 5):以FA2为参考,HyQuant 前5层相对SageAttention的 $\mathrm{MSE}_{Sage}/\mathrm{MSE}_{HyQuant}$ 削减因子远大于1。Decode kernel延迟(Table 7):从1K前缀的0.170 ms/token(1.32×)到32K的1.775 ms/token(FA2为6.354,3.58×),上下文越长收益越大。端到端解码(Table 8):1.04×-1.17×,而KIVI仅0.69-0.73×、KVTuner 0.72-0.80×,均慢于FA2。高并发(Table 6):32K前缀batch 16时FA2/KIVI/KVTuner全部OOM,HyQuant独活达231.6 tokens/s;batch 8时155.6 vs FA2 152.7;但batch 4时84.2低于FA2的122.2。消融:窗口64/128/256对应准确率92.54/95.52/95.74、MSE 9.58/8.48/8.21;垂直线比例2%→10%平均分46.06升至51.91,故取5%折中。短上下文:HyQuant平均87.82 vs FA2 88.89、KIVI-K4V4 81.83。

Attention-mass coverage across model families
Table 1: Attention-mass coverage across model families
LongBench v1 results on Qwen3-8B (thinking mode)
Table 2: LongBench v1 results on Qwen3-8B (thinking mode)
LongBench v1 results on Llama-3.1-8B-Instruct
Table 3: LongBench v1 results on Llama-3.1-8B-Instruct
LongBench v1 results on GLM-4-9B-0414
Table 4: LongBench v1 results on GLM-4-9B-0414
LongBench v1 results on Qwen3-32B (thinking mode)
Table 5: LongBench v1 results on Qwen3-32B (thinking mode)
Throughput (tokens/s) under increasing batch size on Qwen3-8B with a 32K prefix
Table 6: Throughput (tokens/s) under increasing batch size on Qwen3-8B with a 32K prefix
Decode kernel latency under different prefix lengths (ms/token)
Table 7: Decode kernel latency under different prefix lengths (ms/token)
End-to-end decode speed relative to FA2 under different prefix lengths
Table 8: End-to-end decode speed relative to FA2 under different prefix lengths
Math reasoning accuracy on Qwen3-8B
Table 9: Math reasoning accuracy on Qwen3-8B
Sensitivity to the local full-precision window size
Table 10: Sensitivity to the local full-precision window size
Sensitivity to the retained vertical-line token ratio
Table 11: Sensitivity to the retained vertical-line token ratio
MInference-inspired vertical-only ablation on Qwen3-8B
Table 12: MInference-inspired vertical-only ablation on Qwen3-8B
Short-context evaluation on Qwen3-8B
Table 13: Short-context evaluation on Qwen3-8B
Memory overhead breakdown vs. strict K4V4 (Qwen3-8B, W=128, ρ=5%)
Table 14: Memory overhead breakdown vs. strict K4V4 (Qwen3-8B, W=128, ρ=5%)
Experimental configuration used for all compared methods
Table 15: Experimental configuration used for all compared methods
Layer-wise MSE reduction factor in Prefill
Fig. 5: Layer-wise MSE reduction factor in Prefill
Component-level MSE ablation of HyQuant
Fig. 6: Component-level MSE ablation of HyQuant
查看结构化数据
任务指标本文基线提升
LongBench v1(Qwen3-8B,thinking模式,11任务平均) 平均分 HyQuant 45.04 FA2全精度 44.59;KIVI(K4V4) 37.68;SageAttention 38.13;KVTuner(4bit) 40.45 较FA2 +0.45,较KIVI +7.36
LongBench v1(Llama-3.1-8B-Instruct) 平均分 HyQuant 46.73 FA2 46.63;SageAttention 45.68;KVTuner 45.66 较FA2 +0.10,为全部方法最高
LongBench v1(GLM-4-9B-0414) 平均分 HyQuant 45.78 FA2 44.83;SageAttention 45.75;KVTuner 45.63 较FA2 +0.95
LongBench v1(Qwen3-32B,thinking模式) 平均分 HyQuant 48.46 FA2 48.61;KIVI 41.98;KVTuner 48.22 较KVTuner +0.24,接近FA2(-0.15)
GSM8K 数学推理(Qwen3-8B) 准确率% HyQuant 96.52 FA2 95.88;KIVI 92.48;KVTuner 93.69;SageAttention 94.99 较FA2 +0.64,超越全精度
MATH500(Qwen3-8B) 准确率% HyQuant 78.73 FA2 80.14;KIVI 72.89;SageAttention 77.60 较KIVI +5.84,接近FA2(-1.41)
Decode注意力kernel延迟(32K前缀,H100) ms/token 及加速比 1.775 ms/token(3.58×) FA2 6.354 ms/token 1.32×(1K)至3.58×(32K)
端到端Decode速度(32K前缀) 相对FA2归一化速度 HyQuant 1.17× FA2=1.0×;KIVI 0.69×;KVTuner 0.72× 唯一稳定快于FA2的量化方法(1.04×-1.17×)
高并发吞吐(32K前缀,batch 16) tokens/s HyQuant 231.6 FA2 / KIVI / KVTuner 全部OOM 唯一在batch 16存活的可用方法

局限与改进

作者承认的局限有四点:垂直线保留的收益主要体现在长上下文任务,短上下文下提升有限(附录B.4的Table 13显示HyQuant 87.82仍略低于FA2的88.89);实验仅在NVIDIA H100上进行,高端GPU在短上下文时解码管线不完全受内存带宽约束,端到端加速会缩水;受显存限制未验证超过Qwen3-32B的更大模型(如Qwen3-80B);尚未评估agent/编码类任务中的有效性。我自己的补充观察:batch 4中等并行时吞吐84.2明显低于FA2的122.2,说明kernel在中小batch的长上下文区间外并无优势;混合精度保留带来约17.4%(32K)到24.4%(8K)的内存开销(vs 严格K4V4),部分抵消KV压缩收益;top-5%和 $W=128$ 是经验性超参,Table 11显示不同数据集对比例的敏感度方差很大(如HotpotQA从2%的47.50到6%的62.65);部分指标超过FA2(GSM8K 96.52 vs 95.88、GLM-4/LLaMA的LongBench)被作者归因于评估方差,也提示评测噪声不小;此外垂直线集合在FREEZE时一次性冻结,超长生成过程中重要性漂移的场景未做充分讨论。

独立分析的弱点

第一,中等batch区间性能塌陷:Table 6显示batch 4时HyQuant吞吐84.2 tokens/s,不仅低于FA2的122.2,甚至低于batch 1的相对水平,说明融合kernel在并行度不足时无法打满GPU,改进方向是引入persistent kernel或按SM占用自适应split数。第二,内存开销侵蚀收益:垂直线+窗口+暂存缓冲使KV总量比严格K4V4多17.4%-24.4%,可考虑对长尾token用更激进的2-bit(借鉴KIVI的非对称分组)或把垂直线token存FP8而非FP16,在几乎不损精度下收回一半开销。第三,垂直线集合静态冻结:FREEZE后在整段解码期不再更新 $I_{VL}$,而CoT推理中重要性可能漂移(论文自己在2.1节承认先前移除的内容可能重新变得关键),改进方向是每生成N个token后低成本重估列分数并做增量换入换出。第四,超参敏感且任务异质:Table 11中同一比例在不同任务间波动可达15分(HotpotQA 47.50→62.65),可探索按层/按头自适应 $\rho$ 或基于困惑度反馈的在线调节。第五,验证范围窄:仅H100、稠密模型、最长32B;MoE架构、多卡张量并行、非Hopper硬件(FP8/INT4吞吐特性不同)上的表现都是空白,工程上还需与vLLM/SGLang等服务的PagedAttention布局对接。

未来方向

作者方向:把HyQuant推广到agent与编码类长程任务、验证Qwen3-80B级更大模型、扩展到更多硬件平台。基于本文成果可延伸的研究包括:其一,与gated attention等消sink机制正交结合——若模型架构层面已削弱垂直线,精度分配信号需换成任务自适应的重要性估计;其二,把垂直线识别与KV驱逐/检索式稀疏统一成一个'精度-留存'联合调度器,动态决定每个token的精度与是否驻留;其三,训练时感知混合精度(QAT),让模型在预训练/微调阶段就适应量化前缀+全精度锚点的非均匀注意力;其四,与投机解码、 continuous batching 等服务技术在vLLM中的系统集成与端到端TPS评估;其五,理论上刻画在给定全精度预算 $b=\rho|K|$ 下最小化注意力输出MSE的最优分配,为top-$\rho$+窗口的选择提供原则性依据而非经验网格搜索。

复现评估

复现条件总体友好。代码已开源(https://github.com/jerrysfls/HyQuant);评测数据全部公开:LongBench v1、GSM8K、MATH500、C-Eval、MMLU;模型为开源权重(Qwen3-8B/32B、Llama-3.1-8B-Instruct、GLM-4-9B-0414)。硬件需求为单张NVIDIA H100 80GB——按Table 15的配置(batch 1、prefill至128K、生成至32K、KV统一4-bit、窗口128),消费级/ older 数据中心卡(A100)上INT4/FP8 kernel行为可能不同,端到端加速比需重新标定。算法伪代码(Algorithm 1-4)相当完整,包括GQA原生einsum、per-tile scale公式、split-K与在线softmax归并等实现细节,附录B.8还给出了统一实验配置。主要复现难点在Triton kernel工程:三段/四段扫描的融合kernel、低比特打包布局与FREEZE的缓存重排都属于系统细节,需要较强的GPU编程能力;精度侧复现(LongBench/GSM8K评测)则相对直接,约数个GPU天即可完成主表。