乘法很难,加法很简单。

任何小学生都知道这一点。但他们不知道的是,对数的存在正是为了利用这种不对称性:通过将乘法转换为加法,在简单的世界中操作,然后逆转这种变换。结果正确,而努力则大大减少。

这种模式——把问题转化到一个易于解决的空间,解决问题,然后再转换回来——是整个工程学中最强大的工具之一。快速傅里叶变换(FFT)用它来处理信号,对数用它来处理乘积。而现在,Google发表了一篇论文,提出用它来压缩语言模型。

这个方案叫做 TurboQuant。它的理念优雅得值得我们详细探讨一番。

问题:压缩而不牺牲质量

现代的大语言模型(LLMs)有一个主要瓶颈,而它并不是模型本身,而是它的工作内存。每当一个模型生成文本时,它需要在内存中维护一种叫做键值缓存(KV缓存)的结构——基本上就是模型用来生成下一个词所需的“上下文”记忆。

对于一个具有长上下文的大型模型来说,其KV缓存可以占用几十GB的显存。这是一个严重的问题:GPU的显存非常昂贵、有限,而且需要用来处理其他很多事情。

一个显而易见的解决方案是量化:减少每个数字的精度。比如,代替用32位浮点数(float32)存储每个值,可以用4位甚至3位。这意味着你从一个连续的值域转化为离散的定标值。通常,这种方法效果不错。

直到你遇见了一个陷阱。

规范化常数的陷阱

要对一组数字进行量化,你需要知道它们的范围:它们的最小值和最大值。这些被称为规范化常数,如果需要还原原始值,就必须保存这些完整的常数(16位)。

而问题就在这里:,如果你用3位对每个数字进行量化,但每8个数字你就需要保存一个16位的常量,这些常量会为每个数字额外占用2位。你的“3位”压缩实际上需要5位才能实现。你几乎失去了一半的压缩效果。

这就像是搬家到一套更小的公寓,却发现搬家的纸箱占了新公寓的一半空间。

而你也不能随意增加数据块的大小以分摊这些常数,因为更大的数据块意味着近似度变差——范围加大,你会失去精度。你被困在了两个矛盾的力之间。

这个问题困扰了大家好几年。每个人都试图通过发明更好的压缩算法来解决它,比如自适应块、非均匀量化、混合方案之类的方案。但所有这些方法只是在增加复杂度,带来的效果却非常有限。

然后Google做了一件不同的事情。他们没有发明一个更好的压缩器,他们改变了坐标。

改变坐标系:从直角坐标变成极坐标

TurboQuant的核心思想是,在量化之前先对向量进行随机旋转,然后将结果转换为极坐标

分步骤来解释。

第一步:随机旋转

想象一下,你在一个高维空间中有一个向量。它的各个分量分布得并不均匀——某些维度的值非常大,而另一些则接近于零。这种不平衡恰恰是为什么你需要为每个数据块保存规范化常数:每个块都有一个不同的范围。

如果你把这个向量乘以一个随机的旋转矩阵会怎样?从几何上看,你是在将向量旋转到一个任意的方向。向量本身保持不变(长度相同,与其他向量的关系也依然保持),但它的各个分量会重新分布。

这时,会发生一个看似魔法的数学现象:在高维空间中,随机旋转会使向量的分量变得几乎均匀。这被称为测地集中现象——在高维空间中,几乎所有分布的质量都会集中在其平均值附近。随机旋转会使这一切变得平滑。

用通俗的语言来说:旋转消除了峰值和谷底。在旋转之后,所有的数据块范围变得相似。如果所有块的范围都类似了……就不需要为每个块单独保存范围了。

第二步:转换为极坐标

经过旋转之后,TurboQuant将向量从直角坐标系(x, y, z…)转换为极坐标(一个半径和多个角度)。

为什么要这样做?因为随机旋转使得角度变得高度可预测——它们被集中在狭窄的范围内且是已知的。这些角度的量化阈值是固定的,不受数据的影响。

这意味着:角度不需要保存任何规范化常数。 之前每个数字要额外占用的1-2位开销现在完全消失。你只需要保存半径(一个数值对应整个向量)和用固定界限量化的角度。

flowchart LR
    subgraph antes["   传统量化   "]
        direction LR
        V1[" 原始向量 "] --> B1[" 划分为数据块 "]
        B1 --> N1["&nbsp;计算每块的<br/>最小值/最大值&nbsp;"]
        N1 --> Q1["&nbsp;量化&nbsp;<br/>3位+2位开销&nbsp;"]
    end

    subgraph despues["&nbsp;&nbsp;&nbsp;TurboQuant&nbsp;&nbsp;&nbsp;"]
        direction LR
        V2["&nbsp;原始向量&nbsp;"] --> R2["&nbsp;随机旋转&nbsp;"]
        R2 --> P2["&nbsp;转换到极坐标&nbsp;"]
        P2 --> Q2["&nbsp;量化&nbsp;<br/>3位,开销≈0&nbsp;"]
    end

    antes ~~~ despues
