章节 01
导读 / 主楼:NexusQuant:无需训练实现LLM KV缓存10-33倍压缩的技术突破
通过E8格点量化与注意力感知Token淘汰机制,在无需训练、无需校准数据的情况下,将大语言模型的KV缓存压缩10-33倍,让长上下文推理从多卡集群走向单卡部署。
正文
通过E8格点量化与注意力感知Token淘汰机制,在无需训练、无需校准数据的情况下,将大语言模型的KV缓存压缩10-33倍,让长上下文推理从多卡集群走向单卡部署。
章节 01
通过E8格点量化与注意力感知Token淘汰机制,在无需训练、无需校准数据的情况下,将大语言模型的KV缓存压缩10-33倍,让长上下文推理从多卡集群走向单卡部署。
章节 02
要理解NexusQuant的价值,首先需要明白KV缓存为什么如此占用显存。在Transformer架构中,模型在处理长序列时需要存储每一层的Key和Value矩阵,以便在生成新token时进行注意力计算。这些矩阵的大小与序列长度成正比——序列越长,缓存越大。
以Mistral-7B模型为例,128K上下文对应的KV缓存高达80GB。这意味着即使是顶级的A100 GPU(80GB显存),在处理32K上下文时就会遭遇OOM(显存不足)。如果想要处理更长的序列,就不得不求助于多卡集群,这无疑大幅增加了部署成本。
章节 03
NexusQuant采用了一种组合策略来压缩KV缓存,包含两个关键组件:
章节 04
首先,系统会根据注意力权重对token进行重要性评分。那些注意力权重较低的token被认为对后续生成的影响较小,因此可以被安全地淘汰。系统始终保留BOS(序列开始)标记和一个最近的滑动窗口,确保关键信息不会丢失。
通过这种方式,可以在60%淘汰率下将token数量减少2.5倍,而对模型性能的影响控制在可接受范围内。
章节 05
对于保留下来的token,NexusQuant采用了一种称为E8格点量化的技术。这是整个方案中最精妙的部分。
E8格点是数学中一种特殊的8维格点结构,具有极高的堆积密度。NexusQuant将8个浮点数组成一组,通过Hadamard旋转均匀分布能量后,映射到E8格点上。这种映射可以用极少的比特数表示:Keys使用3-bit,Values使用2-bit(因为Keys需要更高的精度来应对softmax的放大效应)。
此外,系统还采用了差分编码和zstd压缩技术——相邻token往往产生相似的格点索引,存储差分后再压缩可以获得额外的2-3倍压缩率。
章节 06
NexusQuant的实现包含几个关键步骤:
重要性评分提供了两种选择:基于Key-Key代理的快速评分(无需额外计算),或使用真实注意力评分器(质量更高但需要额外一次前向传播)。
RoPE移除是另一个关键技巧。由于旋转位置编码(RoPE)会让不同位置的Keys处于不同的子空间,直接量化效果不佳。NexusQuant在执行量化前会先「撤销」RoPE,让所有Keys回到共同的子空间,量化后再恢复。
边界保护是针对特定模型家族的优化。Qwen系列模型在某些层上对量化特别敏感,因此系统提供了protect_boundary参数,可以选择将首尾若干层保持在FP16精度。
章节 07
NexusQuant提供了四种预设配置,适应不同的质量-压缩权衡:
| 预设 | 压缩比 | 困惑度损失 | 80GB显存可支持上下文 |
|---|---|---|---|
| high | ~9x | <0.5% | ~120万token |
| asym | ~14x | ~1% | ~180万token |
| balanced | ~17x | ~1.3% | ~220万token |
| max | ~33x | +0.66% | ~420万token |
实测数据显示,在Mistral-7B、Phi-3-mini和Qwen2.5-7B等主流模型上,NexusQuant都能取得显著的压缩效果。特别是使用K3V2(3-bit Keys + 2-bit Values)配合真实评分器时,即使在35%淘汰率下,困惑度损失也能控制在1%以内。
章节 08
NexusQuant最大的优势在于「训练自由」。让我们看看它与同类技术的对比:
相比之下,NexusQuant无需任何训练或校准,开箱即用,压缩比却能达到10-33倍,这在实用性上具有明显优势。