QJL: 1-Bit Quantized JL Transform for KV Cache Quantization with Zero Overhead

发表时间: 2024-06 · arXiv:2406.03482 (AAAI 2025)

原文: https://arxiv.org/abs/2406.03482

作者/机构:Amir Zandieh (Independent Researcher), Majid Daliri (New York University), Insu Han (Adobe Research)

速读

一句话结论 本文提出了一种基于量化 Johnson-Lindenstrauss 变换的键值缓存压缩方法 QJL,通过符号位量化消除了存储量化常数的内存开销,在将大语言模型缓存压缩至 3 bits 时实现了 5 倍以上的内存缩减且保持精度无损。

要解决什么问题 大语言模型在自回归推理时,需要将历史生成的键值(KV)向量保存在显存中以避免重复计算。随着上下文长度的增加,庞大的 KV 缓存不仅会耗尽显存,还会导致每次生成新 token 时 GPU 需要从主存向共享内存搬运整个缓存数据,造成极低的算术强度,使大部分 GPU 线程处于闲置等待状态。为了缓解这一显存与访存带宽双重卡点,现有的主流做法是对 KV 缓存进行低比特量化(如按通道或按 token 分组量化)。然而,传统量化方法存在严重的“内存开销”机制缺陷:它们必须为每一个数据分组计算并存储全精度的量化常数(至少包含一个零点和一个缩放因子)。根据分组大小的不同,这些常数会为每个被量化的数值额外增加 1 到 2 bits 的存储负担。当目标是将数据压缩到极低的比特位时,这种常数开销占据了极大的比例,不仅大幅削弱了实际的显存节省效果,还引入了显著的计算开销,导致在长上下文场景下难以兼顾高压缩率与高推理速度。

怎么做的 核心思路是引入一种数据无关的随机草图(Sketching)技术,利用 Johnson-Lindenstrauss (JL) 变换结合符号位量化来处理键(Key)缓存。这种方法之所以能绕开传统量化常数的存储卡点,是因为它直接将高维向量投影到随机子空间并提取符号,全程不需要统计数据分布或维护零点与缩放因子,从而实现了零额外开销的量化。关键设计由三个部件构成。首先是 QJL 变换器,负责将输入的键向量 $k$ 映射为 1-bit 的二值向量。具体做法是生成一个服从标准正态分布的随机矩阵 $S$(实际工程中对其行进行了正交化以提升效果),将其与键向量相乘后取符号:

$$ \mathcal{H}_S(k) := \mathrm{sign}(Sk) $$

其次是异步内积估计器,负责在注意力计算阶段还原查询(Query)与键的相似度。为了保证内积估计的无偏性,查询向量 $q$ 只进行 JL 投影而不做量化,随后与量化后的键向量进行点积,并利用键的二范数 $\|k\|_2$ 进行缩放:

$$ \operatorname{Prod}_{\mathbb{QJL}}(q, k) := \frac{\sqrt{\pi/2}}{m} \cdot \|k\|_2 \cdot \langle Sq, \mathcal{H}_S(k) \rangle $$
作者在数学上证明了该估计器不仅是无偏的,而且其相对误差界限与未量化的标准 JL 变换相当。具体而言,只要投影维度 $m$ 与序列长度的对数成正比,最终计算出的注意力分数就能以极高的概率保持在 $1 \pm \varepsilon$ 的相对误差范围内,且所需比特数完全独立于向量的原始特征维度。最后是异常值分离机制,由于模型深层网络中某些固定的通道会持续出现极大数值(Outliers),这些异常值会显著放大内积估计的误差。因此,方法在提示词预填充阶段会识别出这些固定通道,并使用独立的 QJL 实例以较低的压缩率对异常值和正常值分别进行量化。至于值(Value)缓存,由于其对精度不敏感,直接沿用了常规的按 token 量化方案。

