ARCHITECTURE / 07 LONG CONTEXT

一百万 Token,
不是一扇更大的窗

从 2K 到 1M,不是把配置文件里的数字乘 500。研究者先后改写了连接图、GPU 内存流、 KV Cache、位置表示、递推状态和跨设备系统;Kimi K3 与 DeepSeek‑V4 是这些路线的两种汇流答案。

BOTTLENECKS
5 张独立账单
CORE PAPERS
26 篇一手来源
LINEAGE
2019 → 2026
LAB
8 种策略 · 4 档长度
ENDPOINT
K3 ↔ DeepSeek‑V4

00 FIVE LEDGERS

先拆成五个问题,才不会被“高效”这个词骗过

“更长上下文”常被写成一条进度条,实际上至少有五个互不等价的瓶颈。 一个方法可能让墙钟时间更短,却完全没有减少理论 FLOPs;也可能把 KV Cache 变薄,却仍然让每个 Query 看遍全部历史。

B1 / COMPUTE两两配对O(L²d)

序列变 2 倍,注意力配对约变 4 倍。长 Prompt 的 prefill 最先感到这张账单。

Longformer · Performer · DSA · CSA
B2 / CACHE历史 K/VO(L · layers · KV width)

Decode 不想重算旧 Token,于是把逐层 K/V 留在显存;上下文、并发和缓存宽度相乘。

MQA · GQA · MLA · HCA
B3 / POSITION训练外位置Ltest > Ltrain

模型可能“装得下”长输入,却不认识远处的门牌号;位置扩展不自动产生长程推理。

RoPE · ALiBi · PI · YaRN · NoPE
B4 / CAPACITY有限状态S ∈ Rdₖ×dᵥ

线性注意力把无限历史压进固定白板,成本稳定,但不能无损保留任意 Token 地址。

RetNet · Mamba · DeltaNet · KDA
B5 / SYSTEM跨设备与服务state · network · cache

单卡装不下后,还要决定传 KV、传状态、做 scan,怎样缓存共享前缀和恢复长轨迹。

Ring · CP · FlashKDA · Mooncake
精确比喻:图书馆不是只换一扇大门

Full Attention 像读者每问一次,都把全馆索引卡逐张比较;FlashAttention 仍逐张比较,只把卡片分批搬到更快的工作台; MLA 给每本书换成缩微卡;DSA 先用小索引找候选;KDA 则不保留所有卡片,而是持续更新一块固定白板。 白板便宜,却不可能无损保存无限本书,因此 K3 每隔三层仍回到一次全局索引。

历史不是一条直线,而是五条泳道

01

把过去段落接回来

Transformer-XL · MQA

前者解决固定段边界,后者开始压缩解码 KV 头。

留下:计算仍全局;缓存仍随历史增长。
02

改写连接图

Longformer · Reformer · Linformer · Performer · Linear Transformer

局部、哈希、低秩、核近似与递推状态同时探索。

留下:质量、动态长度、硬件利用率与精确检索难同时满足。
03

位置与硬件重新入场

RoPE · ALiBi · FlashAttention · GQA · PI · YaRN · Ring

位置外推、HBM IO、KV 共享和多设备序列并行分别优化。

留下:大多数方法只改一张账单。
04

固定状态学会写与忘

RetNet · Mamba · GLA · DeltaNet · Gated DeltaNet · Kimi Linear

递推状态从简单累加变成输入相关选择、擦除与通道遗忘。

留下:固定状态容量仍有限,混合全局层成为关键。
05

工业路线汇流

MLA · DSA · CSA/HCA · KDA + NoPE MLA

缓存宽度、序列维、固定状态、位置与服务系统一起设计。

留下:模型报告公开结构,但生产 kernel、数据密度和真实负载仍不完整。

01 THE BASELINE BILL

标准注意力贵在哪里:训练、Prefill、Decode 要分开算

对单个 attention head,长度为 L、head dimension 为 d: Query 与 Key 做矩阵乘得到 L × L 分数,再经 softmax 加权 Value。

Attention(Q, K, V) = softmax(QKᵀ / √d) · V因果掩码只把未来位置设为不可见,并不取消过去位置之间的二次配对。三角形仍约含 L²/2 个有效位置。
TRAINING

整段并行,但要保存反向信息

GPU 可以一次处理许多 Token,代价是 attention 中间量、激活、梯度和参数状态共同占内存。

