杨松琳
我觉得国内算法创新肯定是更强的。线性注意力的模块,他们最后选到的是一个叫作 KDA 的模块,也就是 Kimi Delta Attention。这个名字感觉挺有梗的,他们应该是想对标 DeepSeek Sparse Attention,所以特意取了一个以 Kimi 开头的名字,和 DeepSeek 形成对仗。
我觉得每一次大家关心线性注意力,肯定都是因为大家碰到了一些 context wall。我还是挺喜欢看最早的那些 paper 的,我觉得那些 paper 写得都挺好的,我管这个叫“考古”。
先看看能不能把全局注意力干掉吧。第一点就是,它确实是阻止 context window 继续 scale up 的一个主要瓶颈。我觉得最好的结合方式,就是把混合注意力里面的全局注意力换成 sparse attention。理论上,只要 sparse attention 选得准,它完全可以取代 full attention 这一层。
张小珺
Hello,杨松琳,先给听众朋友们打个招呼,并且做一个简单的自我介绍。
杨松琳
Hello,大家好,我叫杨松琳。我现在是 MIT CCL 的在读 PhD,主要研究方向是 large language model 的一些架构,尤其是比较高效的注意力机制。更具体来说,我主要研究一类叫作线性注意力的模型。
张小珺
能不能给大家讲一讲,你整个研究的主线是怎么递进的?你是怎么走向 linear attention 研究的?
杨松琳
1. Linear Attention Evolves
像 linear attention,最开始的时候,我看了很多斯坦福 Hazy Research 这个 research group 的工作,就是 Tri Dao、Albert Gu 他们在斯坦福的那个 lab。当时看了很多他们写的博客,觉得序列建模是一个非常有意思的问题,所以就决定来做一些序列建模方面的研究。
刚开始读博的时候,微软亚洲研究院有一篇工作,名称可能是 RetNet。当时我最开始就是想办法提高它的效率和 performance。之后我发现,提高效率的这套硬件优化算法,可以扩展到很多其他类似的架构里面。
同时,后面的一些工作主要就是想办法在硬件高效训练的同时,进一步提高这类注意力架构的 performance。比如从门控机制,到 Delta Rule,再到后来把这两个东西 combine 在一起,让它形成一个统一的 rule,变成一个 RNN 的更新规则,同时又可以用硬件高效的算法来训练。
张小珺
我看上一次我们节目发了以后,很多人说你是“Linear Attention 之母”,这是为什么呀?
杨松琳
可能是在这个领域做了很多工作吧。尤其是还有一个开源库叫 Flash Linear Attention,这个库感觉很多这个领域的人都会用,包括业界也有很多人用这个库来进行一些线性注意力的探索。
我那几篇工作应该还是比较有影响力的,所以大家可能会这么叫我。
张小珺
能不能更通俗地理解一下线性注意力的理念?
杨松琳
更通俗地理解,它中文叫线性注意力,主要意思就是线性复杂度。它对应的是平方复杂度,也就是说,我们平常的 softmax attention 是平方复杂度。
我们都知道,softmax attention 有 3 个矩阵:Q、K、V,也就是 query、key、value。一般来说,Q 和 K 先做矩阵相乘,得到一个 L by L 的矩阵,L 是序列长度。然后对这个 L by L 的矩阵做 masking,因为它基本上都是自回归语言建模,所以要把未来的信息 mask 掉。
这样我们得到一个下三角的 L by L 矩阵,再加一个 softmax,就得到注意力分数矩阵。最后再用这个注意力分数矩阵和 V 矩阵相乘,得到 output。这就是 softmax attention 在自回归建模里面一个比较粗略的介绍。
因为它会有一个 L by L 的矩阵,所以它的复杂度是平方的。线性注意力一般就是把 softmax operator 去掉。这样的话,我们去掉了这个非线性的 softmax attention,通过一些等式变换,可以把它写成一个类似 RNN 推理的形式。
这样每一个 step 的 cost 就是 O(1),处理长度为 L 的序列时,整体复杂度就是 O(L),所以它和序列长度之间是线性关系,大家就把它叫作线性注意力。
张小珺
如果把现在大语言模型的算法做一个框,让大家有一个背景的话,Linear Attention 应该放在哪个位置?
杨松琳
我觉得它是在 Transformer 这个基础架构里面进行一些魔改。大语言模型的技术栈,可能可以分成 pre-training、post-training 之类的。架构研究肯定是在 pre-training 里面的,而 pre-training 还有很多其他类别的研究,比如优化器、基础架构、pre-training data 等等。
线性注意力应该就算在基础架构研究里面。现在基础架构整体的框架基本上还是 Transformer,它会有一个注意力机制和一个前馈网络,也就是 feed-forward network。这两个模块反复叠加很多次,就得到最经典的 Transformer 架构。
大家一般会在这个框架下面进行一些修改。比如最近几年,大家会把传统的 MLP,或者说 feed-forward network,换成 mixture of experts,也就是 MoE 模块。线性注意力就是把传统的 softmax attention 换成一些线性复杂度的 attention。
当然,现在最近更火的是一类叫 hybrid 的架构:有一些层还是 softmax attention,另外大部分层则换成线性注意力。
张小珺
我们来聊聊你最近参与的一个新工作,Kimi Linear。你是怎么参与到 Kimi Linear 这项工作的?这项工作应该是 10 月底刚发布的。
杨松琳
2. Kimi Rebuilds Attention
这项工作他们应该是年初就想开始做了。当时 Flash Linear Attention 这个库的另外一位主要作者叫张宇,他今年从国外的学校博士毕业,之后加入了 Kimi。Kimi 正好想做混合注意力,张宇就在负责这个项目。
因为他是 Flash Linear Attention 这个开源库的 collaborator,和我很熟,所以我会帮他们看一些线性注意力的变种,以及它们的并行算法应该怎么设计。
张小珺
当时他们团队遇到的核心问题是什么?为什么开始决定重新设计一下注意力机制?
杨松琳
我觉得年初的大背景是,DeepSeek R1 和 Kimi k1.5 刚刚发布。它们的核心是会做一些 RL,然后得到非常长的思维链,也就是 chain of thought,再用这个非常长的思维链做 test-time scaling,去解决一些比较复杂的问题。
思维链的长度往往能够达到几万个 token。Kimi 就觉得,如果每一层都是平方复杂度的注意力架构,在 decoding 的时候就太贵了。
首先,每一层都要存大量的 KV cache。另外,它每一步的计算是线性时间复杂度,所以如果 decode L 个 token,时间复杂度也是平方的。在长思维链生成的背景下,以及今年整体 agentic AI 的背景下,Kimi 觉得有必要投入资源探索混合注意力,因为它能够把 inference cost 降低很多。大概背景就是这样。
张小珺
你们魔改的核心目标是什么?
杨松琳
当时的核心目标可能主要是张宇在负责。他们的目标应该是,和之前的 full attention 相比,performance 不掉点,同时 inference 速度会快很多倍。
张小珺
如果用 full attention,它的缺陷是什么?
杨松琳
如果用 full attention,做长文本 decoding 的时候会非常昂贵。
张小珺
能不能从你的视角,给大家讲讲这篇论文,稍微画一下重点?
杨松琳
3. KDA Makes Memory More Precise
这篇文章里面,线性注意力模块最后选到的是一个叫 KDA 的模块,也就是 Kimi Delta Attention。这个名字感觉挺有梗的,他们应该是想对标 DeepSeek Sparse Attention,所以特意取了一个以 Kimi 开头的名字,形成对仗。
这个线性注意力模块基本上是基于我去年的一项工作 Gated DeltaNet,在这个基础上进行了一些改进,最后形成了 KDA。
总体来说,首先我们有一个叫 DeltaNet 的东西,这个之后可以再具体讲。Gated DeltaNet 这项工作当时受限于 efficiency,使用了一个像 Mamba-2 一样的 scalar-valued gating。它的门控值对于一个 attention head 来说,下面所有维度都共享同一个 decay rate。
这样在计算上会带来一些简化。当时的考虑是,先在 Mamba-2 的基础上加上 Delta Rule,同时保证效率,所以只用到了比较粗粒度的门控机制。这就是 Gated DeltaNet。
张宇做的 KDA,则是把这个粒度比较粗的衰减率,换成了粒度更细的衰减率。之前一个 attention head 下面不同维度要共享同一个衰减率,现在每个维度都有自己的衰减率。
这样一来,每个维度对应的 RNN hidden state,都有自己独立的更新频率。从直觉上看,它能够更好地利用 RNN 有限的 hidden state,从而提高 performance。
张小珺
你们的设计逻辑和灵感来源于什么?
杨松琳
我觉得 KDA 其实就是把我前两个工作的 idea 合并在一起。我之前还有一项工作叫 Gating the Neural Attention,它有一个粒度比较细的衰减率。
到了 Gated DeltaNet 的时候,当时之所以没有用这么细粒度的衰减率,是因为算法本身和 kernel 优化都没有达到比较好的状态,所以考虑到效率问题,被迫只能用 Mamba-2 那种粒度更粗的衰减率。
后来算法层面和 kernel 优化层面都有了很多进步。到今年年初,大家就觉得,是不是可以重新研究一下,能不能把 fine-grained decay,也就是粒度比较细的衰减率,引回到 Gated DeltaNet 里面。
张小珺
你们设计完以后,最初的效果怎么样?
杨松琳
最初的效果,我记得张宇应该是先试了一大堆混合注意力的混法。他最开始发现,混合 Gated DeltaNet 比混合其他方案要好。
后来因为 Kimi 内部有一个叫 scaling ladder 的东西,就是说你在一个规模下面表现好的话,还要到下一个规模继续 scale,有点像通关一样,有很多关卡。过了一关之后,就要到下一关继续和 full attention 比。
最开始可能发现,hybrid Gated DeltaNet 在一些地方还是不如 full attention。后来他又尝试把 decay 换成更加细粒度的 decay,在一些实验中发现提升还挺大的。
张小珺
Kimi Linear 和 DeepSeek Sparse Attention,你自己觉得它们的表现哪个更好?它们分别可能适合什么样的任务?
杨松琳
4. Attention Routes Compete
这两套方案想解决的问题其实是一样的,都是想解决长文本 decoding 下的效率问题。
Kimi 走的是混合注意力路线,千问现在主要也是在投入混合注意力这条路线。DeepSeek 则主要走稀疏注意力路线,它们的 DeepSeek Sparse Attention,包括之前发布的 Native Sparse Attention,都是稀疏路线。他们觉得稀疏是一种更好的方式,可以降低 decoding cost。
DeepSeek Sparse Attention 应该没有 full attention,所以每一层都是 DeepSeek Sparse Attention。但它每一层都要把所有 KV cache 存下来。它只能从一个 checkpoint 经过一些蒸馏,得到它的 indexer,然后选择 top-k token。
混合注意力这条路线,还是会保留一些全局注意力,同时把比较快速的层换成线性注意力。它的好处是可以省很多 KV cache。
混合架构不仅能够减少 KV cache,而且因为绝大多数层都是类似 RNN 的层,所以也能提高 decoding 效率。由于 KV cache 的 size 减少了很多,decoding 的时候就可以使用更大的 batch size。之前可能放不下,现在 KV cache 减少了很多,就可以加大 batch size。
DeepSeek Sparse Attention 没有减少 KV cache 的作用,但它可以通过 sparse activation,减少每个 token 生成的开销。
张小珺
还有一家 MiniMax,他们最新也做了一个算法选择,对吧?
杨松琳
对。MiniMax 上一版用的是 Linear Attention,应该算是混合线性注意力和平方复杂度注意力的先驱。它们年初发布的 M1,是一个非常大规模的混合注意力实践。
前几天他们发布了 M2,这个模型现在变成了 full attention。它既不是混合注意力,也不用 sparse attention,干脆退回了 full attention。
张小珺
这是为什么呀?
杨松琳
我觉得他们负责这个团队非常 open,分享了很多经验,这些经验都很宝贵。
比如我记得他们说,第一版模型监控的一些指标都表现得很好,而且 Lightning Attention 的效率更高,所以最后就选择了 Lightning Attention。
后来他们发现,如果是在 multi-hop reasoning,也就是多跳推理这类 task 上,掉点会非常大。当初之所以采用那个方案,是因为他们最开始没有检测多跳推理能力,主要看的是 MMLU 之类的能力。
就我来说,Lightning Attention 是一个比较弱的线性注意力。最近两年线性注意力这个领域发展了很多,但他们用到的 Lightning Attention 给人的感觉就像是两年前的线性注意力,技术还停留在两年前。
这很有可能是因为他们第一版的评测 pipeline 不够详尽,所以选择了一套略显老旧的方案。最近他们可能想做 agent task,尤其是 coding。多跳推理能力在这种场景下会变得非常重要,于是他们发现,Linear Attention 和 full attention 之间的 performance 差距还挺大,就暂时退回了全部使用 softmax attention 的 full attention 架构。
不过他们说还在继续探索混合注意力架构,说不定下一版 M3 又会变成混合注意力架构。
张小珺
你怎么看待大家在算法上的不同选择或者反复?
杨松琳
历史总是螺旋上升的。一套技术方案肯定要经过很多验证,才能最后定下来。
M1 可能当时没有验证充分,所以比较草率地上线了。后来发现它在多跳推理上效果不好,暂时退回来,这也很正常。
张小珺
硅谷的公司现在对于混合注意力机制的探索方向是什么样的?各家公司有什么不一样?
杨松琳
这个我不能讲。
张小珺
OpenAI 的可以讲吗?
杨松琳
OpenAI 的话,我只能讲已经发表 paper 的方案,没有 paper 的方案我不会讲。
OpenAI 比如在 GPT-3 的 technical report 里面提到过,它会用混合的全局注意力和 local sliding-window attention。这个方案在 GPT-3 的报告里面已经明确写出来了,所以可以讲。
他们最近发布的 GPT-OSS 开源模型,也是用了 sliding-window attention 这套方案,所以他们应该一直在使用这套 sliding-window attention。
张小珺
我们倒回去讲一下。你刚才说,linear attention 这两年发展也有很多,你能给大家讲一下它的发展线索吗?
杨松琳
5. Linear Attention Gets Rewritten
像 linear attention,最开始我觉得是非常不 work 的,就算在短文本下面也不 work。最早的 linear attention 是 2020 年左右提出的,我觉得中间几年它在 language modeling 上效果都没有跑得很好。
后来一个比较有代表性的工作是 RetNet。它通过加入遗忘衰减机制,发现线性注意力 scale 上去以后,在语言建模上还是可以取得比较好的效果。
这类工作使用的是一种和输入无关的 decay。比如它的遗忘率是 0.99,每过一个 token,前面的 hidden state 就乘以 0.99,相当于遗忘掉 1% 的内容,然后再把新的内容写进去。这就是输入无关的衰减,也是 RetNet 使用的一种技术。
之后,这种输入无关的遗忘逐渐被替换成输入相关的衰减。比如我之前的 Gated Linear Attention,就是加了一个 gating 机制。
Mamba 和 Mamba-2 其实也和线性注意力有很多联系,尤其是 Mamba-2,基本上可以看成线性注意力加上衰减。它的衰减和前述工作很像,但区别是,衰减由输入决定,每个 token 的衰减率可能都不一样。
比如遇到一些 token,模型觉得前面的内容没有必要忘,就可以把衰减率设为 1,这样前面的内容就不会衰减。如果遇到一些 token,模型觉得前面的信息已经没有用了,就可以让 decay 等于 0,这样前面的 state 乘上 0,就完全被忘掉了。
这种输入相关的 decay 比较灵活,能够通过数据动态选择什么时候遗忘、什么时候记住前面的 state。这是第一个比较大的改进:把衰减从输入无关变成输入相关。
第二个改进是 DeltaNet 这条路线,它把更新公式从最开始的简单向量外积,改成了 Delta Rule。最开始线性注意力用到的其实是一个 outer product rule,就是简单地把 key 和 value 做外积,加到 hidden state 上。
DeltaNet 用的是 Delta Rule。每一步先用 key 从 memory 里面取出一个值,这就是这个 key 在 memory 中原本对应的 value,我们叫它 old value。这个 key 又会有一个输入 value,我们叫它 input value。
因为它是从关联记忆网络的角度出发的,每个 key 应该只对应一个 value。但模型也不知道它应该对应前面的 value,还是输入的 value,所以引入了一个可以学习的 term,叫 beta。
Beta 可以看成一个在 0 到 1 之间的系数,用来决定多少采用前面的 old value,以及多少采用输入 value。通过这个系数做线性组合,得到最后新的 value。
然后把旧 value 和 key 的外积从 memory 里面减去,再把新 value 和 key 的外积加到关联网络里面。这就是 DeltaNet 更新公式的一个 high-level idea。
相比普通 attention,它里面多了一个减法操作。加法可以理解为往记忆网络里写入信息,减法则可以理解为从记忆网络里删除信息。这样就能更有针对性地删除内容。之前的 decay 可能是很多维度一起衰减,现在则可以只取某一个分量,进行更有目标性的删除。
以 DeltaNet 为代表的第二个改进,就是线性注意力领域最近的第二个重要进展。包括 DeltaNet、Gated DeltaNet 和一个原音听作 RWKV-7 的工作,都用到了 Delta Rule。
张小珺
为什么 linear attention 从一开始效果不好,到慢慢一步步改进,大家还是相信它是 promising 的?
杨松琳
我觉得每一次大家关心 linear attention,肯定都是因为大家碰到了一些 context wall。
最开始研究 linear attention,大概是在 2020 年左右,是因为大家遇到了第一个 context wall。那时候如果想继续提高 context,就只能找一些复杂度小于 softmax attention,也就是小于平方复杂度的东西。
当时 BERT 的训练长度其实是 512,可能在那个视角下,2048,甚至 8192 都算长文本,因为计算会非常慢。后来随着 FlashAttention 技术的诞生,这堵墙被打破了。现在看来,8192 已经是非常短的文本,在这个长度上训练没有什么压力。
但在没有 FlashAttention 的时候,计算需要先把平方复杂度的 attention 矩阵实例化到 global memory,再从 global memory 搬回更快的 memory 里面。这样 memory 读写的整体开销非常大。同时,attention 矩阵被实例化在 global memory 里,可能还会带来 out-of-memory 问题。这就是最开始大家研究线性注意力的 motivation。
随着 FlashAttention 出现,大家发现这堵墙其实已经被打破了。既然我们能用 exact 的方式直接计算 softmax attention,就没有必要再找线性注意力去逼近它,所以线性注意力的研究就没有那么受关注。
直到最近,长文本 decoding 又重新成为需求量非常大的事情。大参数模型要生成很多 token、做 decoding,这个开销会让人们重新审视这套技术。
而且这套技术在学界已经发展了很久。尤其是在 FlashAttention 之后,学界也意识到,如果线性注意力想被大家接受,硬件上的效率非常关键。
这也是为什么我最开始做了 Flash Linear Attention 这个 project,致力于把线性注意力的各种变种用 Triton 写成一个库,让它们能够在当代硬件,主要是 GPU 上快速运行。它的核心就是效率更高、价格更低。
每当 softmax attention 的效率变成瓶颈时,大家就会重新回来看线性注意力,大概就是这样一段历史。
张小珺
线性注意力现在成为共识了吗?
杨松琳
6. Hybrid Attention Finds Balance
我觉得现在的共识是,纯线性注意力是不 work 的。它在长文本下面有一些比较 fundamental 的缺陷,所以现在大家一般不会尝试纯线性的模型。
一些比较折中的方案,比如混合注意力,仍然会有很多线性注意力层,但也保留一定数量的全局注意力层。这样模型的下限是有保证的,处理长文本也有一定保证,因为它终归还有很多全局注意力层。
全线性网络从理论上可能没有办法做长文本 task,因为 RNN 的状态数目是恒定的。随着 context 长度增加,它早晚会存不下,早晚会损失很多精度。
但混合注意力里面有很多全局注意力,所以仍然可以通过这些全局注意力完成长文本 task。比如 Kimi Linear,以及之前的 Qwen3-Next,它们在长文本上的表现,比如 RULER 和其他 task,都没有掉点,所以混合注意力在长文本上还是有一定能力的。
混合注意力受到很多关注,但我也不知道它算不算共识,因为不同地方还在尝试不同方案。比如 DeepSeek 就在尝试 sparse attention。
张小珺
在 Kimi Linear 的论文里,你们提出每 3 层 KDA,也就是 Kimi Delta Attention,插入 1 层全注意力机制。这个比例是怎么确定的?这个比例重要吗?我觉得 3 比 1 现在也快变成共识了吧?
杨松琳
MiniMax 之前是 7 比 1。7 比 1 的话,可能 softmax attention 层数不够,长文本的保证没有那么好。
我记得字节也发过一篇 paper,研究 hybrid 架构需要多少比例的 softmax attention。他们做了很多从头开始的 pre-training 实验,改变不同的线性注意力模型,也改变混合比例。结论大概是 3 比 1 的比例最好,而且 Gated DeltaNet 这个模块比其他 candidate 更好。
后来 Qwen3-Next 也是用 3 比 1,再换成 Gated DeltaNet 这个方案。不同厂商探索出来以后,似乎都觉得这个比例更好。
MiniMax 可能最开始没有验证充分,评测存在一些不足,所以用了更 aggressive 的 7 比 1。现在基本上都回到 3 比 1 了。我觉得 3 比 1 应该是混合线性注意力里面的一个共识。
张小珺
是不是你们在算法设计时,始终要平衡表达能力和计算效率?这两者是它的核心,比如北极星指标。
杨松琳
确实还是有 trade-off。全局注意力如果太少,比如 reasoning task 和长文本 task,肯定会受到比较大的影响。短 context 的 task 可能没有什么影响,比如 MMLU,但长文本和推理 task 应该会明显受到影响。
但也不是 attention 层越多越好。大家训练完之后会发现,绝大多数 attention 层可能都没有用,只有一些关键层的 attention 是有用的,并不是每一层 attention 都有用。网络本身存在冗余,这就给我们带来机会,可以把一些层换成线性层。
所以混合架构不一定代表它比全局注意力差,很有可能它是一个整体更好的替代方案。
MiniMax 之前也发文承认了一点,我觉得这非常好:hybrid linear attention,或者 hybrid sliding-window attention,在长文本的 multi-hop reasoning,也就是多跳推理上会有缺陷。
我觉得这可能是现在 hybrid 唯一的问题。就我所知,在其他 task 上,它基本不会比全部使用 softmax attention 差,只会在多跳推理上出现问题。
这也很好理解。多跳推理比较依赖 token 和 token 之间的关系,所以比较依赖 softmax attention 的层数。非常依赖全局注意力层数的 task 可能并不多,主要就是多跳推理,以及长文本 reasoning。
如果我们能开发一些硬件高效、表达能力更好的 RNN,这个 gap 有可能被直接缩小,甚至反超。比如 Kimi 最近发现,把粒度粗的 decay 换成粒度细的 decay 之后,在 multi-hop reasoning、coding 和 math 这些 task 上,提升还是比较可观的。
也就是说,这些 task hybrid 可以做得更好。现在我觉得混合线性注意力只是一个开始,整体上很有可能做出更好的混合注意力机制,进一步调整线性注意力模块。
张小珺
你在这个过程中给 Kimi 提过什么算法建议吗?
杨松琳
张宇想做 fine-grained decay,我就帮他想了一个并行算法。这可能就是我对这项工作的唯一贡献了。
基本上很多 ablation study 都是张宇在 Kimi 做的,kernel 也主要在他那里,不在我这里。
这个算法的灵感其实来自之前一篇名称原音不清、可能叫作 Comba 的并行算法工作。它设计了一个新的算法,能够把 Gated DeltaNet 求逆的操作减少一次。
我看完那个算法之后,发现可以把 Gated DeltaNet 的求逆减少一次,于是又推了一个适用于 KDA 的算法,把它告诉了张宇。张宇后来去写 kernel,实现这个算法,发现从 scalability 来说,它还是比之前的算法更好一点。
张小珺
问一个很 general 的问题,一个研究员想问你:attention 到底应该怎么设计?
杨松琳
7. Sparse And Linear Converge
我觉得现在可能就只有两条比较主流的路线,一种是 hybrid linear attention,另一种是 sparse attention。这两种都非常 promising。
另外可能还有一些比较非主流的 attention 设计。比如我看到 Meta 最近还发了一篇论文,做三次方复杂度的 attention,似乎是嫌平方复杂度还不够,还要做三次方。
有些地方也有比较有意思的平方复杂度 attention 变种。比如有人提出了 DeltaFormer,把 Delta Rule 的思想引入 softmax attention,让它的表达能力更强。我觉得这个工作也非常有意思。
改进 attention,要么是把 softmax 做得更好,要么是做更高效的 variant,比如 sparse attention 或者混合线性 attention。这两种方案也可以结合,各自有优点和缺点。
sparse attention 作为 retrieval 肯定更强一点,但缺点是不能省 KV cache。线性注意力可以省很多 KV cache。
所以我之前写过一个知乎回答:为什么不能把这两种方案结合起来?比如让 sparse attention 取代混合注意力里面的全局注意力层。这样就不需要全局注意力的平方复杂度,但仍然要存那部分 KV cache;剩下很多层的 KV cache,则可以通过线性注意力把 size 降下来。
这可能是我目前心中比较理想的高效架构,也就是在高效的同时尽量不掉点。
张小珺
所以 Linear Attention 和 Sparse Attention 未来的关系,可能是融合到一个统一框架里面,对吧?
杨松琳
对。我觉得线性注意力和 sparse attention 其实没有什么竞争关系。线性注意力的竞争对手可能更多是 sliding-window attention。
比如 GPT-3 的论文里面提到的全局注意力混合 sliding-window attention。如果用线性注意力取代 sliding-window attention,能够让它更好,那也未尝不可。
张小珺
你觉得怎么把 linear attention 和 sparse attention 做更好的结合?现在有人在探索这件事吗?
杨松琳
工业界的话,就我所知,我没有看到有人同时结合 sparse attention 和线性注意力。学界有一些工作在探索,比如有些层用 sparse attention,有些层用 linear attention。
张小珺
所以 DeepSeek 选择了 sparse attention,Kimi 选择了 linear attention,这其实可能也是阶段性的。未来大家会探索一条新的路,把两者结合起来。现在也不是非此即彼的关系。
杨松琳
对。混合注意力在 decoding 长度上去之后,问题是仍然会被全局注意力的效率卡住,后面的瓶颈主要在全局注意力的效率上。
全部使用 sparse attention 的话,瓶颈可能在 KV cache 管理上,因为它并不节省 KV cache。序列长度上去以后,可能要做很多 KV cache 压缩之类的工作。所以两者都有各自的问题。
张小珺
它们的结合,比如说可能是不同的层用不同的 attention?
杨松琳
我觉得最好的结合,就是把混合注意力里面的全局注意力换成 sparse attention。理论上,只要 sparse attention 选得准,它完全可以取代 full attention 这一层。
但现在的问题可能是选不准,这是一个很大的问题。这也是为什么 DeepSeek 最近发布的 DSA,要用蒸馏的方式,尽可能让 indexer 把 token 选得更准,这可能就是其中一个原因。
张小珺
选得准和选不准,核心瓶颈在哪儿?
杨松琳
我觉得是学习难度。sparse attention 如果从头开始训练,梯度可能不太准,模型学着学着就选不准 block。它要学会选 block 还是挺难的,会有各种稀疏梯度的问题。
通过蒸馏的方式,相当于已经有一个训练好的、全部使用 full attention 的 teacher model,来蒸馏它选择 token 的方法。这样选得就会非常好,从学习角度来说也是 make sense 的。
张小珺
你觉得 Kimi 这项工作相比年初 MiniMax M1 的工作,进步在哪里?
杨松琳
主要在于线性注意力那个模块,它还是好很多的。
就像我之前说的,Lightning Attention 给人的感觉像是两年前的工作,还停留在两年前的版本。过去两年,线性注意力有很多发展,我觉得这些发展都是 work 的。
比如 Qwen 和 Kimi 都发现,这两年的一些进步是有用的,包括 gating、Delta Rule。所以把这些最新进展融合进来,肯定会更好。Kimi 甚至在之前工作的基础上新开发了 KDA,让模型能力更强。
另外可能还有一些不同。比如 MoE,Kimi 用的应该是 fine-grained MoE,而 M1 的 MoE 还比较粗,没有用到这么 fine-grained 的 MoE。所以有很多因素需要考虑。
张小珺
如何做一个公平的比较,比较一下 linear attention 和 sliding-window attention?
杨松琳
我觉得可以有两种方式。一种是控制它们的 state size。sliding-window attention 有 KV cache,因为是滑窗,所以 KV cache 的上限是被 bound 住的。我们可以把 KV cache 的上限,也就是它的 size,当作 sliding-window attention 的 state size。
RNN 也有自己的 state size。如果这两个东西大概处于同一个 level,我觉得就是一个公平的比较。
因为 decoding 基本上是一个 memory-bound 的过程。只要 state size 差不多,decoding 效率就不会差太多。memory-bound 主要看读取多少 state,只要 state 大小差不多,decoding 效率基本上也会差不多。
张小珺
说到算法的演进,从 Transformer 到 MoE,再到现在大家探索 linear attention 或者 sparse attention,这种渐进式创新优化的最终目标可能是什么?最终可能形成的算法共识会是什么样?
杨松琳
8. Architecture Spends FLOPs Better
这些优化基本上都体现在:给定相同的 FLOPs,怎么更好地利用这些 FLOPs,取得更低的 loss。
MoE 这个技术,前两年比如 2023 年的时候,大家都在传 GPT-4 使用了 MoE,但很多地方还不太敢跟。现在 MoE 基本上已经变成显学了,每一家都会做 fine-grained MoE。
MoE 可以想象成是更高效的 FFN 替代品,可以更好地扩大 FFN 的参数量,同时保证 FLOPs 不变。这样付出相同的 FLOPs,就能在预训练里取得更低的训练 loss。
我觉得 M1 可能是近几年架构方面突破最大的方案。下一个突破点可能就在 attention,因为 Transformer 就两个主要模块,一个是 FFN,一个是 attention。现在 FFN 基本上已经被雕成 fine-grained MoE 的形状了,attention 也可以继续雕,为什么不呢?
这样在长文本下面,付出相同的 FLOPs,可能取得更低的 loss。我觉得这两套思路都是要的:减少 FLOPs,同时让模型可以使用更大的参数量。
比如总参数量可以堆高,因为 FFN 的计算量减少了。大家都知道,在大规模训练中,FFN 的计算是主导的。把它换成 fine-grained MoE,可以降低很多 cost。
attention scale 的主要不是参数量,而是 context window size。如果 attention 在长文本下的 FLOPs 能够降下来,我们做长文本生成,有很多 agent 处理很多 workflow,给它很多 context,就会受益于更大的 context window。
张小珺
如果把模型架构比作大脑的结构,你觉得 MoE 和 attention 分别代表大脑的什么组件?能这样形象化理解吗?
杨松琳
attention 应该相当于 working memory,也就是工作记忆。它处理的是你当前正在工作的内容。
FFN 有点像大脑存储信息的部分,可能是海马体,用来存储过去的信息。FFN 基本上会被看作一个键值对的关联网络,可以记下很多 knowledge,像 word knowledge 都会被记到 FFN 里面。
attention 则是你处在一个新的场景,遇到新的 scenario,读到新的 context,然后在 context window 里面动态处理这些信息,有点像人脑的 working memory。
张小珺
所以它更偏及时性一些?
杨松琳
对。
张小珺
现在数据遇到数据墙,数据瓶颈比较明显的时候,是不是算法创新变得更重要了?
杨松琳
我觉得是的。因为你要在有限的数据里面压缩更多智能。
以前如果数据一直能够 scale,谈 data efficiency 就没有特别大的用途。大家闭着眼睛加数据就行,让模型继续 scale up、继续加数据,所以不需要动算法,只需要买卡。
现在如果有数据墙和算力墙,最终还是要回到算法本身。我觉得这些东西缺一不可:数据、算法和算力,就像三驾马车,驱动整个 AI 的发展。
我记得 OpenAI 的 CTO 之前也说过,在这个节点上,算法研究的重要性可能会被重新抬高。
张小珺
你觉得现在 Transformer 架构的天花板是什么?
杨松琳
我觉得还是先把 efficiency 的问题解决掉。现在这个问题还没有解决,处理很长的 context window 仍然有局限,所以大家会做很多上下文工程、做 RAG,通过其他方式解决问题。
但如果 context 的问题解决了,RAG 这套技术可能都不需要了,直接把内容放到 context 里面做 in-context RAG 就行了。
天花板的话,先看看能不能把全局注意力干掉。这是第一点,因为它确实是阻止 context window 继续 scale up 的主要瓶颈,这个瓶颈早晚要解决。
第二点可能是抗天牛能力。现在这种纯 Transformer 架构还没有办法实现抗天花板能力。之后可能要让 AI 自己学习,甚至有人希望把 pre-training 直接变成从 RL 开始,让模型从零开始学习,不再给它喂 pre-training data。这种新的范式可能会是之后的探索方向。
张小珺
有一个研究员问你,如何让 linear attention 的 Transformer 继续 scale up?
杨松琳
9. Infrastructure Enables Scale
我觉得 scale up 应该没有特别大的问题。可能还有一点,就是配套的 infrastructure 需要继续建设。
Flash Linear Attention 现在只是提供了一些 Triton kernel,基本上可以凑合用,但效率肯定不是最优的,因为它是用 Triton 写的。如果有公司愿意投入这个领域,或许可以花一些精力优化 kernel,这对继续 scale up 有好处。
inference 这边的支持也在逐渐变多。大概半年前,我参加 MiniMax 的一个圆桌讨论,当时主持人是俊贤老师。他问我这个领域主要的瓶颈是什么,我回答是 infra 配套没有跟上,他当时还觉得挺意外,以为我会回答别的东西。
事实上就是这样。算法层面,近两年的发展已经可以大规模尝试了,比如 Qwen3-Next 和 Kimi Linear,这些模型都已经可以大规模验证。之后 deploy 的瓶颈,可能更多在配套设施上。
这两家公司发布模型以后,开源社区的支持力度也挺大。以前比如 SGLang 还不支持 hybrid model 做 inference,现在就可以借这个机会,给 Qwen3-Next、MiniMax M1 这些模型增加推理引擎支持。
我觉得这是一个正向循环:做模型的厂商做出比较 promising 的结果,把它开源;做推理引擎的人就有动力去支持这些东西。当 infra 配套更好,其他公司可能也会觉得线性注意力的生态没有那么差。
以前即使做出了模型,生态不好,deploy 成本也很高。但如果生态建立起来,就会形成正向循环。
张小珺
你觉得现在中国的算法创新相对于硅谷来说,是差不多、更强,还是落后?
杨松琳
我觉得国内算法创新肯定更强,尤其是架构方面,国内肯定更强。
这也是因为生态地位不同。国内没有那么多卡,对 efficiency 的要求更高,所以更有动力尝试高效的线性注意力变种。
硅谷有些公司卡太多,就懒得搞。反正三驾马车总得有一辆跑得快一点,他们有算力,也能凑合跑。脑子长得不怎么样也无所谓,先把算力堆上去。
但我觉得硅谷的公司会更注重优化,比如 optimization,尤其是优化器。国内公司也在逐渐使用,比如 Kimi 是最早尝试 Mew 优化器的地方之一。
给我的感觉是,美国公司对优化器的投入,明显比国内对优化器的投入更大。
张小珺
你的 linear attention 和去年 DeepSeek Sparse Attention 的效果相比,哪个更强?
杨松琳
效果对比需要有一个 apple-to-apple 的比较,这个问题非常 tricky,不太好比。
不同地方训练出来的模型可能完全不能比,因为训练架构、data recipe、优化方案都不一样,没有 apple-to-apple 的比较。
Kimi Linear 最近的 report 里,有一个和 full attention 的 apple-to-apple 比较,但没有和 sparse attention 做 apple-to-apple 比较。如果有一个地方愿意做这种比较,让大家更好地知道哪个更好,那就很有意义。
但现在没有人做这样的 apple-to-apple 比较,所以这个问题我也不知道哪个会更好。
张小珺
为什么 Kimi 不做这个比较?它比较的是 full attention,而且在开头就写了,他们是第一个验证了性能超越 full attention 的混合 Linear Attention 架构。
杨松琳
可能还是资源有限。如果只有那么多卡,可能先投入一条路线验证,验证出来以后再投入另一条路线,看看能不能把全局注意力替换掉。
感觉就是没有这么多卡,同时跑不同方案的对比。硅谷很多东西又都是闭源的,所以也不知道他们有没有做 full-to-full 的比较。
张小珺
你看 Kimi Linear 的论文,还有哪些是值得大家关注的?
杨松琳
前面说过线性注意力模块,另外可能就是全局注意力使用 RoPE 还是 NoPE 的比较。
Kimi 选择使用 NoPE。Qwen3-Next 选择的是 partial RoPE,也就是 25% 使用 RoPE,75% 使用 NoPE。
我觉得在这种混合架构里面,大家都在砍 RoPE,区别只是砍多少。Qwen3-Next 砍了 75%,Kimi 砍了 100%。
在长度外推方面,现在看起来 RoPE 在 hybrid 架构里面可能会阻碍长度外推。不过这个地方也没有共识,大家不知道到底应该使用 RoPE 还是 NoPE,有些地方还会使用 partial RoPE。
张小珺
提一个题外话,你有关注最近 DeepSeek 的新工作吗?他们发了一篇 OCR 的 paper。数据撞墙的时候,书籍、PDF 里面其实有大量数据,他们做 OCR 可以帮忙把这些 data 洗出来,用来做 pre-training。
另外,他们说可以用 OCR 做 context compression。这一点我觉得是一个有意思的脑洞,但我不确定这个方案怎么样。
千问的工作你有参与吗?
杨松琳
Qwen3-S 的话,我基本上是类似于顾问的角色。他们碰到什么问题,我可以帮忙看一下,但不参与训练模型。如果他们有一些学术上的讨论,我会和他们讨论。我和 Qwen3-Next 负责训练的几位同学都挺熟。
张小珺
MiniMax 参与了吗?
杨松琳
没有。
张小珺
如果你参与了,他们应该不会用这个方案。你会觉得这个方案是在开倒车。
杨松琳
对。
张小珺
我觉得你用词很好玩。你总是在说把这个架构“玩一下”或者“雕一下”,这是一种研究员之间的文化吗?
杨松琳
“雕”这个字好像还挺常见的,有种雕花的、自嘲的说法。
张小珺
原音听作“杨植麟”说“不要时尚雕花”,是吧?
杨松琳
现在没办法,算力不够,数据也有限,所以只能雕。
但我觉得雕架构还是挺有用的。像 M1 这个方案,雕出来之后已经成为一个共识,很多地方都会用这个方案。
在它之前,大家可能会说是在雕 MoE。现在“雕”已经变成一个常见的形容词了,我觉得它不是贬义词,而是把一个模块打磨得更好。
张小珺
如果数据的 scaling 能够非常突出,其实没有必要雕,直接怼数据就好了。当数据还很少的时候,比如机器人领域,现在没什么数据,只要加数据就能够显著提升效果,那就没有必要做模型和算法创新。
杨松琳
对,这是一点。所以 robotics 最应该做的,可能还是先把数据问题解决。数据解决以后,再回来看 efficiency 的问题也不迟。
张小珺
你做 AI research 的初心是什么?你是怎么进入 AI 这个行业的?
杨松琳
10. Archaeology Guides Research
本科的时候,我就对 machine learning、deep learning 挺有兴趣。读 master 的时候在上科大做 NLP,那时已经进入 AI 了。
2022 年到 2023 年,ChatGPT 这一波让 large language model 风靡起来。做 NLP 的人基本上都转去做 large language model 了。
现在做 AI 感觉比以前更有意思。以前大家可能还是分 task 来做,现在会更加统一,focus on 更通用的问题,不需要操心某一个特定 task。只要有一个很好的基模,不同 task 都可以使用,只是 post-training 时需要注意的地方不一样。
现在自己做东西,可能能看到更大的影响力。看到自己开发的东西被大家使用,还是挺开心的。
张小珺
你在这个过程中遇到过什么样的挫折吗?
杨松琳
我读 PhD 以来这些工作都还挺顺的,没什么特别大的挫折,而且这些工作都比较连贯。
我觉得还是因为读 PhD 之前花了半年时间调研这些东西,对这个领域的理解会深很多。深耕一个领域以后,问题其实也不是很多,因为对这个领域非常熟,碰到什么问题大概也知道怎么解决。
张小珺
读 PhD 前花半年调研,具体做的是什么工作?是入学之前的半年吗?
杨松琳
对,申请完以后有半年自由时间。当时基本上就是调研架构相关的 paper,读了很多比较老的 paper。
比如 DeltaNet 最早是 2021 年的一项工作,是 LSTM 之父提出的 paper。当时我就对这项工作有印象。后来年底做完 Gated Linear Attention,发现这个领域对 in-context recall,也就是从前面的文章里面做 retrieval 的 task 感兴趣,我一下子就联想到 2021 年那篇工作。
因为之前对整个领域掌握得比较透彻,所以知道如果大家关心这个问题,应该从什么角度切入,也知道前面工作的缺点。
比如 2021 年那篇 DeltaNet 没有硬件效率的保证。后来我就觉得,DeltaNet 是一个很好的模型,但缺点是大家还不能大规模用起来。如果能开发一个算法把它 scale up,就是非常有意义的工作。
大概就是这样一套逻辑。当时可能也是运气好,正好推导出了一个能够让它 scale up 的算法。
后来 Gated DeltaNet 也是沿着这个工作做的。当时发现 DeltaNet 在很多 task 上还是打不过 Mamba-2,所以我就想,既然打不过,那就加入它。我把 Mamba-2 的 gating 拿过来,再把 Delta Rule 加回来,就把 A 加 B 变成了 Gated DeltaNet。
我做 research 可能就是会看这个领域需要什么样的工作,哪些工作能带来更多领域影响力和业界影响力。当你很清楚要做什么时,其实不会遇到什么挫折。技术上的 challenge,我觉得都有办法解决。
更大的 challenge 是你不知道要做什么,不知道什么东西是有用的。我觉得这才是最大的 challenge。
张小珺
所以你的核心是从历史中学习了很多,对吧?
杨松琳
对。我还是挺喜欢看最早的那些 paper 的,我觉得那些 paper 写得都挺好。我把这个叫作“考古”,因为我喜欢考古代的 paper。
“古代”可能 2021 年也算。现在一年前的 paper 可以叫老 paper,5 年前的 paper 肯定就叫古代 paper 了。
张小珺
你调研的那半年,最老读到什么时候的 paper?
杨松琳
可能读到 2017 年的文章。
张小珺
读了多少?我觉得这个领域的文章你基本上都读过一遍。
杨松琳
对。我觉得不同的人有不同的 research philosophy。我觉得一定要把这个领域里值得看的文章全部看一遍。
张小珺
为什么在 AI 众多领域分支里面,你喜欢的是架构?
杨松琳
因为我比较喜欢做算法。当时觉得 large model 这个方向可以看出哪些东西值得做,想做一些比较通用、对整个 large language model 都有用的 work。
结合自己的兴趣,我本来就喜欢做算法,再加上 Hazy Research 有很多博客,所以发现这个领域很适合我。
张小珺
你数学是不是很好?
杨松琳
应该还挺好的。
张小珺
为什么 Kimi Linear 这篇论文里面有这么多公式?
杨松琳
我觉得这些数学都不是很难,都是矩阵乘法之类的东西。线性注意力有 RNN 的形式,会有 recurrence,也就是线性转移方程。并行化以后,数据确实会多一点,但也没有那么难。
线性注意力主要就是玩矩阵变换,把平方复杂度的东西变成线性的。它还要把 recurrent 形式变成 chunk 形式,这些形式彼此等价,但都涉及很多矩阵变换,所以数学公式多一点也很正常。
张小珺
你刚才提到,读博士前半年做了很多算法考古。能不能给大家讲讲,算法是怎么一步步演进到今天的?
杨松琳
那我从 Transformer 开始讲。Transformer 可能有 3 个主要模块:注意力机制、位置编码,以及 FFN。
最开始那几年,架构 research 非常多,有一些架构改进也确实被沿用到今天。比如相对位置编码、RoPE。最开始 Transformer 使用的是绝对位置编码,现在基本都改成相对位置编码了。
MoE 可能也是从 2021 年左右开始发展。中间有一段时间大家可能不太相信 MoE,后来有一个工作把 MoE 做通了,大家又回来重新做 MoE。现在 MoE 应该已经是大家都会用的东西。
attention 的变种可能更多。2020 年前后,attention 的变种非常多,主要也是两类:第一类是线性注意力,第二类是稀疏注意力。
线性注意力当时很多是在做 kernel method,用来近似 softmax attention。以今天的眼光看,我觉得这是一个非常错误的方向,不应该用 kernel method 去估计 softmax attention。
有一些好工作可能因为没有 follow-up,就被埋没在文献海里面。比如 DeltaNet 2021 年就有了,但后面几年几乎没有人认真 follow up。
从技术演化来看,有些技术可能很多年前就出现了,比如细粒度遗忘。至少在 2022 年就可能已经有相关工作,甚至最早可以考古到 2016 年。
但后来一个 2023 年的工作反而使用了粒度更粗的 decay。所以我觉得,之前的技术可能没有很好地传承下来。
我比较喜欢把以前的技术重新审视一遍,选择我觉得 make sense 的技术来做,这样 Delta Rule 这样的技术就可能重新焕发光芒。如果没有人 follow,它可能就会一直隐藏在文献海里面。
sparse attention 最早可能做的是 static sparse attention,比如 Longformer、BigBird,它们有各种各样的 sparse attention。后来逐渐收敛到 sliding-window attention。
近几年又出现了一些不一样的东西,比如动态稀疏。Kimi 的 Mobile,以及 DeepSeek 的 sparse attention,都属于动态稀疏。
总的来说,算法还在不断演进,整个发展可能需要一些技术被 rethink 几次,多多少少有一点螺旋上升的味道。
张小珺
历史中已经有很多工具,但今天需要拿哪些工具来推动算法演进,其实是一个很关键的问题。
杨松琳
对。我觉得很多历史上的算法其实很先进,只是当时的同行没有意识到它的价值,所以工作被埋没了。
也有可能是配套不够好,比如开源代码做得太差,其他人想 follow 也没法 follow。所以如果今天做工作,我可能会把代码做好,让大家更容易使用,这样技术才能流传下去。
对于别人的工作,我会找一些自己觉得 make sense 的,然后尽可能看看它的潜力有多大。
架构算法的 variant 太多了,试架构肯定需要很多算力。有些算法可能只在小规模下 work,到大规模就不 work,这非常常见。
今年国内公司又对开源重新有兴趣,可能会看到更多架构方面的开源工作。相比去年,大家可能会觉得今年架构变化更多。
张小珺
你的 Delta Rule 是什么给你带来的灵感?
杨松琳
就是 2021 年那项工作。当时他们提出了 Delta Rule,我就想了一个并行算法,和 Softmax Attention 的 FlashAttention 很类似,能够让它在硬件上高效实现。
如果没有 FlashAttention,Softmax Attention 也走不到今天。如果没有这个并行算法,DeltaNet 肯定也不能走到今天,大概就是这样一种关系。
11. Hardware Shapes The Future
我做 research 比较喜欢从实际硬件亲和力出发。看一个算法有没有潜力,我会分析它的并行潜力有多大、scalability 有多大。
我会在历史文献海里面找出一些在 machine learning 上 make sense,同时又能想办法设计并行算法的工作。这就是我的 research 思路。
总的来说,算法既要在 machine learning 上 make sense,又要有并行算法,才能在这个时代被用起来。因为在这个时代,scalability 是必要条件。
比如 Delta Rule,我觉得它本身非常 make sense,同时 scalability 也比较好,所以完全有可能在今天带来一些不一样的架构,比如 Qwen3-Next 和 Kimi Linear,已经让我们看到了一些新气象。
张小珺
我前几天做了一个论文博客,提到 Transformer 是这一代硬件的“天选架构”。
杨松琳
Transformer 肯定是天选架构。它当时就是为了让硬件跑得快而设计出来的。
FFN 不用说,都是大矩阵乘法,肯定快。attention 在它之前,大家使用 LSTM、GRU 这些不能并行的模块。LSTM 硬件加速更难做。
attention 就算平方复杂度比 RNN 高一个级别,但它可以通过矩阵乘法计算 output,所以硬件亲和力比 RNN 好很多。大家宁愿使用理论复杂度更高的 Transformer,也不使用理论复杂度更低的 LSTM,就是因为它们的硬件亲和表现完全不同。
算法整体发展,就是要找到硬件亲和,同时表达能力更好的算法。Transformer 不仅 attention 更适合硬件,也确实解决了长程依赖问题,所以才会流行起来。
今天线性注意力重新登上舞台,也离不开一系列发展,比如把它分成 chunk 的并行算法,以及更强的设计,让它从 performance 角度更加 make sense。这些才是推动它发展的原动力。
所以我还是主张做一些 principle-driven 的工作,也就是从某些 perspective 来说很有原则、mathematically grounded、在数学上 make sense 的工作。比如 Delta Rule,它从数学上是 make sense 的。
做模型肯定要结合当前硬件。有些人会说,我设计一个算法,只要足够好,硬件公司自然会帮我优化。怎么可能呢?难道你的算法是金子做的、银子做的,硬件公司会天天帮你优化吗?
你首先要让算法满足一些通用原则。硬件有一些 principle,比如 memory hierarchy;矩阵乘法通常更高效。无论看不同类型的硬件,基本都会遵从这些原则,这些是 universal principle。
设计算法不一定要专门针对 H100 优化,但至少要满足硬件比较通用的 principle。否则在当今这个以 scalability 为核心的场景下,基本没有实际价值,就成了自娱自乐。
张小珺
Kimi Linear 为硬件做了什么样的优化?
杨松琳
Kimi Linear 的算法还是比较硬件亲和的。kernel 现在应该还是张宇写的 Triton 算法,基本可以凑合用。
kernel 优化是一个非常耗时的工种,需要慢慢磨。大家先愿意用 Triton 写一个凑合的版本就行。如果验证出确实有用,后面再补 CUDA kernel 也可以。
就我所知,他们现在应该还在用 Triton kernel 训练。我不知道后面会不会找人来写 CUDA kernel。
张小珺
从硬件亲和的角度,你觉得下一代算法会怎么演进?
杨松琳
现在硬件和 Transformer 有一点协同演进的关系,硬件会变得更喜欢 Transformer 的模样。所以对于一些 alternative architecture 来说,会有一些不利因素。
现在大家会发现,架构硬件基本上都是为了优化矩阵乘,让矩阵乘越快越好。因为 Transformer 里面有大量矩阵乘,硬件就会做快速矩阵乘的东西,比如 Tensor Core、TMA。
最近 Blackwell 上也有一些专门针对矩阵乘的内存设计,都是为了优化矩阵乘。大家可能会看到 FlashAttention 越来越快,FlashAttention-4 在 Blackwell 上也会越来越快。
既然硬件这样演进,从设计算法的角度,就必须设计能够使用矩阵乘法的算法,否则硬件效率肯定跟不上。
线性注意力的好处是,里面基本上都是矩阵乘,当然也会有一些其他 overhead,这些可能需要克服。它在训练时可能还是不如 Blackwell 上的 FlashAttention-4 高效,但有些地方并不在意训练效率,只在意 inference 效率。
所以只要训练和 prefill 能以 reasonable 的速度完成,decoding 很快,这种架构就有市场。
另外,fine-grained MoE、sparse tensor 也属于降低 FLOPs、同时使用矩阵乘法的方案。它们还是要使用矩阵乘法,再想办法把 FLOPs 降下来,通过算法创新降低计算量。
一个算法如果大部分都是矩阵乘,硬件相对而言就比较容易优化,因为硬件就是朝着让矩阵乘越来越快的方向发展。
甚至在 FlashAttention-4 里面,矩阵乘太快了,导致 softmax 的非矩阵乘部分变成了瓶颈。他们就用一些 approximate 方法来计算 EXP。
这也挺有意思:矩阵乘太快了,所以现在还是要尽量利用矩阵乘快速的性质,去设计和匹配算法。
DeepSeek Sparse Attention 已经用到了这种性质。我觉得 DeepSeek 是非常注重硬件和算法协同设计的公司。
DeepSeek Sparse Attention 里面有一个 indexer,它用 FP8 来计算 attention score。因为不需要 softmax,只需要计算 logit,再做 top-k 选择 score,所以首先使用 FP8;其次还可以去掉昂贵的 exponential 操作。
这样它基本上就是一大堆矩阵乘,所以 indexer 会非常快,有可能用在它下一代架构里面。我不知道它下一代架构是什么,但这些性质都在那里,有可能成为下一代架构的 candidate。
张小珺
相对来说,DeepSeek 和 Kimi 哪个在硬件亲和上做得更好?听起来是 DeepSeek。
杨松琳
DeepSeek,absolutely。
张小珺
Kimi 没有把硬件亲和作为一个重要的优化目标,对吧?
杨松琳
不太确定。Kimi 肯定也在 scale up 硬件方面做了很多事情,只是没有 DeepSeek 那么追求。
DeepSeek 非常追求算法能不能在 FP8 上运行之类的问题。我觉得他们的 infra 在算法迭代过程中,话语权应该会比较高。
这因公司而异。有些公司的 infra 话语权更高,有些公司的算法话语权更高。算法经常会做一些让 infra 不爽的东西。
张小珺
如果年轻研究者想进入注意力机制或者架构算法这些领域,你有什么建议?他们应该从哪里开始入手?
杨松琳
现在的话,找个公司去实习。
我觉得做架构必须要算力,没有算力就没法做架构,所以还是先找个 lab 去实习。
张小珺
好了,今天的节目就是这样。拜拜