效果如何 实验在单张 80GB 显存的 A100 GPU 上搭建,评测了 Llama-2-7B、其长文本微调版本 longchat-7b-v1.5-32k(16K 上下文)以及 Llama-3-8B 模型。对比基线包括 16 bits 的 FP16/BF16 精确模型,以及代表分组存储量化常数路线的 KIVI(免微调非对称 2-bit 量化)和 KVQuant(按通道量化)。在 LongBench 长文本问答任务(最大序列长度 31500)中,QJL 在将浮点数压缩至 3 bits 的设置下,不仅将缓存显存占用降低了 81%(超过 5 倍),还在 NarrativeQA、Qasper 等数据集上取得了所有量化方法中最高的 F1 分数(例如在 NarrativeQA 上达到 21.83,优于 KIVI 的 20.96 和精确基线的 20.79)。在常规长度的 LM-eval 评测集上,QJL 同样做到了精度无损。在代价与局限性方面,KVQuant 因繁重的预处理导致运行极慢,而 QJL 凭借轻量级的 CUDA 算子实现了比精确基线更快的解码速度;不过,虽然 QJL 实现了键缓存的零开销量化,但值缓存依然依赖传统的按 token 量化方案,且为了保证内积估计的准确性,QJL 必须在缓存中为每个键向量额外存储一个标量二范数,同时针对深层网络的异常值通道仍需分配额外的比特位进行双路独立处理,这在一定程度上增加了工程实现的复杂度。

主要贡献

在大型语言模型(LLMs)的部署和推理过程中,随着序列长度的增加,键值(KV)缓存中存储的KV嵌入会导致巨大的内存需求。为了压缩KV缓存,量化是一种有效的方法。然而,传统的量化方法面临着显著的“内存开销”问题,因为它们需要为每个数据块以全精度存储量化常数(至少包含一个零点和一个缩放因子)。根据块大小的不同,这种开销可能会为每个量化数字增加1到2个额外的比特位。

为了解决这一问题,本文提出了一种名为QJL的新型量化方法,该方法由Johnson-Lindenstrauss (JL) 变换和随后的符号位(sign-bit)量化组成。与现有方法不同,QJL消除了存储量化常数的需求,从而实现了零内存开销。本文提出了一种用于两个向量内积的非对称估计器,并证明了对一个向量应用QJL,对另一个向量应用无量化的标准JL变换,能够提供一个具有最小失真的无偏估计器。作者开发了QJL草图(sketch)及其对应内积估计器的高效实现,并结合了轻量级的CUDA内核以优化计算。在各种LLMs和NLP任务中将KV缓存量化为仅3比特时,QJL在不牺牲准确率的情况下,将KV缓存的内存使用量减少了五倍以上,同时实现了更快的运行速度。

图1:通过量化JL(QJL)变换进行KV缓存量化的概述
图1:通过量化JL(QJL)变换进行KV缓存量化的概述

背景知识

自回归语言模型推理机制
部署自回归语言模型进行推理需要在在线设置中执行注意力解码,其中来自每个Transformer层的键(Key)和值(Value)嵌入被缓存在内存中以消除冗余计算。模型依次使用并更新KV缓存,以逐个生成下一个Token。

注意力输出计算
在每次Token生成的阶段,Token流由查询(Query)、键(Key)和值(Value)嵌入的三元组表示。设 $q_i, k_i, v_i \in \mathbb{R}^d$ 为第 $i$ 次生成阶段的三元组,$n$ 为当前在提示编码(Prefill)或生成(Decoding)阶段的流中的总Token数。第 $n$ 次生成阶段的注意力输出可以写为:

$$o_n = \sum_{i \in [n]} \mathtt{Score}(i) \cdot v_i$$


其中,注意力分数向量 $\mathtt{Score} \in \mathbb{R}^n$ 定义为:

$$\mathtt{Score} := \mathtt{softmax} ([\langle q_n, k_1 \rangle, \langle q_n, k_2 \rangle, \dots \langle q_n, k_n \rangle])$$

内存与计算瓶颈
输出嵌入 $o_n$ 将用于计算流中的下一个Token $q_{n+1}, k_{n+1}, v_{n+1}$,直到生成阶段终止。为了计算输出 $o_n$,需要存储所有先前的键和值嵌入 $\{k_i, v_i\}_{i \in [n]}$,在长上下文输入下,以全精度保存它们需要巨大的内存。计算注意力分数的内积时间复杂度为 $O(nd)$。此外,推理速度也受到KV缓存大小的影响,因为每次生成Token时都必须从GPU主存将整个KV缓存加载到共享内存中,导致算术强度低并使GPU核心未充分利用。本文专注于通过量化Token来压缩KV缓存,从而减少存储所需的内存。

方法细节