主要问题:算力 + 激活 IO
PREFILL

先把长 Prompt 全部读一遍

Prompt 内所有 Query 可以并行,但需要建立每层缓存;输入极长时二次 attention 主导首 Token 延迟。

主要问题:O(L²) + 生成 KV
DECODE

每次只生成一个新 Token

旧 K/V 不重算,新 Query 逐层读取历史缓存;单步算量约随 L 线性,但常被显存带宽和并发限制。

主要问题:KV 带宽 + 容量

KV Cache 的最小公式

KV bytes ≈ batch × L × layers × 2(K,V) × KV heads × head dim × bytes/element这只是张量主体,不含分页碎片、量化 scale、框架元数据和临时 workspace。MHA 的 KV heads 等于 Query heads; GQA/MQA 改的正是这个因子。

这也解释了为什么“模型权重能装下”不代表“长对话能跑起来”:权重通常只装一份,KV Cache 却按请求、按 Token 增长。 对 Agent 来说,工具输出、代码文件和思考轨迹还会不断把 L 推高。

一个常见的单位错误

论文说“KV Cache 减少 93.3%”时,必须先找比较对象。DeepSeek‑V2 的数字是整模型相对 DeepSeek 67B; 不能把它改写成“MLA 对任何 MHA 固定节省 93.3%”。头数、层数、latent dimension 和精度都会改变比例。

02 THE FIRST WAVE

2020 年的百花齐放:删连接、找近邻、投影序列、近似核

Transformer 的二次矩阵非常显眼,于是早期工作主要问:“能不能少算一些 pair?” 这些路线建立了今天的词汇,但没有一条单独成为所有 LLM 的终局。

路线怎样减少工作复杂度直觉真正代价
Transformer‑XL

缓存上一个 segment 的隐藏态,让当前段跨边界读取。

段内仍二次旧状态 stop-gradient;不是现代服务 KV 的完整替代。
Longformer

每个 Token 只看局部滑窗,少量指定 Token 看全局。

O(Lw)全局 Token 怎样选取与任务强相关。
Reformer

用 LSH 把相似 Query/Key 分到相同 bucket,再做局部配对。

近似 O(L log L)哈希与排序复杂,近邻错分会损失信息。
Linformer

把 K/V 的序列维从 L 投影到固定低秩 k。

O(Lkd)投影依赖长度假设,因果动态服务不自然。
Performer

随机特征近似 softmax kernel,重排矩阵乘顺序。

O(Lrd)随机特征数、方差和精度需要折中。
Linear Transformer

核化后维护 Σφ(k)vᵀ 的固定状态,解码变成递推。

训练/Prefill O(L)历史被压缩,精确内容寻址能力下降。

为什么近似算法没有立刻取代 full attention

  1. 渐近复杂度不等于墙钟时间。哈希、稀疏 gather、随机特征可能难以喂满 GPU;规则二次 matmul 反而非常成熟。
  2. 近似误差击中的是模型核心。少看一次关键 Token,可能让多步推理整条链断掉。
  3. 训练并行与解码递推的最佳形态不同。真正可用的方法需要两种等价算法和专用 kernel。
  4. 长程检索不是唯一任务。局部语言建模、短任务和长 Agent 轨迹对注意力模式的偏好不同。
后来真正留下来的不是某一个 2020 模型,而是四个思想

局部窗口进入 Griffin、Jamba 和 DeepSeek‑V4;低秩进入 MLA;核化递推发展为 DeltaNet/KDA; 稀疏候选选择发展为 DSA/CSA。论文会被新系统重新组合,而不是简单被“淘汰”。

03 FLASH ATTENTION

FlashAttention 的革命:别把一张巨表反复搬出显存

朴素实现先写出 S = QKᵀ,再写 softmax 结果 P,最后读回 P 与 V 相乘。 大量时间花在 HBM 与片上 SRAM 之间搬运二次大小的中间矩阵,而不是纯算术。

它确实改变

HBM IO 与工作内存

论文给出更少 HBM 访问,并把额外工作内存从二次降到随序列线性增长;GPU 因此更接近高效矩阵乘。

它没有改变

精确 attention 的配对数量

仍要计算全部合法 Query—Key 配对。反向为省 HBM 重算 block,论文甚至明确写“increased FLOPs”。

