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"}'
工作原理¶
- 当启用 IndexCache 时,标记为
"F"(Full) 的层会计算并存储 top-k 索引 - 后续标记为
"S"(Shared) 的层将从前一层接收缓存的索引,而不是重新计算 - 缓存的索引会通过层栈传递,从而减少总计算量
要求¶
- DeepSeek-V3.2 或兼容的 DSA 模型
- 通过
--hf-overrides设置use_index_cache: true