这项由Stability AI研究团队提出的技术成果,于2026年5月以预印本形式发布,论文编号为arXiv:2605.21226。对AI模型压缩、KV缓存优化或长上下文推理感兴趣的读者,可通过该编号检索完整论文与技术细节。
我们在观看视频时,会自然感受到画面是连续流动的。即使短暂闭眼再睁开,对周围世界的认知依然不会突然断裂——因为人脑内部存在一种能够维持信息连续性的“瞬时记忆”。AI在生成文本、视频和音频时,其底层机制也有相似之处。无论是你与AI对话、用AI生成视频,还是试听AI创作的音乐,模型内部都在高速运行一套名为“注意力机制”的系统。这套机制类似人类的短期记忆:它需要实时保留此前出现过的每一句话、每一帧画面、每一个音符,并在生成下一段内容时加以参考。这些临时保存的信息,在技术上被称为“KV缓存”(Key-Value Cache),也可以把它理解成AI的“工作记忆”。
但这个“工作记忆”非常占用资源。当AI需要处理超长文本,比如百万字小说,或生成高质量长视频时,这本“记忆本”会迅速膨胀,甚至挤爆服务器内存,带来推理速度下降、部署成本上升,严重时还会直接导致系统崩溃。这就像想在一张便签纸上记完整部《红楼梦》——从根本上写不下。
针对这个问题,Stability AI研究团队提出了一套名为“OCTOPUS”的KV缓存压缩方案,核心目标就是解决“AI记忆太大”的难题。这个名称是“通过八面体参数化和最优平方误差量化优化Transformer的KV缓存”的英文缩写。虽然名字听起来很学术,但核心思路其实非常直观:**把工作记忆里的内容压缩成更高效的速记符号,而且这种速记方式经过严格数学设计,尽可能减少信息损失。**
AI的“工作记忆”为什么这么难压缩
要理解这项研究真正解决了什么问题,首先要弄清楚AI模型在处理长文本、长视频和长音频时究竟在做什么。
每当AI模型生成一个新词、一帧新图像或一个新音符时,它都必须“回看”此前的全部上下文,从而判断下一步该输出什么。这个回看的过程,依赖的正是KV缓存——其中“K”代表“键”(Key),可以看作每段记忆的“索引标签”;“V”代表“值”(Value),也就是记忆本身的具体内容。每次生成时,AI都会将当前查询信息(Query)与缓存中的所有K进行匹配,找出最相关的内容,再结合对应的V生成结果。
难点在于,随着上下文持续增长,KV缓存也会不断变大。对于支持百万级上下文的大语言模型来说,KV缓存往往会占据整个推理过程中的绝大部分显存或内存。而且每生成一步,系统都需要把这份庞大的缓存重新读取出来,这种读写本身就会形成明显的性能瓶颈。
过去,研究人员已经尝试过很多KV缓存压缩方法。有人提出“删除不重要的记忆”(Token Eviction),就像做笔记时只保留关键词;也有人采用对每个数值做粗略四舍五入的方式,也就是标量量化;还有一类更加精细的方法叫“旋转预处理量化”(Rotation-preconditioned Quantization),而OCTOPUS正属于这一技术路线,并在该方向上进一步推进了效果上限。
旋转魔法:让数据变得“均匀”再压缩
旋转预处理量化的思路,源自一个非常巧妙的数学观察。原始KV缓存中的数据通常分布并不均匀——有些值很大,有些值很小,如果直接压缩,误差往往会很明显。但如果先对数据进行一次随机旋转,就像把高维空间中的信息充分“搅匀”一样,那么旋转后的每个数值就会更接近一种已知的数学分布。这样一来,就可以使用专门为这种分布设计的量化器,实现更接近最优的压缩效果。
这个“旋转”在工程实现中采用的是“符号翻转沃尔什-哈达玛变换”(sign-flipped Walsh-Hadamard Transform)。它的计算效率很高,复杂度与维度呈对数关系,而不是平方关系,可以把它理解为一种超高效的数据均匀化工具。
在OCTOPUS之前,TurboQuant和PolarQuant是这一技术路线上的两个代表方案。TurboQuant证明,旋转之后每个坐标会独立服从一种“对称Beta分布”,并围绕这一规律设计了逐坐标最优压缩器;PolarQuant则选择把旋转后的方向信息转成极坐标,再逐层进行压缩。它们的共同特点是:**每次只处理一个坐标,或一个角度。**
而OCTOPUS最关键的突破在于:**一次同时处理三个坐标构成的“三元组”,并把三维方向信息与长度信息拆开处理,再用不同精度分别压缩。**
八面体折叠:把三维方向“压平”成二维地图
OCTOPUS这个名字中的“八面体”(Octahedral),来自计算机图形学中的一个经典技巧:如何用尽可能少的数据,精确表示三维空间中的方向向量。
可以设想这样一个问题:三维空间里有无数个方向,就像地球表面存在无数个坐标点一样。怎样才能只用两个数字表示任意一个方向,同时尽量减少误差?
传统做法通常是使用经纬度,也就是极坐标表示法。但极坐标存在一个明显问题:在靠近两极时会发生严重“拉伸”。同样面积的信息,在极点附近会被压缩成很窄的带状区域,而在赤道附近则更宽,这意味着信息密度非常不均匀。
八面体映射恰好能改善这一点。它会先把球面上的点投影到一个八面体表面,再将八面体展开成一个平面正方形。这个过程有点像把橙子皮剥开后尽量平整地铺开——展开前后的面积关系更均衡,因此信息分布也更加均匀。
具体而言,对于一个单位方向向量 (x, y, z),先计算 l = |x| + |y| + |z|,再将向量除以 l 投影到八面体表面。如果 z 指向上方,也就是位于正半球,就直接取 (px, py) 两个坐标;如果 z 指向下方,也就是位于负半球,则进行一次“折叠”操作,把下半球的四个三角区域翻折到正方形四角。最后得到的两个数 (ξ, η) 都位于 [-1, 1] 范围内,能够覆盖全部可能方向。
在解码时过程同样简洁:给定 (ξ, η),先计算 r = 1 - |ξ| - |η|,如果 r 大于等于零,就直接构造方向向量并归一化;如果 r 小于零,则先做一次反折叠,再归一化。整个编码与解码过程只涉及加减乘除和绝对值运算,不需要三角函数,因此计算开销非常低。
这种映射方式的优势在于:对于八面体的每一个面,从球面到平面正方形的映射近似保持等面积。也就是说,球面上均匀分布的方向,映射到平面后仍然接近均匀分布。这使得后续量化器在压缩这两个坐标时,能够更充分地利用每一个比特,提高KV缓存压缩效率。
三元组分解:长度和方向分开压,精度分配有讲究
OCTOPUS处理KV缓存数据的完整流程,像一条经过精密设计的压缩流水线。
第一步,对于每个原始K向量,先把它分解为整体长度 γ 和单位方向 u。整体长度使用32位浮点数保存,因为相对总体数据量而言它占比很小,真正主要的压缩预算都集中用于单位方向向量。
第二步,对单位方向向量施加前文提到的符号翻转沃尔什-哈达玛旋转,得到旋转后的方向 u。此时,它的每个坐标都会服从更容易建模和压缩的数学分布。
第三步,将旋转后的方向向量切分成若干个“三元组”,也就是每组三个相邻坐标。如果总维度不是3的整数倍,就在末尾补零。然后,对每个三元组 tᵢ 再次拆分成三元组长度 ρᵢ 和三维单位方向 nᵢ。
这里有一个很重要的理论结论。根据论文中的Lemma 3.1,当原始向量维度 d 足够大时,每个三元组长度 ρᵢ 都会集中在一个非常小的范围内,即接近 √(3/d)。维度越高,三元组长度就越小,而且越集中。这意味着,三元组长度的变化范围会随着维度增加而持续缩小,因此无需太多比特就能精确表示;相比之下,三维方向 nᵢ 始终分布在整个球面上,变化幅度始终较大,因此更值得分配更多比特。
第四步,对三维单位方向 nᵢ 使用八面体映射,得到两个二维坐标 (ξᵢ, ηᵢ),再将这两个坐标以及三元组长度 ρᵢ 分别送入“劳埃德-马克斯量化器”(Lloyd-Max Quantizer)进行压缩。这是一种针对给定概率分布进行优化的量化方法,常用于高质量数据压缩和误差最小化。
劳埃德-马克斯量化器可以理解为:把连续数轴切分成若干区间,每个区间用一个代表值替代。但这些切分并不是平均分配的,而是依据数据的出现概率来设计——高频区域切得更细,低频区域则更稀疏,因此每一个比特都能被更高效地利用。
非均匀比特分配:数学优化得出的“偏科”策略
OCTOPUS最有意思、也最具创新性的部分之一,就是它的非均匀比特分配策略。
假设每个三元组可使用的总比特预算是固定的,那么应该如何在两个方向坐标 (ξ, η) 和一个长度 ρ 之间分配这些比特?最直觉的办法当然是平均分,也就是三个分量使用相同位宽。但OCTOPUS研究团队通过严格数学推导证明:这种均匀比特分配并不是最优方案。
原因在于,方向误差和长度误差在总误差中的量级不同。三元组长度的方差 σ²_ρ 会随着维度 d 增大,以 O(1/d) 的速度减小;而方向误差对应的方差 σ²_n 则始终保持在 O(1) 量级。将这两个量代入拉格朗日优化框架后,可以得到最优比特差值公式:
方向比特数 - 长度比特数 = log₂(3·C₂·σ²_n / (2d·C_ρ·σ²_ρ))
虽然这个公式看上去比较复杂,但只要把 σ²_ρ = O(1/d) 和 σ²_n = O(1) 代入,就会发现其中的 d 会相互抵消。最终结论非常关键:**方向和长度之间的最优比特差,是一个常数,不依赖维度 d,也不依赖总比特预算。**
研究人员在维度 d=128 的合成数据上做了系统实验。他们围绕每个总预算 b(即均匀分配时每个分量使用 b 比特),测试了从 b-2 到 b+2 的全部偏移量 δ,也就是方向使用 b+δ 比特、长度使用 b-δ 比特。实验结果非常明确:在 b=2、3、4 三种场景下,均匀分配(δ=0)都不是最佳方案,最优点始终稳定出现在 δ=+1,也就是**方向多给1比特、长度少给1比特**,即经典的 (b+1, b-1) 分配方式。
与均匀分配相比,这个 (b+1, b-1) 方案可将均方误差降低31%到41%;相反,如果让方向少1比特(δ=-1),误差会激增超过200%;如果方向多2比特(δ=+2),误差也会增加44%到73%。这说明最优点非常清晰,并不是“方向比特越多越好”,而是恰好在多1比特的位置达到最优平衡。
联合取整:让三个数值协同工作而不是各自为政
在量化过程中,还存在一个容易被忽视但很关键的问题:即使码本已经设计好,最终应该怎样从码本中选出量化后的输出值?
最简单的方法,是让每个数值各自独立地找到最近的码本项,这种做法叫标量取整。但OCTOPUS的解码过程本身是非线性的:方向坐标需要先经过八面体逆映射恢复为三维单位向量,再与长度相乘,才能得到最终重建的三维向量。正因为存在这种非线性组合,所以即便每个分量单独看都选择了最近值,组合后的整体结果也未必最接近真实值。
换个更形象的比喻来说,如果你想还原一个最终颜色,那么分别给“红、绿、蓝”三个通道独立选最近值,并不一定能得到整体最接近原色的结果。有时某个通道稍微偏一点,反而能让最终混合色更准确。
为了解决这个问题,OCTOPUS提出了“联合取整”方法。论文证明:对于任意固定的方向候选值,最优长度量化值并不是最接近真实长度 ρᵢ 的那个码本条目,而是最接近**当前方向候选向量与真实三元组向量点积** sᵢ 的码本条目。也就是说,方向和长度虽然可以分别编码,但在最终取整时需要协同优化。
理论上,寻找最优方向需要遍历全部 2^(2×b_dir) 个候选方向组合,成本看起来很高。但研究者在实验中发现,在所有测试位宽下,标量取整得到的初始方向索引 (iξ, iη) 与真正全局最优索引之间,偏差最多只会相差一个位置。因此,只需要在这个初始位置周围检查一个3×3邻域,也就是9个候选组合,就足以找到最优方向,计算量非常小。对10000个随机三元组的测试表明,这种3×3局部搜索与完整穷举搜索的结果完全一致。
实验结果:从文本到视频到音频的全面验证
为了验证这套KV缓存压缩方案的效果,OCTOPUS研究团队在四类不同任务中进行了测试,并与TurboQuant-MSE、TurboQuant-QJL以及PolarQuant等代表性基线方法进行了全面对比。
**合成数据验证**:在维度128的各向同性高斯数据上,研究人员使用1024个随机键向量和16个查询向量测试,每组实验重复64次取平均。结果显示,OCTOPUS在所有比特宽度下都取得了最低均方误差。在4比特条件下,OCTOPUS的均方误差为0.0071,比TurboQuant-MSE的0.0094低约24%,比PolarQuant的0.0145低约51%;在更极端的2比特压缩下,OCTOPUS的误差为0.0897,仅约为PolarQuant误差0.2197的41%。余弦相似度和内积误差的变化趋势也完全一致。在“针中找针”测试中,需要在2048个随机干扰项中识别目标向量,2比特时OCTOPUS仍保留了0.92的softmax概率质量,而PolarQuant和TurboQuant-MSE分别只有0.87和0.86,这说明OCTOPUS在超低比特压缩场景下仍能较好保持检索能力。
**大语言模型测试**:研究团队在Qwen2.5-7B-Instruct-1M这一70亿参数的大语言模型上,评估WikiText-2和C4数据集上的语言建模困惑度(perplexity,数值越低越好)。在4比特时,OCTOPUS的WikiText-2困惑度为10.306,相比未压缩基准10.033仅上升2.7%;相比之下,TurboQuant-MSE上升3.1%,PolarQuant上升4.4%,TurboQuant-QJL则上升8.0%。
在2比特极限压缩下,差距更加明显:OCTOPUS的困惑度为13.517,相比基准上升34.7%;而TurboQuant-MSE上升63%,PolarQuant上升187%,TurboQuant-QJL则暴涨772%,几乎完全失去实用性。换句话说,在超低位KV缓存量化条件下,OCTOPUS依然保留了较强的语言理解能力。
在“长文本找针”测试中,模型需要在4000到128000词的长上下文里找出隐藏的随机8字符密码。4比特时所有方案都能稳定找到目标;3比特时,OCTOPUS仍保持满分1.00,PolarQuant平均下降到0.86;到2比特时,只有OCTOPUS(0.81)和OCTOPUS-QJL(0.83)仍具有可用性,而PolarQuant与TurboQuant-QJL几乎完全失效,分别只有0.04和0.01。
**视频生成测试**:研究人员在两个基于Wan-1.3B架构的自回归视频生成模型上测试OCTOPUS,分别是按3帧一组生成的CausVid,以及逐帧生成的Causal Forcing。所有方案在100组相同提示词和相同初始噪声下运行,并用LPIPS(越低越好)和PSNR(越高越好)评估压缩后视频与未压缩视频之间的感知差异。
在4比特时,各方案差异都不大,指标变化基本控制在3%以内。但到了2比特,差异被显著放大。在Causal Forcing任务中,TurboQuant-QJL的最坏LPIPS达到0.997,几乎已经接近随机噪声,平均值也高达0.816;而OCTOPUS的平均值仅为0.581,最坏情况是0.821。也就是说,尽管图像质量确实有所下降,但OCTOPUS生成的视频至少还保留了基本可辨识性。论文提供的可视化对比也显示,2比特时TurboQuant-QJL和PolarQuant的输出往往退化成彩色噪点,而OCTOPUS虽然会出现模糊和色偏,但场景主体依旧清晰可认。
**音频生成测试**:在AAR这一基于下一尺度预测的自回归音频生成模型上,研究人员对100个随机AudioSet片段进行了测试,评估指标包括对数谱距离(LSD,越低越好)和信噪比(SNR,越高越好)。在2比特压缩下,TurboQuant-MSE、TurboQuant-QJL和PolarQuant的平均LSD都在12.6到13.2分贝之间,平均SNR全部为负值,也就是噪声已经超过有效信号;相比之下,OCTOPUS的平均LSD仅为6.75分贝,平均SNR达到+1.07分贝,说明它在音频质量保持方面明显更强。
可选的残差修正:让内积估计更无偏
除了基础版OCTOPUS之外,论文还提出了一个可选增强版——OCTOPUS-QJL。它会在压缩结果之上,再附加一个1比特的“残差修正”机制,用于进一步优化注意力分数中的内积估计。
这部分修正基于Johnson-Lindenstrauss变换(JL变换),也继承了之前QJL工作的思想。压缩后的向量与真实向量之间总会存在一个残差 r,OCTOPUS-QJL会对这一残差再次进行独立随机旋转,只保存旋转结果的符号信息,也就是每个坐标是正还是负,每个坐标只占1比特,同时再保存残差长度,使用16位浮点数表示。在后续查询向量与键向量计算内积时,这个1比特残差符号可以用于修正估计值,使其在数学期望上保持无偏。
当然,这项改进也有成本:每个坐标需要额外增加1比特,因此整体压缩率会略有下降,通常相当于减少约0.5比特/坐标的有效压缩收益。从实验结果来看,OCTOPUS-QJL在内积绝对误差方面确实优于基础版OCTOPUS,但在重建质量指标上,比如均方误差和LPIPS,几乎没有显著区别。原因也很直接:QJL修正只影响注意力内积估计,并不会改变最终重建出的键向量本身。因此,研究人员建议,如果部署场景主要是直接用压缩键计算注意力分数,那么OCTOPUS-QJL更合适;如果只是希望高效压缩KV缓存并重建使用,那么基础版OCTOPUS通常已经足够。
工程实现:让解码在“寄存器”里完成,不留痕迹
OCTOPUS并不只是一个理论上的KV缓存优化方法,它还提供了高性能的工程实现方案。研究团队使用Triton——一种面向GPU高性能内核开发的编程语言,实现了完整的编码与解码流程。
其中非常值得关注的一点是解码器设计。它与FlashAttention的分块计算思路深度结合,在GPU寄存器这一速度最快的片上存储中,直接完成解压缩、内积计算和在线Softmax等操作。整个过程中,**从始至终都不会把完整的未压缩键向量写回显存或内存**。这意味着OCTOPUS不会因为在线解压而额外引入大规模内存读写开销,系统真正需要读取的,只有已经压缩好的紧凑比特流,而这也正是KV缓存压缩本来希望节省的部分。
编码器端同样进行了优化。研究团队采用基于Kronecker因子的沃尔什-哈达玛变换实现就地蝴蝶运算,在128维设置下,每个键向量的编码时间大约只有0.08微秒。对于自回归大语言模型这种一次只生成一个新token的应用场景而言,这部分开销几乎可以忽略。
从速度测试结果来看,在NVIDIA H200 GPU上,OCTOPUS的单步解码耗时大约为0.52到0.66毫秒,具体取决于配置,相当于未压缩PyTorch SDPA基线路径0.06毫秒的8到11倍。这部分额外成本是在线解压缩不可避免的——任何希望用计算换内存的方案,都会付出一定算力代价。但考虑到OCTOPUS可带来2.8到4.8倍的内存节省,在显存容量或内存带宽已经成为瓶颈的场景中,例如超长上下文推理和大批量推理,这种权衡通常是值得的。
从本质上看,OCTOPUS解决的是一个非常现实的AI系统优化问题:如何在有限的内存预算下,让大模型的“工作记忆”既足够小,又尽可能准确。它给出的答案是:把每段记忆拆分成“方向”和“长度”两部分;用八面体映射把三维方向高效压平到二维;再依据严格数学推导,把有限比特预算向更难压缩的方向信息倾斜一个比特,因为长度本身更容易被少量比特描述,而方向对量化误差更敏感。
这项技术对普通用户的影响虽然是间接的,但非常真实。它意味着在同样硬件条件下,AI服务可以处理更长的文本上下文、生成更长的视频内容、保留更多历史信息,同时还能尽量保持输出质量。尤其在2比特这种极端低比特压缩场景中,OCTOPUS是目前已知少数、甚至可以说唯一不会彻底失效的旋转预处理量化方案,这对边缘设备部署、移动端AI和显存极度紧张的推理环境尤其重要。
当然,OCTOPUS也并非没有局限。它的解码计算量更高,因此在内存不是主要瓶颈的场景下,可能会带来额外性能负担;此外,该方法目前主要适用于旋转预处理量化这一技术家族,与稀疏编码、Token驱逐等其他KV缓存压缩路线的综合比较,仍有待后续研究进一步验证。
如果你对这项AI内存压缩技术、长上下文推理优化或Transformer KV缓存量化感兴趣,可以通过arXiv编号2605.21226查阅完整论文与数学推导,研究团队也提供了项目主页(octopus-quant.github.io)供进一步参考。
Q&A
Q1:KV缓存压缩和普通的视频压缩有什么区别?
A:KV缓存压缩面向的是AI推理过程中产生的中间表示,而不是最终输出的视频、图片或文本。它压缩的是模型在生成内容时必须保留的键值信息,核心目标是降低显存与内存占用,让大模型能够处理更长上下文。普通视频压缩如H.264、H.265主要针对像素数据和播放传输效率优化,应用场景、压缩对象和技术原理都完全不同,两者并不能相互替代。
Q2:OCTOPUS的(b+1, b-1)比特分配为什么是最优的,用更多比特给方向不会有更多收益吗?
A:原因在于方向误差和长度误差对总失真的贡献并不对等,它们受到底层数学结构的共同约束。当方向比长度多超过1比特后,方向量化误差已经降得足够低,继续增加方向位宽的边际收益会快速变小;而这时长度位宽过低,长度误差反而会成为新的主要瓶颈。实验结果也明确证明,(b+2, b-2)不仅没有更好,误差反而高于均匀分配。因此,(b+1, b-1)并不是经验拍脑袋得出的结论,而是理论推导与实验验证共同支持的最优比特分配。
Q3:OCTOPUS在哪些实际AI产品场景中最有用?
A:OCTOPUS最适合那些显存容量或内存带宽已经成为推理瓶颈的AI应用。典型场景包括:超长上下文大语言模型服务,例如需要处理几十万词甚至更长文档的问答系统;高分辨率、长时长的自回归视频生成模型,因为每一帧都要参考之前缓存;以及边缘设备、端侧AI或资源受限服务器上的大模型部署。在这些场景下,OCTOPUS能够在尽量少损失模型效果的前提下,把KV缓存压缩到原来的三分之一甚至四分之一,让原本难以落地的任务真正具备可执行性。