原论文在特定 GPT‑2 attention kernel 上报告最高约 7.6×;端到端 GPT‑2 训练约 3×,Long Range Arena 约 2.4×。 这些数字说明 IO 优化很重要,但不能把某个 kernel 数字当成所有模型、所有长度和所有硬件的固定加速。

FlashAttention‑2 与 Ring Attention 接着解决什么

FlashAttention‑2 减少非矩阵乘操作,改进 thread block 与 warp 的工作切分,让算子更接近 GPU 峰值。 Ring Attention 则把序列切到多台设备:每台保留自己的 Query block,KV block 沿设备环流动,通信与 block attention 重叠。 Ring 分摊单设备内存,却没有让全局总配对消失。因此它与 Flash、稀疏 attention、Context Parallelism 是正交可组合关系。

04 KV CACHE COMPRESSION

MQA → GQA → MLA:少存“几份”,再少存“多宽”

这条路线首先服务自回归 Decode。它不一定减少 Prompt 内两两配对,却直接改变每个请求能在 GPU 上活多久、同一时间能跑多少请求。

MHA
K/VK/VK/VK/VK/VK/VK/VK/V

每个 Query 头一份 KV

表达最自由,缓存也最宽。

MQA
K/V

所有 Query 共享一份

缓存最薄,质量可能下降。

GQA
K/VK/VK/VK/V

一组 Query 共享一份

MHA 与 MQA 的工程折中。

MLA
ctKVLOW-RANK LATENT

每个 Token 存联合潜变量

不再按固定 KV 头做简单共享。

MLA 的三步推导

01 / COMPRESS
cₜKV = WDKVhₜ

先把当前隐藏态压到低维联合 latent。服务时真正逐 Token 缓存的是它。

02 / PROJECT
kₜC = WUKcₜKV
vₜC = WUVcₜKV

训练时可展开多头 K/V;解码时利用矩阵结合律重新安排投影。

03 / ABSORB
(WUK)ᵀWQ · hquery
WOWUV · chistory

上投影分别吸收到 Query 与输出投影,不必为历史显式还原完整多头 K/V。

为什么还要 decoupled RoPE

如果对内容 Key 直接施加随位置变化的 RoPE,位置旋转矩阵会夹在两个可学习矩阵之间,权重吸收无法提前完成; 为当前 Query 计算时甚至要重新恢复历史 Key。DeepSeek‑V2 因此把位置放到额外的 Query/共享 Key 分支, 内容 latent 路保持可吸收。

Query = [qC ; RoPE(qR)]  Key = [kC ; RoPE(kR)]DeepSeek‑V2 每层每 Token 缓存 (dc + dhR) 个元素; 报告配置为 512 + 64,而标准 MHA 为 2 × heads × head dim。
DEEPSEEK SPOTLIGHT / V2
236B / 21B active模型规模
128K上下文
−93.3%KV Cache vs DeepSeek 67B
5.76×最大生成吞吐 vs DeepSeek 67B

05 POSITION ≠ MEMORY

知道“多远”不等于记得“那里有什么”

位置编码解决的是顺序与距离;attention/状态解决的是内容怎样传递。把 RoPE base 调大,可能让数值在更远位置不崩, 却不会自动降低计算、减少缓存,也不会凭空制造训练中从未见过的长程任务。

绝对位置

位置向量加到 Token 表示;简单,但跨训练长度行为没有保证。

相对位置

Transformer‑XL 让跨 segment 的注意力分数依赖相对距离,缓存旧状态更自然。

RoPE / ALiBi

RoPE 把位置变成 Q/K 的旋转;ALiBi 在 logit 中加入随距离下降的线性偏置。

PI / YaRN

把新位置插值回旧范围,并对 RoPE 不同频段和 attention 温度做更细缩放。

NoPE + 位置感知递推

Kimi Linear/K3 的全局 MLA 不显式编码位置,KDA 的 gate/decay 负责近因与顺序。

K3 为什么敢在 MLA 里用 NoPE

如果每层都无位置,全局 attention 可能难以区分同内容出现在何处。K3 并不是删除整个模型的位置: 三个 KDA 层先用有方向、有衰减的递推混合上下文,产生已经包含顺序的隐藏态;第四层 MLA 再做无显式位置的全局内容匹配。 这是沿深度分工,不是宣称“位置不重要”。

