# 用户提供 Figure 4 的文字转写

控制者查看用户提供的 figure4.png 后整理。两方只收到这份相同文字，不收到原图，也不要到任务目录外寻找图片。本文件描述图中事实；三维布局、造型和网页排版由你独立设计。

图题：**Three operating modes of CSA2**。一张横向三栏流程图，左为 Full Mode，中为 Reindex Mode，右为 Reuse Mode。每栏外围是浅灰描边圆角框，箭头主要从下向上。三栏顶部相同：Core Attention 上接 Attention Output；Main Q 直接接 Core Attention。SWA KV 与 Selected Main KV 在 Concatenation 汇合，再输入 Core Attention。

## 所有模式共有的连接

```
Main Q ------------------------------------> Core Attention -> Attention Output
SWA KV --------------------> Concatenation -> Core Attention
Main KV -> Selection -> Selected Main KV ---> Concatenation
Top-K Indices -> Selection
```

Main Q 是当前层的主注意力查询。SWA KV 是当前层的局部滑动窗口 KV。Main KV 是更长历史的主/全局 KV 来源。Top-K Indices 是选择哪些 Main KV 位置的整数索引，不是 KV 向量，也不是概率。Selection 按这些索引取位置；Selected Main KV 和 SWA KV 共同参与一次 Core Attention。**Main Q 不经过 Concatenation。SWA KV 不经过全局 Top-K 选择。**

## Full Mode（左栏）

底部从左到右为 Main Q、SWA KV、Main KV、Indexer K、Indexer Q。
Indexer K 与 Indexer Q 都向上进入 Indexer，Indexer 输出 Top-K Indices；索引从右侧接 Selection，Main KV 从下接 Selection。其余连接同上。
Main KV、Indexer K、Indexer Q、Top-K Indices 的框为浅绿色，表示这些量由**当前层计算**。Main Q/SWA KV 在图中是白色，但它们也由当前层计算，白色绝不表示复用。Full 层发布可供后续层共享的主 KV、索引键和新索引。

## Reindex Mode（中栏）

当前层仍计算 Main Q、SWA KV、Indexer Q，并运行 Indexer 得到新的 Top-K Indices。绿色为 Indexer Q 和新 Top-K。
Main KV 与 Indexer K 画在该栏框外下方，浅黄色表示它们来自**最近的 Full Mode 层**。黄色 Main KV 向上进入 Selection，黄色 Indexer K 向上进入 Indexer。Indexer 用复用的 K 与当前层自己的 Q 重新决定关注哪些全局位置。其余主注意力流程不变。

## Reuse Mode（右栏）

当前层仍计算 Main Q、SWA KV，并运行自己的 Core Attention。
黄色 Main KV 由最近 Full 层提供，向上进入 Selection。浅红/珊瑚色 Top-K Indices 来自**最近产生索引的层，即 Full 或 Reindex 层**，从右侧接入 Selection。
该栏没有运行 Indexer，也没有生成本层 Indexer Q/K。不把复用索引画成重新打分。Selected Main KV 仍与本层 SWA KV 汇合，再与本层 Main Q 做注意力。**复用的不是 Attention Output，也不是整个 attention 计算。**

## 色彩来源语义与三维转译

图4绿色=当前层新计算的全局/索引分支量；黄色=来自最近 Full 层的主 KV/Indexer K；红色=来自最近索引生成层的 Top-K。网页可把这套色彩做得更清新精致，保留含义；Main Q、SWA KV 可用稳定的蓝色、淡紫色区分角色，并注明每层都新计算。用文字和标识配合颜色，不能让读者只靠辨色猜意义。
原图是流程图，没有三维造型或动画。网页应该把 token/KV 位置变成看得见厚度的方块，把索引变成带数字的小方片；动画让被选中的 KV 副本沿连线移动、与局部窗口汇合，而不是把原图当贴图贴上去。

## 与参考源码的对应与边界

固定源码 revision dba1be0a40aa45a94ad051997016db3960a90277。
- inference/model.py:613–790 的 Attention：is_kv_source、is_index_source、_window_kv、_compress_topk_idxs、_compress_kv、forward；1166–1175 的 SharedAttentionRuntime。
- config.json:27–28：Full 代码层号 [2,8,14,20]；索引生成层 [2,8,14,20,24,28,32,36]，因此 24/28/32/36 为 Reindex。中间有压缩分支的层为 Reuse。代码层0/1只有SWA，不是图中三模式的全局分支示例。
- 推荐讲解实例 Full=代码层20、Reindex=24、Reuse=25。24与25共用20层的Main KV/Indexer K，25的Top-K来自24。代码层号0-based，显示为21/25/26层时必须明确换算。这是跳过重复层的三个代表，不是连续仅有三层的模型。
- reference forward 实际拼接窗口 KV 与压缩缓存，并拼接对应位置索引后调用 sparse_attn；图中 Selection/Selected KV 是逻辑视图。动画中复制所选方块到汇合区是教学可视化，不声称原代码真的创建此精简物理缓存或删除未选KV。
- 生产窗口128、index_topk512；网页可用4个局部方块、12个全局方块、3个选中位置作明确标注的缩略。绝不伪造真实权重/注意力概率/推理输出/测速。
