# FP16 KV缓存的数值等价幻觉：自回归推理中的系统性偏差研究

> 本文揭示了FP16精度下KV缓存与无缓存重计算之间的数值非等价性。研究发现由于浮点运算的非结合性，两种执行路径会产生确定性的token序列分歧，且缓存开启路径在多数情况下准确率更高。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-16T15:59:40.000Z
- 最近活动: 2026-04-20T02:52:42.744Z
- 热度: 86.0
- 关键词: KV cache, FP16, numerical equivalence, floating-point arithmetic, non-associativity, transformer inference, autoregressive generation
- 页面链接: https://www.zingnex.cn/forum/thread/fp16-kv
- Canonical: https://www.zingnex.cn/forum/thread/fp16-kv
- Markdown 来源: ingested_event

---

# FP16 KV缓存的数值等价幻觉：自回归推理中的系统性偏差研究

## 引言：一个被忽视的假设

在自回归Transformer模型的推理优化中，KV缓存(Key-Value Cache)是一项无处不在的技术。它的核心思想很简单：在生成序列的过程中，避免重复计算之前token的键(Key)和值(Value)向量，而是将它们缓存起来供后续步骤复用。这一优化极大地提升了长序列生成的效率，使得实时对话、长文档生成等应用成为可能。

长期以来，业界普遍默认一个关键假设：KV缓存的推理结果在数值上等同于无缓存的重计算。换句话说，开启缓存(cache-ON)和关闭缓存(cache-OFF)两种执行路径应该产生完全相同的输出。如果这个假设成立，那么KV缓存就是一个"免费"的优化——它提升速度而不改变结果。

然而，本研究以严谨的经验证据挑战了这一假设。研究发现，在标准的FP16(半精度浮点)运算下，KV缓存与无缓存重计算并非数值等价，而是会产生系统性的、确定性的输出分歧。这一发现不仅具有重要的理论意义，也对生产环境中的模型部署和评估具有实际影响。

## 浮点运算的非结合性：数学根源

要理解KV缓存为何会导致数值分歧，首先需要回顾浮点运算的一个基本性质：非结合性(Non-Associativity)。

在数学中，加法运算满足结合律。然而，在浮点运算中，由于有限精度表示，运算顺序会影响最终结果。FP16只有16位精度(1位符号位、5位指数位、10位尾数位)，中间结果的舍入误差会在不同运算顺序下累积不同，导致最终结果出现微小但非零的差异。

KV缓存引入了不同的运算顺序：
- Cache-OFF路径在每个步骤都进行完整的矩阵乘法
- Cache-ON路径通过拼接操作逐步构建注意力矩阵

这种运算顺序的差异，在FP16的非结合性作用下，就会导致数值结果的系统性分歧。

## 实验设计：严格的因果验证

### 实验设置

**模型选择**：LLaMA-2-7B、Mistral-7B-v0.3(GQA架构)、Gemma-2-2B

**评估基准**：GSM8K数学推理数据集

**采样策略**：贪婪解码及多种随机采样配置

### 核心发现一：100%的Token分歧率

实验结果令人震惊：在所有测试条件下，cache-ON和cache-OFF路径的token分歧率达到100%。即使在完全确定性的贪婪解码设置下，分歧依然存在——这明确排除了采样随机性作为原因。

### 核心发现二：系统性的准确率差异

更有趣的是，在9个测试条件中的8个，cache-ON路径的准确率高于cache-OFF。这表明分歧不是随机噪声，而是具有系统性方向的偏差。

### 核心发现三：FP32的证伪实验

将所有计算切换到FP32精度后：
- 分歧率下降了八个数量级
- Token翻转完全消除(翻转率降至精确的0.0%)

这强有力地证实了FP16的非结合性是导致数值分歧的唯一因果驱动因素。

## 深入分析：架构相关的分歧模式

### Grouped-Query Attention的尖锐分歧

Mistral-7B采用的GQA架构表现出独特的分歧模式：分歧在第一层就急剧放大。这是因为GQA中多个查询头共享同一组键头，在FP16精度下会放大数值误差。

### Gemma的均匀累积模式

Gemma-2-2B展现出不同的模式：分歧在所有层中均匀累积。这与更大的注意力头维度和滑动窗口注意力机制相关。

## 激活修补实验：定位因果变量

激活修补实验揭示：即使修补整个残差流，也无法恢复cache-free的生成轨迹。这表明因果变量位于状态化的KV缓存本身，而非注意力计算的瞬时误差。

## 对LLM推理系统的启示

### 1. 数值等价假设的重新审视

研究明确推翻了KV缓存是数值等价优化的假设。在FP16推理中，KV缓存实际上是一种有损优化。

### 2. 精度与效率的权衡

研究发现cache-ON在FP16下通常比cache-OFF更准确，这为资源受限场景提供了参考：FP16+KV缓存可能是速度与准确性之间的"甜蜜点"。

### 3. 确定性推理的挑战

对于需要严格确定性输出的应用，KV缓存引入的数值分歧需要认真对待。即使使用贪婪解码，输出也取决于是否使用缓存。

## 结语

本研究打破了KV缓存数值等价的幻觉，揭示了FP16精度下浮点运算非结合性对推理结果的影响。这一发现提醒我们，在追求效率优化的同时，必须保持对底层数值行为的清醒认识。了解这些效应的存在，是构建更可靠、更可理解的AI系统的必由之路。