“最大窗口”有三种完全不同的证据

配置声明支持 1M,只证明接口边界;Needle‑in‑a‑Haystack 证明某类单点检索; 真实长 Agent、跨文档综合与长视频推理才更接近“会使用 1M”。网站会把这三种证据分开。

06 FINITE-STATE MEMORY

线性注意力真正的交易:不再存历史地址,换成一台会写会忘的记忆机

先把 softmax attention 写成 kernel,再交换矩阵乘法顺序,历史可以累计成固定矩阵。 这让解码从“读 L 个历史条目”变成“读一个固定状态”,也同时失去任意历史 Token 的无损地址。

Sₜ = Sₜ₋₁ + φ(kₜ)vₜᵀ
oₜ = Sₜᵀφ(qₜ) / normalization这是核化线性注意力的教学骨架。训练可以通过 prefix scan/chunk 并行;自回归解码只更新固定大小 S。

从 RetNet、Mamba 到 DeltaNet:不是一条互相替代的直线

RetNet 强调同一 retention 的并行、递推、chunkwise 三种形态;Mamba 让状态空间参数随输入变化, 擅长选择性保留;Mamba‑2 用 Structured State Space Duality 把 SSM 和半可分矩阵联系起来。 GLA/DeltaNet 则保留更明显的 attention/fast‑weight 语言,引入 gate 与纠错写入。 KDA 站在 Gated DeltaNet 上继续细化记忆控制。

固定状态为什么仍需全局层

状态大小与序列长度无关,意味着一百万 Token 和一千 Token 要争用同一容量。 Gate 能决定忘什么,Delta Rule 能更准确地更新,却不能让固定矩阵突然拥有无限地址。 Kimi Linear 的原文消融因此非常关键:3:1 KDA/MLA 的验证 PPL 5.65, 优于测试的纯 MLA 5.77、1:1 的 5.66、7:1 的 5.70 与 15:1 的 5.82。 这不是“线性层越多越好”,而是效率和全局恢复能力之间存在最佳比例。

吞吐数字也要拆开

Kimi Linear 报告在 1M 上下文给出单请求约 2.3× 解码加速;缓存节省后扩大 batch, 理论吞吐最高约 6.3×。摘要里的“up to 6×”更接近后者,不能写成单请求永远快六倍。

07 INTERACTIVE LAB

亲手切换:连接图和缓存曲线怎样分离

下图故意把策略放在同一界面:Flash 与 MHA 的连接完全一致;GQA/MLA 也仍看全部历史; DSA 才减少主 attention 的历史连接;KDA 则不再保留逐 Token 地址。

INTERACTIVE / ATTENTION STRATEGY LAB

“支持长上下文”到底改了哪一笔账?

上半区看信息连接,下半区看缓存。切换方法时,注意“连接变少”和“缓存变窄”不是一回事。

01 / INFORMATION ACCESSFULL MHA · 因果全连接
QUERY
FIXED STATESt历史被压进固定矩阵,不再保留逐 Token 地址
HISTORICAL KEY / VALUE
主算子直接读取
压缩/全局补充路径
局部窗口
全连接 · 全缓存

Full MHA

每个 Query 精确比较全部历史 Token;每层为每个历史 Token 保存所有 KV 头。

主要解决
表达力基线
仍然留下
二次计算 + 最宽 KV
怎样读这张图

横轴是可被读取的历史,纵轴是当前 Query。图只画 20 个位置,展示的是连接模式,不代表论文真实头数或窗口大小。

02 / CACHE BUDGET

把上下文拖到一百万 Token

统一教学模型:64 层、64 个 Query 头、head dim 128、BF16、GQA 8 个 KV 头、MLA latent 576。 数字用于比较增长规律,不是任何具体模型的线上显存报告。

CONTEXT LENGTH4K4,096 tokens
4K32K128K1M
当前策略估算缓存8.00 GB逐 Token、逐层、全头 K/V
每 Query 直接读取4,096全部历史位置
随长度增长线性 KV注意力计算仍是二次
Full MHA
Flash
GQA
MLA
DSA
KDA
K3 Hybrid
V4 Hybrid
ESTIMATE, NOT BENCHMARK

KDA 行只计算固定递推状态;K3 行按 3:1 层比叠加 KDA 状态与 MLA latent; V4 行用 1:1 CSA/HCA、4×/128×压缩和 128 局部窗口做结构估算,未计 Indexer、未压缩尾部、分页和框架开销。