QJL变换与内积估计器设计
本文的目标是节省用于存储KV缓存的内存空间,同时保持Query和Key之间的内积不失真。为实现这一目标,首先使用保持内积的随机投影对嵌入向量进行变换作为预处理步骤,然后对结果进行量化。具体而言,通过应用Johnson-Lindenstrauss (JL) 变换(即乘以随机高斯矩阵)将输入向量投影到随机子空间上。应用此投影后,结果向量的内积为原始向量的内积提供了无偏且低失真的估计 [8, Dasgupta et al., 2003, Random Structures & Algorithms]。基于此,本文引入了1-bit Johnson-Lindenstrauss变换,包含JL变换以及随后的单符号位(sign bit)量化。同时开发了基于该二进制量化器的非对称内积估计器(一个向量量化为单比特,另一个不量化),使其非常适合KV缓存机制。具体定义如下:
定义3.1(QJL和内积估计器):对于任何正整数 $d, m$,设 $S \in \mathbb{R}^{m \times d}$ 为JL变换矩阵,其元素 $S$ 是来自零均值和单位方差正态分布的独立同分布样本。QJL是一个映射函数 $\mathcal{H}_S: \mathbb{R}^d \rightarrow \{-1, +1\}^m$,定义为:

$$\mathcal{H}_S(k) := \mathrm{sign}(Sk) \quad \mathrm{for~any} \ k \in \mathbb{R}^d$$


此外,对于任意一对向量 $q, k \in \mathbb{R}^d$,基于上述量化器的内积 $\langle q, k \rangle$ 的估计器定义为:

$$\operatorname{Prod}_{\mathbb{Q}, \mathrm{JL}}(q, k) := \frac{\sqrt{\pi/2}}{m} \cdot \|k\|_2 \cdot \langle Sq, \mathcal{H}_S(k) \rangle$$

内积估计器的无偏性证明
与未量化到符号位的标准JL变换向量内积一样,内积估计器 $\mathtt{Prod}_{\mathtt{QJL}}(q, k)$ 是一个无偏估计器。需要注意的是,如果对向量 $q$ 和 $k$ 都应用QJL,将获得它们之间角度的无偏估计器 [6, Charikar, 2002, STOC],但估计内积需要在角度估计器上应用余弦函数,这将导致有偏估计。因此,必须仅对其中一个向量的JL变换结果进行不对称量化,以实现无偏内积估计。
引理3.2(内积估计器 $\mathtt{Prod}_{\mathtt{QJL}}$ 是无偏的):对于任意向量 $q, k \in \mathbb{R}^d$,公式中定义的估计器期望值为 $\mathbb{E}_S [\mathsf{Prod}_{\mathbb{Q}, \mathrm{JL}}(q, k)] = \langle q, k \rangle$,期望基于矩阵 $S$ 的随机性。
证明过程如下:设 $s_1, s_2, \ldots s_m$ 为JL矩阵 $S$ 的行。将 $q$ 分解为投影到向量 $k$ 上的分量及其正交分量,即 $q^{\perp k} := q - \frac{\langle q, k \rangle}{\|k\|_2^2} \cdot k$。估计器可以展开为:

$$\mathtt{Prod}_{\mathrm{QJL}}(q, k) = \frac{\sqrt{\pi/2}}{m} \sum_{i \in [m]} \frac{\langle q, k \rangle}{\|k\|_2} \cdot |s_i^\top k| + \|k\|_2 \cdot s_i^\top q^{\perp k} \cdot \mathrm{sign}(s_i^\top k)$$


由于 $s_i$ 同分布,提取期望后,定义变量 $x := s_1^\top k$ 和 $y := s_1^\top q^{\perp k}$。由于 $\langle q^{\perp k}, k \rangle = 0$,根据正态分布线性组合的性质,$x$ 和 $y$ 是独立的零均值高斯随机变量。这使得正交部分的期望 $\mathbb{E}[y \cdot \mathsf{sign}(x)] = \mathbb{E}[y] \cdot \mathbb{E}[\mathsf{sign}(x)] = 0$。同时,$x$ 的方差为 $\|k\|_2^2$。利用正态随机变量的矩特性 $\mathbb{E}[|x|] = \|k\|_2 \sqrt{2/\pi}$,最终得出期望值严格等于 $\langle q, k \rangle$。

内积估计器的失真界限
本文进一步证明了 $\mathrm{Prod}_{\mathtt{QJL}}$ 具有高概率的有界失真,且其常数甚至小于未量化的原始JL变换,表明量化到一个符号位不会导致准确性损失。
引理3.5(内积估计器 $\mathrm{Prod}_{\mathtt{QJL}}$ 的失真):对于任意向量 $q, k \in \mathbb{R}^d$,如果QJL的维度满足 $m \geq \frac{4}{3} \cdot \frac{1+\varepsilon}{\varepsilon^2} \log \frac{2}{\delta}$,则:

