1. 核心定义:Query 向量的角色

在大模型的推理架构中,Query 向量被定义为一种**“瞬息向量”(Transient Vector)**。

  • 无状态性:它不像 KVCache 那样进行持久化存储,而是随每个生成步骤即时产生、即时消耗。
  • 驱动器属性:Query向量是整个注意力机制优化的核心引擎。它负责驱动 Importance 向量的更新,并间接驱动 Anchor 向量的演化,并与Anchor向量筛选出的top-k个KBlock执行注意力计算,得到attn-score,并进一步获取Value的值(Value = Q*K^T)。

2. 加速运算流程:从粗筛到精算

为了在保证精度的同时大幅加速运算,系统采用了一种**“两阶段筛选机制”**:

第一阶段:基于 Anchor 的快速粗筛 (Coarse Filtering)

查看Anchor向量深度解析

(1) 输入:当前的 Query 向量 与全局维护的 Anchor 向量

(2) 输出:根据Query向量与全局维护的Anchor向量进行计算相似度操作,计算得分,迅速筛选出相似度最高,即最相关的 Top-K 个KCache块

  • 性能提升:将搜索空间从全量 KVCache 缩减至关键的 K 个KCache块,避免全量计算。
第二阶段:基于 KCache 的精细计算 (Fine Calculation)

(1) 输入:Query 向量 与筛选出的 Top-K 个 KCache 块

(2) 输出: 由输入的Q与K,计算 Q*K^T 执行标准的注意力分数计算,得到精确的attn-score

  • 目的: 这些分数将用于后续的 Value 加权求和,生成最终的上下文表示。
当前 Query 触发 Importance 的计算/更新  -->
Importance 驱动Anchor向量更新:Anchor向量根据Importance矩阵的值进行更新 -->
Query与Anchor计算相似度: Query与Anchor计算相似度的得到相关性最高的 Top-K 个K-Block块 -->
执行注意力计算:Query 与 Top-K 块交互,产出最终 Attention 结果,更新Value。

3. 动态循环机制:Importance 与 Anchor 的协同进化

查看Importance矩阵深度解析

系统存在一个紧密的反馈循环,确保筛选机制能自适应数据分布的变化:

3.1 Importance 向量的计算策略

  • Prefill 阶段必然执行。对初始上下文进行一次完整的 Importance 矩阵计算,建立初始的重要性基准。

  • Decode 阶段:策略性执行

    • 若模型采取高精度策略,则对每个新生成的 Query 向量都执行一次对 Importance 矩阵的精细计算; 当然也存在一些优化算法在decode阶段不会再去计算importance矩阵了。(因为Importance矩阵的计算量极大。)
    • :此处假设模型采用全量精细计算策略以最大化效果。

3.2 Anchor 向量的更新逻辑

Anchor向量的更新由Importance矩阵指导的。(参考文章)Importance矩阵是对KVCache中的每个tokens都映射到Query向量上,使得每个tokens对于Query的权重都一清二楚。而Anchor向量则是将KVCache的每个Block映射到Query向量上,目的是为了挑选出top-K个相关的块,来达到降低计算压力的目的。

  • 目的:使 Anchor 向量“记住”最新的关键信息分布。
  • 效果:当下一轮新的 Query 向量传入时,更新后的 Anchor 能更准确地引导 Top-K 筛选,减少漏检重要信息的概率。

更多推荐