08 TWO 1M ANSWERS

Kimi K3 与 DeepSeek‑V4:都做混合,但压缩发生在不同维度

到 2026 年,前沿路线不再争论“全 attention 还是线性模型”。 两边都承认:廉价主干需要更强的全局锚点,局部细节、位置、缓存和 kernel 必须共同设计。

KIMI K3沿深度混合状态与全局
KDAKDAKDANoPE MLAKDAKDAKDANoPE MLA
  1. 69 KDA每层用固定矩阵状态持续读写历史。
  2. 24 Gated MLA每四层恢复一次精确全局内容寻址,并以 MLA 收尾。
  3. NoPE MLA显式位置由 KDA 承担,全局层避免 RoPE 外推。
  4. 系统FlashKDA、KCP、混合 prefix cache、外置 KV Pool。
DEEPSEEK‑V4沿序列压缩,再稀疏或全读
CSA4 Token → 1 compressed KV→ Top‑k 512 / 1024
HCA128 Token → 1 compressed KV→ 读取全部压缩条目
两者都附加 128 Token 未压缩滑窗 + Partial RoPE
  1. V4‑Flash43 层,284B total / 13B active。
  2. V4‑Pro61 层,1.6T total / 49B active。
  3. 1M / Pro相对 V3.2:27% 单 Token FLOPs、10% KV Cache。
  4. 1M / Flash相对 V3.2:10% 单 Token FLOPs、7% KV Cache。

DeepSeek 路线的三步演化

V2 / MLA压缓存宽度

每个历史 Token 留一个联合 latent,但历史条目数仍为 L。

V3.2 / DSA压主连接数

Lightning Indexer 从 latent 历史中选 2048 个 KV;窗口仍为 128K。

V4 / CSA+HCA先压序列,再选择

4:1/128:1 压缩历史条目,配合稀疏、稠密与局部窗口到 1M。

DSA 不是“免费 Top‑k”

要知道哪些历史值得读,仍需一个 Indexer。DeepSeek‑V3.2 先冻结主模型, 用 2.1B Token 让 Lightning Indexer 对齐 dense attention 分布;再选每个 Query 的 2048 个 KV, 用 943.7B Token 让模型适应稀疏模式。选择器自身也有计算和训练成本。

跨模型数字不能直接横比

Kimi Linear 的缓存/吞吐是对 full MLA 的公平实验;K3 报告的是最终大模型结构; DeepSeek‑V4 的 27%/10% 以 V3.2 为基线。它们的参数、层数、精度和 kernel 都不同。 最可靠的比较是“各自压缩了哪一维、留下哪一张账单”,不是把所有百分比塞进同一排行榜。

09 ALGORITHM–SYSTEM CO-DESIGN

算法写成 O(L) 以后,真正困难才从公式里走出来

递推意味着前一块状态影响后一块;跨设备意味着状态或 KV 必须移动;服务意味着同一前缀可能被许多请求复用。 百万上下文的成本常由“传什么、何时传、能否命中”决定。

KERNEL

块内并行、块间递推

FlashKDA 用 CUTLASS 重排 token-parallel 计算和 head-parallel recurrence;不同训练、prefill、decode regime 需要不同 kernel。

CONTEXT PARALLEL

传 KV 还是传状态

Softmax CP/Ring 传随序列增长的 KV block;线性状态固定,但 KDA 的乘性转移不能只把各分片状态相加。

PREFIX CACHE

两种缓存同池管理

K3 同时有固定 KDA state 和逐 Token MLA KV,需要统一页面、快照边界、哈希粒度与一致性。

RL TRAJECTORY

暂停、恢复与外置缓存

百万 Token Agent rollout 可能跨迭代未完成;外置 KV Pool 和 partial rollout 避免昂贵重算与尾延迟。

FLEET

按缓存位置和预算调度

命中 400K 共享前缀与重新 prefill 的成本差几个数量级;请求数不再能代表真实负载。

COMPACTION

1M 也不是无限

工具噪声、重复状态和旧计划会降低有效信息密度;更大窗口仍需要上下文压缩和阶段性总结。

KDA Context Parallelism 为什么不能简单 All‑Reduce