$$\operatorname{Pr}_S \left[ |\mathrm{Prod}_{\mathbb{Q}, \mathrm{JL}}(q, k) - \langle q, k \rangle| > \varepsilon \|q\|_2 \|k\|_2 \right] \leq \delta$$


证明过程通过计算独立同分布估计器 $z_i := \sqrt{\pi/2} \cdot \|k\|_2 \cdot s_i^\top q \cdot \mathrm{sign}(s_i^\top k)$ 的 $\ell$ 阶矩:

$$\mathbb{E} \left[ \lvert z_i \rvert^\ell \right] = \left( \sqrt{\pi} \cdot \lVert k \rVert_2 \lVert q \rVert_2 \right)^\ell \cdot \frac{\Gamma((\ell+1)/2)}{\sqrt{\pi}}$$
结合估计器的无偏性(引理3.2),调用适当版本的Bernstein不等式 [5, Boucheron et al., 2003],设定 $t = \varepsilon \lVert q \rVert_2 \lVert k \rVert_2$,即可得出上述概率误差界限。

基于QJL的Key缓存量化算法
为了计算注意力分数,需要设计能够低失真估计当前Query与缓存中所有Key内积的量化方案。算法1展示了基于QJL的实用过程:
1. 生成具有独立同分布元素 $S_{i,j} \sim \mathcal{N}(0, 1)$ 的随机草图矩阵 $S \in \mathbb{R}^{m \times d}$。
2. 针对数据流中的每个Key Token $k_i$,计算二进制向量 $\tilde{k}_i \gets \mathtt{sign}(S k_i)$ 和范数标量 $\nu_i \gets \|k_i\|_2$。
3. 将量化后的 $\tilde{k}_i$ 和 $\nu_i$ 存储在缓存中。
4. 在 EstimateScores(q_n) 过程中,对于每个 $j \in [n]$,计算内积估计器 $\widetilde{\mathbf{qK}}(j) \gets \frac{\sqrt{\pi/2}}{m} \cdot \nu_i \cdot \langle S q_n, \tilde{k}_j \rangle$。
5. 通过 $\widehat{\mathtt{Score}} \gets \mathtt{softmax}(\widetilde{\mathbf{qK}})$ 计算最终的注意力分数。

Key缓存量化失真的理论保证
定理3.6(QJL Key缓存量化器的失真界限):如果Key嵌入具有有界范数 $\max_{i \in [n]} \|k_i\|_2 \leq r$ 且 $m \geq 2r^2 \varepsilon^{-2} \log n$,对于具有有界范数 $\|q_n\|_2 \leq r$ 的任意Query嵌入 $q_n \in \mathbb{R}^d$,算法1 EstimateScores(q_n) 的输出以 $1 - \frac{1}{\mathtt{poly}(n)}$ 的概率同时对所有 $i \in [n]$ 满足:

$$\left| \widetilde{\mathbf{Score}}(i) - \mathbf{Score}(i) \right| \leq 3\varepsilon \cdot \mathbf{Score}(i)$$


证明逻辑:根据引理3.5,对于每个 $j \in [n]$,估计器与真实内积的误差以高概率受限于 $\varepsilon$。通过应用联合界(Union Bound),该不等式对所有 $j \in [n]$ 同时成立。在应用softmax函数后,估计的分数处于真实分数的 $(1 \pm 3\varepsilon)$ 范围内。该定理表明,在实际场景中(范数为常数),仅需 $m \approx \varepsilon^{-2} \log n$ 个比特即可存储每个Key Token,该比特数与嵌入维度无关,且仅随序列长度对数增长。

Value缓存量化
对于Value缓存,本文采用标准的量化方法,即对每个Token的条目进行归一化,然后将每个条目四舍五入为少数字节的整数表示。这一设计与先前工作 [22, Liu et al., 2024; 13, Hooper et al., 2024] 保持一致,这些工作表明标准的逐Token量化对Value缓存非常有效,且导致精度下降极小。

补充细节

