跳到内容

IndexCache

IndexCache 通过在层级间缓存和重用 top-k 索引,减少了 DeepSeek-V3.2 (DSA) 模型中冗余的 top-k 计算。

背景

DeepSeek-V3.2 使用 DeepSeek 稀疏注意力 (DSA) 机制,其中 top-k 标记选择是在每一层中计算的。对于层数众多的深度模型,这种计算开销很大。IndexCache 允许通过重用前一层的索引来跳过冗余的 top-k 计算。

参见: IndexCache 论文

用法

CLI

vllm serve deepseek-ai/DeepSeek-V3.2 \
    --hf-overrides '{"use_index_cache": true, "index_topk_freq": 4}' ...

配置参考

参数 类型 默认值 描述
use_index_cache bool false 启用 IndexCache。必须设置为 true 才能使用此功能
index_topk_freq int 1 计算 top-k 的频率(按层数)。1 = 每一层都计算(已禁用),4 = 每 4 层计算一次
index_topk_pattern str null 逐层 F/S 模式。如果设置,将覆盖 index_topk_freq。每个字符对应一个 DSA 层:F = Full(完整计算),S = Shared(共享索引)

配置示例

使用 index_topk_freq(每 N 层计算一次)

vllm serve deepseek-ai/DeepSeek-V3.2 \
    --hf-overrides '{"use_index_cache": true, "index_topk_freq": 4}' ...

使用 index_topk_pattern(明确的逐层控制)

# custom pattern for 61 layers: F = compute, S = reuse
vllm serve deepseek-ai/DeepSeek-V3.2 \
    --hf-overrides '{"use_index_cache": true, "index_topk_pattern": "FFSFSSSFSSFFFSSSFFFSFSSSSSSFFSFFSFFSSFFFFFFSFFFFFSFFSSSSSSFSF"}'

工作原理

  1. 当启用 IndexCache 时,标记为 "F" (Full) 的层会计算并存储 top-k 索引
  2. 后续标记为 "S" (Shared) 的层将从前一层接收缓存的索引,而不是重新计算
  3. 缓存的索引会通过层栈传递,从而减少总计算量

要求

  • DeepSeek-V3.2 或兼容的 DSA 模型
  • 通过 --hf-overrides 设置 use_index_cache: true