Sout = Msegment · Sin + Ssegment, zero普通加法线性 attention 的各段状态可以求和;KDA 的 Delta Rule 对进入状态施加 Token 相关转移 M。 KCP 因而要为每段计算“累计转移”和“从零生成的局部状态”,再用 prefix scan 合成。

这也是 K3 技术报告最值得学习的地方:架构论文没有停在复杂度符号, 而是继续解释 Tensor Core 可表示范围、CUTLASS kernel、跨设备 scan、prefix cache 粒度、 外置 KV、沙箱恢复和 fleet admission control。真正的 1M 是一整套系统属性。

10 DOES IT REALLY USE 1M?

四层证据:从不崩,到找得到,再到推得动、跑得久

L0

可接受

API 与 kernel 能处理目标长度,数值不 NaN、不 OOM。

必要,但几乎不证明能力。
L1

可检索

在不同深度放置 Needle,模型能返回目标信息。

检测位置/检索退化,容易被模板化。
L2

可综合

答案需要跨多个远距离片段比较、归纳、排序或验证。

LongBench、多 Needle、长文档 QA。
L3

可行动

Agent 在长轨迹中维护目标、工具状态、错误恢复与证据。

最接近真实价值,也最难公平评测。

评测时至少记录这些变量

  • 实际输入长度分布。不要用“最大窗口 1M”代替平均/中位 Prompt。
  • 信息密度与目标位置。100K 高密度代码与 100K 重复文本不是同一难度。
  • 是否允许 RAG、搜索、工具和 context compaction。这些是系统能力,不应暗中混入纯模型比较。
  • Prefill/Decode 分开计时。TTFT、TPOT、吞吐、显存和成本回答不同问题。
  • 缓存命中与并发。共享前缀场景可能完全改变生产成本。
  • 质量基线。不能只报变快多少,还要检查短上下文、长检索和推理是否回退。
最终判断

一个模型“会用长上下文”,不是因为位置编码没越界,也不是因为能找一根 Needle。 它必须在可接受成本下保留远处信息、组合多个证据,并在很长的行动序列中持续维持目标。

PRIMARY PAPER CHAIN

26 篇论文,按问题顺序读

推荐先读 FlashAttention、DeepSeek‑V2、Kimi Linear、DeepSeek‑V4 与 K3 五篇主干; 遇到概念缺口再沿左侧年份回补。以下链接全部指向 arXiv 一手入口。

Transformer-XL

Segment recurrence 与相对位置;理解“有效上下文”如何跨段。

Multi-Query Attention

让多个 Query 头共享一组 K/V,第一次直接面向解码带宽。

Longformer

滑窗局部连接与少量全局 Token。

Reformer

LSH 近似检索与可逆残差的代表。

Linformer

在序列维做低秩投影。

Linear Transformer

把核化注意力改写成固定状态递推。

Performer

FAVOR+ 随机特征近似 softmax。

RoFormer / RoPE

用旋转让点积自然包含相对位置信息。

ALiBi

在线性距离偏置中训练短、测试长。

FlashAttention

精确注意力的 IO-aware 分块与 online softmax。

GQA

MHA 与 MQA 之间的分组 KV 折中。

FlashAttention-2

减少非矩阵乘开销并改进并行切分。

Position Interpolation

把训练外位置压回模型熟悉的范围。

YaRN

频段缩放与 attention temperature 的 RoPE 扩展配方。

Ring Attention

设备环上传递 KV block,分摊超长序列。

RetNet

并行、递推、chunkwise 三种等价计算形态。

Mamba

输入相关选择式状态空间模型。

Mamba-2 / SSD

用状态空间对偶连接 SSM 与结构化注意力。

Gated Linear Attention

数据相关 gate 与硬件高效 chunk 算法。

DeepSeek-V2 / MLA

联合压缩 K/V、权重吸收与 decoupled RoPE。

DeltaNet

把 Delta Rule 沿序列并行化。

Gated DeltaNet

门控遗忘与纠错写入的直接结合。

DeepSeek-V3.2 / DSA

Lightning Indexer + Top-k=2048 的稀疏 MLA。

Kimi Linear

KDA、3:1 混合、NoPE 和 1M 解码实验。

DeepSeek-V4

CSA/HCA 把序列压缩与稀疏选择合并。

Kimi K3

69 KDA + 24 NoPE Gated MLA 与完整 1M 系统。