处理异常值(Outliers)
根据近期研究 [22, 13] 的报告,Key嵌入通常包含表现出特定模式的异常值。本文分析了不同层中Key嵌入坐标幅度的分布,发现初始注意力层没有显著的异常值;但在较深的层中,Key嵌入的特定固定坐标(通道)一致表现出较大的幅度,且这种模式在所有Token的这些通道中持续存在(见图2)。由于定理3.6表明注意力分数的失真与嵌入范数成正比,捕获这些异常坐标至关重要。本文在Prompt阶段识别并隔离这些异常通道,以降低Key嵌入的范数并显著减少最终失真。接着,对异常值和正常值分别应用两个独立的QJL量化器实例,对异常值采用较低的压缩率(使用更多比特)进行量化。

图2:Llama-2模型不同层的Key缓存条目幅度,基于示例提示,揭示了显著的模式。嵌入的坐标(通道)按其在Token上的平均幅度排序。在初始层中,没有观察到显著的异常值模式。然而,在更深的层中,少数几个通道(约四个)表现出明显更大的幅度,表明存在显著的异常值。这一观察凸显了处理这些异常值以提高量化准确性和减少Key缓存失真的重要性。
图2:Llama-2模型不同层的Key缓存条目幅度,基于示例提示,揭示了显著的模式。嵌入的坐标(通道)按其在Token上的平均幅度排序。在初始层中,没有观察到显著的异常值模式。然而,在更深的层中,少数几个通道(约四个)表现出明显更大的幅度,表明存在显著的异常值。这一观察凸显了处理这些异常值以提高量化准确性和减少Key缓存失真的重要性。

正交化JL变换
本文观察到,对定义3.1中的JL矩阵 $S$ 的行进行正交化几乎总是能提高QJL量化器的性能。这一发现与先前关于JL变换在随机傅里叶特征 [35, Yu et al., 2016, NeurIPS] 和局部敏感哈希 [14, Ji et al., 2012, NeurIPS] 等应用中的研究一致。因此,在实现和所有实验中,首先生成具有独立同分布高斯条目的随机JL矩阵 $S$,然后使用QR分解对其行进行正交化,最后在算法1中描述的QJL量化器中使用该正交化矩阵。

实验环境

  • 数据集

    • 长上下文理解基准:LongBench(包含NarrativeQA, Qasper, MultiQA-en, MultifQA-zh, HotpotQA, 2WikiMultiQA),最大序列长度设为31,500。
    • 常规长度数据集:LM-eval框架下的 Lambada-OpenAI, HellaSwag, PIQA, MathQA, MMLU。
  • 模型架构:longchat-7b-v1.5-32k(具有16,384上下文长度的微调版Llama-2 7B)、Llama-2-7B、Llama-3-8B。

  • 硬件配置:单张 NVIDIA A100 GPU (80GB 显存)。
  • 软件配置:算法包装在PyTorch中实现。开发了两个轻量级CUDA内核:一个用于量化嵌入向量(支持bfloat16, FP16, FP32数据类型),另一个用于计算任意嵌入向量与缓存中所有量化向量的内积。
  • 对比基线:FP16/BF16(16 bit全精度)、KIVI(3 bit)、KVQuant(4.3 bit)。

实验结果

1. 端到端长上下文文本生成评估(LongBench)
* 实验内容:在LongBench的6个问答数据集上,评估FP16基线、KIVI (3 bit)、KVQuant (4.3 bit) 和 QJL (3 bit) 的F1分数。
* 实验结果:如表1所示,QJL在NarrativeQA (21.83)、Qasper (29.44) 和 2WikiMultiQA (23.60) 数据集上取得了量化方法中最高的F1分数。
* 分析结论:在长文本问答任务中,QJL能够在仅使用3比特的情况下,保持与16比特全精度模型相当的准确率,且整体表现优于或媲美现有的先进KV缓存量化方法。

2. 运行时间与生成速度分析
* 实验内容:在单层注意力层中,测试不同输入序列长度(1k到128k)下,编码Prompt并量化KV缓存的时间,以及生成Token(Llama-2生成128个,Llama-3生成64个)的挂钟时间。
* 实验结果:如图3所示,KVQuant在Prompt编码和解码阶段均显著慢于其他方法。KIVI和QJL(3 bit)在Prompt阶段显示出极小的运行时间开销,并在解码时间上快于基线。特别地,QJL是唯一能够量化Llama-3的方法(内核支持分组查询注意力和BF16),其在Llama-3上的生成速度与精确方法相同。
* 分析结论:QJL在显著减少至少5倍内存使用的同时,不仅没有引入明显的计算延迟,反而因为缓解了显存带宽瓶颈,加快了Token的解码速度。

