RotorQuant:LLM KV 缓存压缩的“几何革命”,速度提升 5 倍,参数减少 44 倍

新技术2天前发布 小马良
6 0

RotorQuant 是一项突破性的 KV 缓存量化技术,旨在解决大型语言模型(LLM)在长上下文推理中的显存瓶颈。通过引入块对角旋转(Block-Diagonal Rotation)替代传统的蝴蝶网络(Butterfly Network),RotorQuant 在保持甚至提升模型精度(PPL)的同时,实现了惊人的推理加速和极致的参数效率。

  • 项目主页:https://www.scrya.com/rotorquant/
  • GitHub:https://github.com/scrya-com/rotorquant

与 Google 的 TurboQuant 相比,RotorQuant 不仅解码速度快 28%预填充速度快 5.3 倍,且所需参数量仅为前者的 1/44。它已集成于 llama.cpp,支持 NVIDIA GPU 和 Apple Silicon,是让大模型在消费级硬件上流畅运行长文本的关键技术。

RotorQuant:LLM KV 缓存压缩的“几何革命”,速度提升 5 倍,参数减少 44 倍

核心突破:为什么 RotorQuant 更快?

传统量化方法(如 TurboQuant)使用全局的沃尔什-阿达玛变换(WHT),计算复杂度高且存在元素间依赖。RotorQuant 的核心洞察是:KV 缓存向量存在于低秩流形上,无需满秩变换,小的正交块旋转足以解相关数据。

1. 绕过蝴蝶网络:从 O(d log d) 到 O(d)

  • TurboQuant:应用 $d \times d$ 的 WHT 变换,需要 $\log_2(d)$ 级蝴蝶网络,计算量大且难以完全并行。
  • RotorQuant (Planar/Iso):对每对或每组维度应用独立的 2D Givens 旋转或 4D 四元数旋转
    • 计算量剧减:FMAs(乘加运算)从 16,384 降至 256 (Planar) 或 512 (Iso)。
    • 完全并行:无元素间依赖,硬件利用率极高。
    • 参数极少:仅需 128 个旋转参数,而 TurboQuant 需要 16,384 个。

2. 延迟量化策略

  • 预填充阶段零开销:K 缓存在预填充(Prompt Processing)期间保持 FP16 格式,完全消除旋转和量化开销。
  • 解码阶段即时量化:新生成的 Token 在插入缓存时立即量化。
  • 结果:在 llama.cpp 中,这种混合策略使得解码速度甚至超过了 FP16 基线(因为 Flash Attention 中减少了内存带宽压力,且无数量化 overhead)。

3. V 缓存的逆旋转修复

  • TurboQuant 利用 Hadamard 变换的自消除特性,无需显式逆旋转。
  • RotorQuant 发现 V 缓存反量化必须应用正向旋转的逆(逆 Givens 或逆四元数)。团队通过补丁(6e5a4aa)修复了这一点,将 PPL 从灾难性的 15,369 拉回至正常的 7.05。

性能基准:碾压 TurboQuant

测试环境:Llama 3.1 8B Instruct,对称 3-bit K+V 压缩,RTX 5090。

配置 (K/V)解码速度 (tok/s)预填充速度 (tok/s)PPL (Wiki-2)压缩率备注
FP16 / FP161406,1566.631x基线
Planar3 / Planar31193,8227.0510.3x综合最佳
Iso3 / Iso31183,3976.9110.3x精度最高
Turbo3 / Turbo3937227.0710.3xGoogle 方案
Planar3 / FP16134~6.635.1x仅压缩 K

关键对比 (vs TurboQuant)

  • 速度:解码快 28% (119 vs 93 tok/s),预填充快 5.3 倍 (3,822 vs 722 tok/s)。
  • 精度:PPL 更低 (6.91/7.05 vs 7.07),意味着回答质量更高。
  • 效率:参数量减少 44 倍 (128 vs 16,384),极大地降低了存储和加载开销。

显存节省:长文本的救星

在 3-bit 对称压缩(10.3 倍压缩率)下,KV 缓存占用的显存大幅降低:

上下文长度FP16 KV 占用RotorQuant 占用节省显存
8K288 MB28 MB260 MB
32K1,152 MB112 MB1.04 GB
128K4,608 MB447 MB4.16 GB

这使得在消费级显卡(如 RTX 4090/5090 或 Mac M系列)上运行 128K+ 超长上下文成为可能,且不会因显存溢出而崩溃。

技术演进路线图

RotorQuant 的发展体现了“用代数丰富性换取速度”的设计哲学,且事实证明更简单的旋转效果反而更好:

方法旋转类型组大小FMAs (d=128)参数状态
RotorQuant (原始)Cl(3,0) 转子三明治3~2,400372研究 (Triton)
IsoQuant4D 四元数4512128生产 (llama.cpp)
PlanarQuant2D Givens 旋转2256128生产 (llama.cpp)
TurboQuantWHT 蝴蝶网络12816,38416,384生产 (llama.cpp)
  • PlanarQuant 和 IsoQuant 由社区开发者 @ParaMind2025 基于块对角旋转思想实现,并已合并入主流推理框架。

应用场景

  1. 移动端/边缘设备大模型:在 iPhone (M4/M3) 或 Android 手机上运行 7B-13B 模型,显著降低内存峰值,提升续航。
  2. 长文档分析与 RAG:处理数百页 PDF 或长篇代码库时,保持极高的预填充速度和低显存占用。
  3. 本地私有化部署:在显存有限的个人电脑上部署高精度模型,无需昂贵的 A100/H100 集群。
  4. 高并发推理服务:更高的解码吞吐量意味着单卡能支持更多并发用户,降低服务端成本。
© 版权声明

相关文章

暂无评论

none
暂无评论...