---

精彩之处在于,旋转是可逆的。要恢复原始向量,只需反量化,回到直角坐标系,然后应用逆旋转。结果是,KV缓存的压缩比达到了**6倍**,且没有可测量的精度损失。

## 为什么能奏效:随机性减少不确定性

这是论文中最违背直觉的地方。**添加噪声(随机旋转)实际上减少了不确定性。** 这似乎是个悖论,但其背后有着优雅的解释。

没有旋转时,每个向量都有自己内部的分布特性。某些维度占主导地位,其他维度是噪声。你无法提前知道每个块的范围,因此必须测量并存储这些范围。

有了旋转,**你强制所有向量都服从相同的统计分布**(测地集中现象的作用)。你无需测量任何东西,因为你提前知道值的分布特性。随机性破坏了每个向量的特定信息(这些信息对你毫无用处),并用可预测的规则性取而代之(这对你非常有用)。

这就像洗牌一副牌。在洗牌前,你不知道牌的顺序——必须逐张查看。而洗好后,你能确定:它们的顺序是均匀随机的。看似无序的洗牌后,在统计层面你对这副牌了解更多了。

## TurboQuant的成果

Google使用Gemma和Mistral模型在多个基准中测试了TurboQuant,结果如下:

| 指标 | 值 |
|------|----|
| KV缓存压缩 | **6倍**(从32位减少到大约5位,其中量化为3位) |
| 注意力计算加速(H100) | **最高达8倍**的*attention logits*计算速度提升 |
| 精度 | 在LongBench、RULER、ZeroSCROLLS上无可测精度损失 |
| 是否需要重新训练 | **不需要**——无需微调或校准即可运行 |
| 数据依赖性 | **无**——与数据无关 |

最后一点尤为关键。大多数量化技术依赖于校准数据集来调整参数。而TurboQuant完全不需要——随机旋转直接起效,因为测地集中现象是空间的属性,而不是数据的特性。

## 每个程序员都该知道的模式

TurboQuant是一个更大范围内模式的特例,这个模式值得一个名字:**转化即制胜**。

核心思想是:当一个问题很难解决时,先问问自己,你是否站在正确的空间中。有时候,答案并不是更聪明的算法,而是问题的另外一种表达形式。

你早已熟悉的一些例子:

| 问题 | 原始空间 | 转换 | 简化空间 |
|------|---------|------|--------|
| 大数乘法 | 算术 | 对数 | 加法 |
| 过滤信号 | 时间 | FFT | 频率 |
| 解微分方程 | 时间 | 拉普拉斯变换 | 代数 |
| 压缩KV缓存 | 直角坐标 | 旋转+极坐标 | 规整角度 |
| 找文本模式 | 字符 | 正则表达式 → 自动机 | 状态转移 |

在每种情况下,困难并不在于问题本身,而在于**表达形式**。改变坐标,难题变得简单。

## 你今天能应用的

即使你不在压缩LLMs,也可以采用这个模式。下次遇到一个“看似简单但难以解决”的问题时,问问自己:

**1. 我在正确的空间中吗?** 如果比较两件事很难,也许应该先规范化后再比较。如果搜索效率低,也许应该建立一个索引(这是为搜索优化的替代表达方式)。

**2. 我的领域中是否有已知的变换?** FFT自1965年以来就存在了。小波变换从80年代就被引入。向量嵌入技术自2013年来到大舞台。许多“困难”的问题已经有标准的变换方案,解决它们。别急着发明新东西,先查查是否有人已经找到了正确的坐标。

**3. 我能通过添加随机性简化问题吗?** 哈希、随机投影、概率性摘要——它们之所以有效,是因为添加受控随机性可破坏不必要的复杂性。如果你的问题有着让你头疼的不规则结构,有时最好的策略是有目的地摧毁这种结构。

## 下次碰到问题解决不了时

TurboQuant的教训并不仅仅适用于模型压缩。它告诉我们,在发明更聪明的解决方案前要三思,也许你真正需要的只是**改变视角**。

近年来,机器学习领域一直试图通过更复杂的量化算法来解决规范化常数负担的问题。更大的数据块,更多的量化级别,更复杂的启发式方法——一切都停留在直角坐标的框架内。然而改进却十分有限。

Google却另辟蹊径。他们旋转数据,改变了坐标系,问题随之消失。他们不是解决了这个问题。而是**消弭**了它。

下次,当你花费数小时试图用一堆补丁修复一个无法解决的问题时,停下来问问自己:我是和问题本身作斗争,还是和表达形式做斗争?因为如果站在错误的坐标系上,世界上最聪明的算法也救不了你。

---

**参考来源:** [TurboQuant: Redefining AI Efficiency with Extreme Compression](https://research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression/) — Google Research Blog.