图3:在单层注意力模型中使用不同量化方法编码提示和量化KV缓存(左)、为llama2模型生成128个Token(中)以及为llama3模型生成64个Token(右)的挂钟时间(毫秒)。输入序列长度从1k到64k不等。KIVI和QJL(我们的,每FPN 3比特)都显示出比基线更快的解码时间。然而,KVQuant在量化和解码阶段都明显较慢。QJL是唯一可以量化Llama3的方法,因为我们的内核支持分组查询注意力和BF16数据类型。我们观察到Llama3的生成速度与精确方法相同。注意,我们的内存使用量至少比精确方法少5倍,并且可以支持所有数据类型。
图3:在单层注意力模型中使用不同量化方法编码提示和量化KV缓存(左)、为llama2模型生成128个Token(中)以及为llama3模型生成64个Token(右)的挂钟时间(毫秒)。输入序列长度从1k到64k不等。KIVI和QJL(我们的,每FPN 3比特)都显示出比基线更快的解码时间。然而,KVQuant在量化和解码阶段都明显较慢。QJL是唯一可以量化Llama3的方法,因为我们的内核支持分组查询注意力和BF16数据类型。我们观察到Llama3的生成速度与精确方法相同。注意,我们的内存使用量至少比精确方法少5倍,并且可以支持所有数据类型。

3. 常规长度数据集评估(LM-eval)
* 实验内容:在Lambada-OpenAI等5个常规长度数据集上,评估Llama-2-7B和Llama-3-8B模型在不同量化方法下的准确率。
* 实验结果:如表2所示,QJL(3 bit)在Llama-2-7B上的表现与FP16基线和KIVI几乎一致。在Llama-3-8B上,QJL(3 bit)的平均表现甚至略微优于BF16基线(例如PIQA从79.65提升至79.87)。
* 分析结论:QJL在实现约81%内存缩减的同时,在短序列任务上同样不会牺牲模型性能,证明了该方法在不同上下文长度和不同模型架构下的鲁棒性。

结论

本文针对大型语言模型中KV缓存带来的巨大内存瓶颈,提出了一种名为QJL的高效、数据无感知(data-oblivious)的量化方法。通过将Johnson-Lindenstrauss变换与符号位量化相结合,QJL彻底消除了传统量化方法中存储量化常数带来的内存开销。理论分析证明了QJL的非对称内积估计器能够提供无偏且低失真的注意力分数计算。实验结果表明,QJL能够将KV缓存压缩至每参数仅3比特,实现超过5倍的内存缩减,同时在长短上下文任务中均保持了与全精度模型相当的准确率,并显著提升了推理速度。未来的工作将专注于在CUDA中完成全部算法逻辑的实现,以进一步提升整体计算性能。


引用的参考文献汇总
* [5] Boucheron, S., Lugosi, G., & Bousquet, O. (2003). Concentration inequalities. (在证明引理3.5时引用,用于调用适当版本的Bernstein不等式以界定尾部概率)。
* [6] Charikar, M. S. (2002). Similarity estimation techniques from rounding algorithms. STOC. (在证明引理3.2前引用,用于说明对两个向量同时应用QJL会得到角度的无偏估计器,以此引出非对称量化的必要性)。
* [8] Dasgupta, S., & Gupta, A. (2003). An elementary proof of a theorem of johnson and lindenstrauss. Random Structures & Algorithms. (在方法细节段落引用,用于说明JL变换可以提供无偏且低失真的内积估计)。
* [13] Hooper, C., et al. (2024). KVQuant: Towards 10 Million Context Length LLM Inference with KV Cache Quantization. (在Value缓存量化和补充细节中引用,说明Value缓存适用标准量化,以及Key嵌入存在异常值模式)。
* [14] Ji, J., et al. (2012). Super-bit locality-sensitive hashing. NeurIPS. (在补充细节中引用,说明正交化JL矩阵能提升性能)。
* [22] Liu, Z., et al. (2024). Kivi: A tuning-free asymmetric 2bit quantization for kv cache. (在Value缓存量化和补充细节中引用,说明Value缓存适用标准量化,以及Key嵌入存在异常值模式)。
* [35] Yu, F. X. X., et al. (2016). Orthogonal random features. NeurIPS. (在补充细节中引用,说明正交化JL矩阵能提升性能)。