← 关联知识节点:长上下文:稀疏注意力 / DSA / IndexShare
交互工具 · 原理

稀疏注意力模式对比

上下文一长,注意力就开始「少看几眼」:滑窗无脑只看最近 w 个,DSA 用索引器挑 top-k,MoBA 门控挑块,NSA 压缩+选择并用。拧查询位置、切五种策略,看每种策略对这个查询实际点亮哪些 token、两笔账差多少;再把「答案:42」放到序列最开头,看滑窗当场失忆、索引策略稳稳召回。

纯前端确定性模拟:索引器/门控分数为预设相关度表(真实系统是学出来的轻量小网络,页面明示),两笔账按访问格数计(账一 = 每查询点亮格数,账二 = 64 查询之和);文章参数照抄:w=8192 → 1/122、k=2048 → 1/488(1M 打分对数),零 API、零随机。

稀疏注意力 = 先挑,后看:滑窗无脑只看最近 w 个, DSA 用索引器挑 top-k,MoBA 门控挑块,NSA 压缩+选择并用。点一个策略、拖查询位置, 看点阵怎么点亮——每个亮格是这个查询实际要打分的 token。 再把「答案:42」放到序列开头,看滑窗失忆、索引召回。

切策略(两轴框架:怎么挑 × 看什么)

滑窗:只看最近 w 个 token,更早的一概不看——简单可预测,代价是窗外彻底失忆。它是所有动态路线的对照组。〔怎么挑:固定(只看最近 w) | 看什么:原始 token〕

这个查询实际看谁

查询 #56 · 点亮 16/64 格
Q
近处直看(滑窗 / 当前块)索引 top-k 选中门控选中块选择层细看块压缩摘要代表(1 格代 8 格)查询位置
查询位置(这个 token 在问)#56

相关度分数为预设演示口径(真实索引器/门控是学出来的轻量小网络):#0 号「答案:42」分数最高,7 / 20 / 33 / 45 号是中段锚点,其余为装饰分

窗口宽 w(格)16

滑窗只看最近 16 格;演示 64 格缩影,文章口径 w=8,192(1M 下 1/122)

top-k 值 k(格)8

只有 top-k 索引(DSA)吃这个参数——切过去拧它,看两笔账怎么随 k 涨

两笔账(按访问格数计)

滑窗
账一 · 每查询计算量
16 格
对照全注意力 64 格
账二 · 全序列总量
904 / 4,096
占全注意力 22.1%(1/4.5)

口径:账一 = 该查询点亮格数(「看」的成本);账二 = 64 个查询各自访问格数之和(打分对数,全注意力 64²=4096)。 「挑」的成本(索引器/门控打分一遍全历史)演示不计时——IndexShare 每 4 层共享一次点名,可再省为 1/4。

文章口径(1M token 打分对数):全注意力 1 万亿 对 · 滑窗 w=8,192 → 82 亿(1/122)· top-k k=2,048 → 20.5 亿(1/488)

远处的答案:各策略的召回差异

预设场景:把关键 token「答案:42」放在序列最开头(#0), 查询问「答案是多少?」并停在尾部。滑窗看不见它 → 答错;索引 / 门控 / 压缩选择看得到 → 答对——这就是「少看几眼」各流派召回能力的分水岭。

怎么挑 × 看什么两轴给新路线归位:滑窗=固定+原始;DSA=动态+原始(token 粒度);MoBA=动态+原始(块粒度);NSA=动态+混合(摘要与原始并用)。越靠右挑得越聪明(「挑」的成本越高),越靠下越省显存(代价是丢细节)。
挑的账 + 看的账索引器打分、挑 top-k 是「挑」,只细算选中者是「看」——稀疏化把两笔账都砍小:DSA 的 O(L²) → O(Lk),滑窗 1M 下省到 1/122,top-k(k=2048)省到 1/488。挑错就丢信息:检索类任务几乎无损,全局推理是各路线被反复质疑的软肋。