o1、R1 等推理模型的出现,给了长文本新课题。
嘉宾丨肖朝军、傅天予整理丨程曼祺
上周,DeepSeek、Kimi 都放出了新的大模型架构改进和优化成果,分别是 NSA、MoBA。二者都聚焦对大模型中 “注意力机制” 的改进。
注意力机制是当前大语言模型(LLM)的核心机制。2017 年 6 月那篇开启大语言模型革命的 Transformer 八子论文,标题就是:Attention Is All You Need(注意力就是你所需要的一切)。
而优化 Attention 的计算效率和效果,又能帮助解决 AI 学界和业界都非常关心的一个问题,就是长文本(long context)。
不管是要一次输入一整本书,让模型能帮我们提炼、理解;还是在生成现在 o1、R1 这类模型需要的长思维链;又或者是希望模型未来能有越来越长的 “记忆”,这都需要长文本能力的支持。
这期节目我们邀请了两位做过 Attention 机制改进的 AI 研究者做嘉宾。
一位是清华计算机系自然语言处理实验室的博士生肖朝军,他是 InfLLM 注意力机制改进的一作,导师是清华计算机系副教授刘知远。
另一位是清华大学 NICS-EFC 实验室的博士生傅天予,他是 MoA 注意力机制改进的共同一作,导师是清华电子工程系主任汪玉。这个实验室也做了很多与硬件层结合的优化工作。
两位有一些相互补充的视角,他们之前做的注意力机制改进也都和 NSA、MoBA 一样,属于 “稀疏注意力” 范畴。
傅天予分享了一个他的导师汪玉,对大模型优化目标的简洁描述:
神经网络就是 y=f(x)。x 是输入,y 是输出,f 是这个网络。
现在的趋势是,x 越变越长,这是多模态等带来的;y 也越变越长,这是思维链带来的。f 要做的事就是,当 x 和 y 都变得这么长时,怎么能算得快,同时又能正确地输入 x,并正确地输出想要的 y。这就是大家努力的总体目标。
f 要怎么做到这两点,改进注意力机制就是方法之一。
以下是本期播客的实录,文字有精简。
Attention 的提出就是为了长文本,只是当时的 “长” 不是现在的 “长长长”
晚点:两位可以先自我介绍一下,以及讲讲你们过去和注意力机制改进相关的研究。
肖朝军:我是来自清华大学计算机系的博士生肖朝军,一直专注于大模型高效架构层面的研究。2024 年,我们发布了 InfLLM,也是做大模型注意力机制的改进。
一年多前,开源模型最多也就处理 8K 就是 8000 token 左右的文本长度。我们就想,能不能在无需训练的情况下,在推理阶段(可以理解为大模型的使用阶段)用稀疏注意力机制处理更长的 128K 甚至 1000K 的文本。这个注意力机制的思路和现在的 DeepSeek NSA 类似。而 NSA 是进一步把稀疏注意力做到了预训练阶段,写了非常丰富的算子,做了很精细的设计,是一个很大的进步。
(注:大模型里,稀疏指仅部分连接,效率更高;对应的稠密,也就是 dense,指数据 / 计算全连接。)
傅天予:我是来自清华大学电子系的博士生傅天予,我们也一直关注神经网络模型的高效性优化。
也是在 24 年,我们发布了一篇和今天要聊的 MoBA 标题很像的论文,叫 MoAMixture of Sparse Attention(混合稀疏注意力机制),而 MoBA 是 Mixture of Block Attention(混合分块注意力机制)。我们发现,之前的一些稀疏注意力机制,虽然能使模型流畅地输出内容,但模型其实没有有效利用远距离的上下文信息,我们就希望能分析不同注意力头的各自特性,找到究竟其中哪些对模型能真正利用长上下文很关键,然后更多保留这部分注意力头。
晚点:我们可以先聊关于 Attention 的一些基础问题。2017 年提出目前大语言模型主流架构 Transformer 的那篇论文,标题就是 Attention Is All You Need。简单来说,Attention 作为大模型的核心模块,它是用来做什么的?
傅天予:要解释这个,我们要先知道一个大模型的输入和输出是什么,它的输入就是一系列 Token,也就是 “词元”,简单理解就是一个词。每个词本身有一个含义,但也有必须联系上下文才能表达的含义,比如代词 “it”,要放到上下文里才知道指什么。所以 Attention 机制的核心思想就是希望能知道输入的每一个词和之前的词的关系。
在标准 Attention 里,每新输入一个词都要和前面输入的所有词去计算相关性,它是一个关系强弱加权。这样不仅能帮大模型理解这个词本身,还能理解它的语境
肖朝军:补充一下,大家也可能需要了解,再往前,神经网络是怎么处理序列(输入模型的一系列 Token 整体上是一个序列)的。
之前的主流方法是循环神经网络(RNN)。循环是什么意思呢?就是一个词、一个词地去理解,去动态维护一个 “记忆”。
比如当 RNN 来处理 “我是肖朝军” 这句话时,会先处理 “我”,再是 “是”,再是 “肖”,每处理一步,就把之前所有输入都变成 “记忆”,也就是系统里的一堆矩阵。在 “我是肖朝军” 的例子里,RNN 处理到 “肖” 时,已经把 “我” 和 “是” 转化成了一个 “记忆”。
RNN 里的 “记忆” 的存储大小是不变的,但这会使它 “遗忘” 很久以前的词元。当只是一句话时,这个问题不严重。但如果像我们今天这样录 2 个小时的播客,我最开始说完我是谁后,之后只会说 “我”,这样到后面,模型就会忘掉 “我” 和 “肖朝军” 的关系。这是 RNN 的缺陷。
而 Transformer,它所使用的 Attention 机制,就是把过往所有词都以一个个向量的形式存储下来。这样在 2 小时的聊天里,我每次提到 “我”,它都会去和过往所有词做一次相关性计算,就能知道 “我” 和 “肖朝军” 高度相关。
这也导致,Attention 的 “记忆” 不是固定的存储大小,而是把 “记忆” 扩展为过往全部词元,这就能改进 RNN 长序列的遗忘问题。
晚点:所以当年从 RNN 到 Transformer 提出 Attention,本身就是为了解决长文本问题。
肖朝军:对,不过当时的长,也没多长,就是几百 Token。
在 Attention 之后,很快就提出了稀疏 Attention,最开始是为了 BERT(注:Google 最早的 Transformer 架构的大语言模型,但它的优化目标和同为 Transformer 架构的 OpenAI 的 GPT 系列模型略微不同,BERT 一度是比 GPT 更主流的大模型),它只能处理 512 Token。
然后稀疏 Attention 出来后,让模型能处理 4K token 了,这是 18、19 年的事,那时大家认为这已经非常长了。
而到了现在,动辄是 128k 甚至 1M(100 万)的长度,发展非常快。所以 Transformer 确实是为了长文本,只是这个长和现在的长还不太一样。
原初 Attention 两大瓶颈:“显存开销” 和 “计算复杂度”
晚点:从长文本到了长长长长长文本。后来原初 Transfomer 里标准的 Full Attention 又遇到了什么瓶颈,为什么不够用呢?
肖朝军:首先就是存储问题,其实就是刚才讲的,它的 “记忆” 大小是不固定的,序列越长,记忆就越大。比如有几百万个词,那存下来要好几百 G,现在 GPU 的显存(显存是 GPU 的 “专属内存”,最初主要存储图像信息,在大语言模型里,它用来存储模型参数和训练数据)就几十 G,存储远远不够。
第二是计算复杂度的问题,因为 Full Attention,是每处理一个 Token 时,都需要和前面所有 Token 做一遍相关性计算,如果序列长度是 N,它的计算复杂度就是 N 的平方,当长度越长,计算时间就会越来越高。
傅天予:我补充一点关于训练和推理阶段的 Attention 的区别。之前很多稀疏注意力工作都是一个稠密训练的 Attention,但在推理阶段把它变成稀疏的。这是因为我们发现 Attention 本身含有稀疏性。
这可能有几个主要原因:一是 Attention 里有 Softmax(软最大值)机制。简单理解,它是一个 “更软” 版本的取最大值的过程。一般取最大值时,会把最大的数取为 1,其他全部取 0。而 Softmax 是把最大的那个取为 0.9,第二大的可能是 0.09,第三大的是 0.009……这导致在这么多相关性数值里,我们一般叫 Attention Score 或 Attention Weights,本来就只有很少的数很大,这就为稀疏性提供了一个潜在的数学保证。
(注:如前文所说,Transfomer 里的 Attention 是每输入一个新 Token,要计算它与前面所有 Token 的相关性,所以会得到一组值。常规在一组值里取最大值时,是将最大的设为 1,其他都设为 0;而 Softmax 是对所有值进行一种函数处理,使它们都分布在 0 到 1 之间,且总和为 1,最大值会得到最高的权重。这些权重之间的数值悬殊很大,是 “稀疏” 的,一些很小的值,后续处理时可能被舍弃。)
二是从语言学的角度,比如我们今天播客可能有 2 小时,但在 “朝军” 和 “我” 之间产生的关联非常稀疏,就是这 2 小时里,前面有几万个 Token,但和 “朝军” 有强相关性的只有 “我” 这个词,关联本身就很稀疏。
最后是从人脑角度,也不是所有神经元都和所有神经元连接,它的连接也非常稀疏,并且随着年龄增大,会越来越稀疏。
所以无论从数学上,还是语言学上,还是神经科学上的启发,大家就觉得稀疏 Attention 本来就存在,并且是可以被利用起来提高效率。
晚点:总结而言,在 Full Attention 的基础上,后来有哪些改进思路?
肖朝军:我认为主流分类就是稀疏注意力和刚才提到的 RNN(循环神经网络),它又复活了,比如 Mamba 这类模型,RNN 计算很高效,但有遗忘机制。
(注:Mamaba 是由卡内基梅隆大学在 2023 年提出的基于状态空间模型的高效长序列建模架构,主要作者是 Tri Dao 和 Albert Gu 等,后文提及的 FlashAttention 的作者也是 Tri Dao。)
傅天予:不过现在大家好像不喜欢说自己是 RNN,会说是线性注意力。我觉得线性注意力里的一些工作确实还是以循环的方式在进行,但也会有少部分工作,虽然也是把很长的序列压缩到一个 “记忆” 里,但不像传统 RNN 是逐词迭代进行的。
晚点:哪种更主流呢?最近的 NSA 和 MoBA 都是稀疏注意力方向的改进。
肖朝军:在 Mamba 之前,稀疏更主流。但 Mamba 之后,线性注意力机制的改进也非常多。
傅天予:稀疏注意力整体对原本注意力的改动没那么激进,与现有很多方法能直接搭上。而线性注意力可能描绘了一个更美好的蓝图。
因为它的存储大小是固定的(注:线性注意力可理解为 RNN,前文有提及 RNN 的存储大小是固定的),计算复杂度随序列变长,不是平方增长,而是线性增长(这和它的计算方式有关)。
所以从 Scaling Laws 角度看,当输入比较短时,线性注意力的提效可能不如稀疏注意力,但输入特别长时,线性注意力的效率优势会上来。
不过目前大家更多尝试稀疏注意力,因为很多学界探索表明,纯线性注意力的效果(效率衡量的是速度和计算资源消耗,效果衡量的是模型 “聪明” 程度)欠佳,还需要混合其它注意力机制。
晚点:Attention 的提出和后来的改进都是为了处理长文本。除了改进 Attention 机制本身,还有哪些努力能帮助处理长文本?
傅天予:优化一个大模型,会有 3 个层次:算法、系统和硬件。硬件层很好理解,你用更快的 GPU,当然可以变快。
系统层稍难理解,比如 FlashAttention 就是一个系统层改进。虽然 GPU 的峰值算力和峰值显存是固定的,但代码写得好不好,决定了你能用到百分之多少。系统层的工作就是追求提高这个百分比,充分利用带宽、显存、算力。FlashAttention 让 Attention 的计算效率提升了一个台阶,显存则至少降了一个量级。
再上面是算法层,细分又有模型层和更普遍意义的算法。稀疏注意力、MoE(混合专家系统)都是对模型层的改进。而改变生成范式比如从一个、一个词往外蹦,变成两个词、两个词往外蹦,则是更普遍的算法改进。
(注:MoE 现在是一个主流的大模型架构,比如 DeepSeek-V3 就是一个 MoE 模型,它也是 DeepSeek-R1 的基座模型。V3 也有生成方式上的改进,使用了 Meta 提出的 Multi-token Prediction,一次生成两个词。)
肖朝军:算法层有很多改进,因为长文本的问题很多,不仅仅是计算复杂度和显存。那针对不同场景,就有不同的优化方向。
比如 DeepSeek 在 DeepSeek-V2 里提出的 MLA 也是一个算法改进,它解决什么问题呢?就是刚才提到的,Transformer 需要把所有词元都存下来,存储量很大,这样每次去访问它的时间会很长,要一个一个读出来。所以 DeepSeek 就想把这个维度压低、存储变小,就做了这方面的一个改进。
(注:MLA 是 Multi-head Latent Attention,多头潜在注意力。它通过一种联合压缩技术,把算注意力分数时的显存占用减少了超 90%,同时保持了模型性能。)
解决长思维链生成,是 o1/R1 的 RL(强化学习)方法继续发展的关键
晚点:接下来,我们来看 NSA 和 MoBA 的一些具体改进。整体上,两位看到的 NSA 和 MoBA 的最大亮点是什么?
傅天予:我认为最有意思的是,他们都在预训练阶段就引入了稀疏注意力,而此前多数工作是做稠密训练,在推理时才稀疏。训练与推理的不一致难免会引入误差。
所以业界和学界都很好奇:如果在预训练阶段就引入稀疏性,对模型最终效果是什么影响?
这两个成果,解答了这个大家关心的问题:就是稀疏注意力经过充分训练,性能上可以比肩稠密注意力,甚至某些情况下还能超越。
这给稀疏注意力领域打了一剂强心针,之前很多审稿人会质疑,稀疏虽然让模型变快了很多,但变笨了一点,这能否接受?而这些新成果就是告诉大家,你可以快的同时也很聪明。
肖朝军:补充一下,从推理阶段的稀疏到预训练阶段的稀疏,gap 其实挺大的。因为硬件上,GPU 本身不太适合稀疏计算,而适合稠密计算。把稀疏机制引入预训练,怎么实现加速是一个难点。
晚点:为什么是在这个时间点,DeepSeek、Kimi 等公司不约而同地要把稀疏从推理阶段引入预训练?
肖朝军:其实这和 o1/R1 密切相关,这类推理模型会用 RL(强化学习)在训练中生成很长的思维链(CoT),这是让模型变聪明的必然趋势。
所以 “输出很长” 变得更重要了,之前大家更关注 “输入很长”,比如 Kimi 产品早期的特性就是输入很长。但当前 DeepSeek 可能更关注输出很长时的加速。
NSA 论文中的效果(左表)和效率(右表)提升。肖朝军关注的输出很长时的加速,体现在右表中的第一栏,Decode,即解码、生成过程的加速;NSA 相比 Full Attention 加速了 11.6 倍。
其实我之前也想过把稀疏注意力引入训练阶段,但当时我没有现在的认知,只是想提升训练阶段的效率。
现在的新认知是,解决长 CoT 才是未来继续 RL Scaling 的关键点。DeepSeek-R1 报告里有一张图:随着 RL 的训练步数增加,整个输出会越来越长。可以预想,训练步数还会继续增加,输出长度也会继续突破。这时把稀疏注意力引入预训练阶段,尤其是 RL 的训练但这件事(把稀疏引入 RL 训练)NSA 论文里还没体现它一定是个未来趋势。
DeepSeek-R1 技术报告中展示随训练步数增长(横轴),输出长度(纵轴)持续增长。
所以我特别关注 NSA 和 MoBA 的理论加速比能不能落到实际,从论文看,他们都做得比较好。我们之前的 InfLLM 就是理论加速比高,但实际加速比不够好。
晚点:为什么之前加速比很难落下去?
肖朝军:我一直在搞算法,不是很懂底层系统,当时我也和别人讨论过,就觉得稀疏天然不适合 GPU,就做罢了。
但看到 NSA 之后,我觉得还是自己的认知有局限,就是我不懂硬件,没有在算子层做优化。而 DeepSeek 真能把这个想法推下去,这是 NSA 给我的最大冲击。
改进稀疏注意力的思路已比较成熟,但 DeepSeek 和 Kimi 真的把加速落到了真实系统
晚点:这次 NSA 也特别强调了它是 hardware-aligned(硬件协同)的,就是结合硬件层做了优化,这个可以解释一下吗?
傅天予:这需要理解 GPU 到底在怎么做计算。GPU 的一个特性就是 “single instruction, multiple data”(单指令、多数据流),即给出一条相同指令,对不同数据做同样的操作。
比如只计算一个矩阵时,GPU 比较慢,但如果对 20 个矩阵做同样操作,它就很高效。所以 GPU 是高度并行计算,并行度越高,对 GPU 越友好。这是计算方面。
在内存方面,计算机的内存是存一串连续数字。GPU 顺序访问连续数字的效率很高,但如果要访问的数据比较碎片化,GPU 一次取一大块数,却只有其中一小部分有用,效率就会很低,反之,如果取一大块数,这些数都有用,效率就很高。
理解这两点后再来看 NSA,它做了一个对 GPU 很友好的操作,就是它是 Block(块,可以简单理解为是一组数)的,这又进到了 Kimi 的 MoBA 的标题里了,MoBA 的 B 就指 Block。
所以 NSA 虽然是一个稀疏注意力,但它的粒度是到 “块” 的,要么这一块都有用,要么都没用。这就满足了刚才说的两个期待:内存上是连续访问,计算上是对同一块数据做相同计算。它对硬件层的主要优化,就是提升 Block 的计算。
肖朝军:对,打个广告。我 24 年 2 月的 InfLLM 的核心观点也是,稀疏注意力,就应该在块层级去做,才会对硬件更友好。
晚点:其实我也问过 R1,NSA 和 MoBA 的异同,它说:“MoBA 更侧重 Block 级别的调控,而 NSA 更侧重 Token 级别的精细化操作和硬件优化。” 实际上二者都是 Block 级别的吗?
肖朝军:NSA 也是在 Block level 做的,但文章里没特别强调。因为即使是 Block,真要做到非常好的硬件优化,还是需要很多操作,所以它后面更多强调了它的硬件优化。
晚点:硬件优化靠什么具体方法实现呢?就是前面提到的写算子?
肖朝军:对,就是写一些系统层的算子(注:算子是神经网络中执行具体数学运算的模块、它在模型较底层,直接与芯片硬件交互)。DeepSeek 在 NSA 上写算子时用的是 Triton,这是 OpenAI 开源的、在英伟达的 CUDA 上再抽象了一层的接口。
傅天予:我想补充一个非常有意思的事,因为 Triton 是 GPT 3 那会儿出来的(注:Triton 开源于 2021 年,GPT-3 发布于 2020 年 6 月)。一个不靠谱的坊间传闻是,GPT 曾尝试用稀疏注意力来训练,所以去做了系统适配,这就有了 Triton。
不管传闻真假,Triton 确实非常适合做块状稀疏计算。虽然 OpenAI 最后自己可能没有用 Triton,但它已经成为学界要做块状稀疏计算的很好的工具。
晚点:所以这是 OpenAI 还 open 的时候,给社区带来的一些贡献。
肖朝军:补充一下,我觉得 DeepSeek 未来可能会继续深入到 CUDA 层(CUDA 是英伟达自己提供的,可以帮开发者更好使用 GPU 的一套软件平台)去写优化。因为 Triton 是对编码友好,CUDA 可以做更深。
还想补充一点, OpenAI 有没有做稀疏注意力我不知道,但它一定在长文本上做了新的工作。最近它发了 DeepResearch,可以想象,长文本能力一定很强,只不过它自己没有强调。
晚点:具体到 MoBA 和 NSA 的注意力机制的设计,它们的异同是什么呢?
傅天予:我觉得共同点主要有三点。一是,它们都是先从更高层次选一块需要关注的上下文,这个所谓的 “一块” 就是 “Block Level”,具体选法,二者有细微差别,但总之要先选一块,把这一块内容拿进来,再去关注块内部的细节。
二是,它们选词时,都倾向关注离当前这个词最近的词,这也非常自然,因为即使是稠密注意力,天然也会表现出对临近的词更关注。这从语言学上也能理解。
三是,二者都是对于每一个输入的词(更具体的说是词的查询向量),它选的 Block 是不一样的,就是它会针对当前在 decode(解码,这里指生成过程)的词,选不同的上下文块。
肖朝军:所以整体思路其实挺相似,除了怎么选块的差别,还有对块的表示可能有细微差别。
还是我刚才提到的那个点,现在改进注意力的思想已经比较一致了,但他们能把加速比落到真实的系统里,这件事很关键。
晚点:除了你们提到的,NSA 和 MoBA 都是在块级别上做计算,它们也提到自己都是动态稀疏注意力。这里的 “动态” 是什么意思,那么相对应的静态呢?
傅天予:其实 NSA 和 MoBA 都是既有动态,也有静态。
解释这个问题,还是要回到大模型怎么处理文本。文本进入一个模型时,其实是进来了两个东西,一是每个词说了什么,二是这些词的位置,而位置就是静态的。
所以,如果一种注意力机制和位置强绑定,比如总是关注句子开头的几个词,就偏静态;如果是更多关注词的内容,就是动态。
在 MoBA 里,它会先固定选择某个 Token 所在的 Block,其实就是在选择临近的位置的 Token,它也有静态的部分在。
肖朝军:NSA 里用到的滑动窗口也是一种静态稀疏注意力。因为它已经预设了这个词要和哪些窗口里的一组词做相关,而不是动态地决定和哪些词相关。
那它的问题也可以想象,比如 “我是肖朝军” 这个例子,在很长的文本里,就需要动态地去关联 “朝军” 和 “我”,静态可能就滑不到那么前面的 “我” 了。
傅天予:一般而言,静态效率高,但效果稍差。动态效果更好,因为它同时关注位置和内容信息,但这导致在输入具体内容前,不知道具体要看哪里,这种计算对 GPU 不是很友好,就会比较慢。所以二者是一种权衡。
训练曲线揭晓悬念:稀疏注意力一定更快,但它也能更好吗?
晚点:NSA 和 MoBA 都做了一系列测试来验证自己的效果和效率提升的有效性,在这些测试与实验成果中,你们看到的亮点是什么?
傅天予:我个人更关注他们的 Training Curve(训练曲线)的下降情况。
NSA 展示了 270 亿参数大小模型上的训练损失曲线(Training Loss Curve)。
MoBA 展示的训练损失曲线。左图的常用预测损失包含所有词元,即也包含大量段前位置的词元(相当于短文本);而右图则展示了 32K 输入长度下,最后 1K 词元的预测损失,这种长文本末尾的预测损失,更能突出表现模型在上下文变长后的预测性能。
因为我们关注一个改进是否在帕累托前沿上,即同等速度下模型是否最聪明,同等聪明时模型是否最快。
稀疏注意力一定比稠密注意力更快,而训练曲线会揭示,在投入足够多的资源时,稀疏注意力能否和稠密注意力一样好?这件事我们之前不知道。这两份工作都给了一个比较积极的答案,就是稀疏和稠密的效果大概率会趋于一致,甚至稀疏会更好。
肖朝军:我个人最关注的是在预训练阶段引入洗漱注意力后,模型在长推理、数学题上的效果。就还是长思维链的表现。
NSA 在主要 Benchmark 上与 Full Attention 的对比。涉及通用知识、推理和编程;在 4 项推理 Benchmark 中,NSA 的效果都好于 Full Attention。
除了 MMLU(是涉及几十个学科的通用知识测试)和 MBPP(测试模型从自然语言合成简短 Python 的能力)两个指标,NSA 的表现都好于 Full Attention。
这张表中,NSA 则对比了 H2O、InfLLM 等过往稀疏注意力改进和 Full Attention 在测试长文本能力的 LongBench 上的表现,并展示了 MQA(多文档问答)、Code(代码)等细分任务上的得分。
MoBA 与 Full Attention 的效果对比。MoBA 与 NSA 的基准选择有重合,也有区别。比如二者都测了衡量推理能力的 BBH、GSM8K,和与编程任务有关的 MBPP,也都测了综合衡量长文本能力的 LongBench。
晚点:这部分最后想补充问一下,之前很多工作,包括两位自己的工作,都没有把稀疏注意力引入预训练阶段,除了前面提到的认知问题,是不是也和学界的算力资源比较少有关?
肖朝军:这有两方面,一是学界要去搞预训练,确实开销很大,但我觉得这是很小的一方面。更多还是我之前说的认知问题,我不太会做底层优化,而且 InfLLM 是 2023 年就开始做的,当时也不知道生成长思维链对 RL 很重要。
傅天予:学界还有一个问题是缺数据。如果我们要把稀疏引入预训练,并且想证明它好用,就需要让它变得和稠密模型一样强。但稠密模型那么强,所用的数据、和一些训练上的技巧,学界可能没有或不知道。
你当然可以用一样的方法、一样的数据去训练稀疏注意力和稠密注意力的两个模型,如果稀疏的稍微聪明一点,好像也能证明问题。但工业界其实不会太认可。并且验证成本也很高。
所以我们当时做 MoA 时,最大出发点就是不要训练,我一定不要训练。预训练可能算力不够,但微调(后训练)还是做得起的。但我们就不要微调,因为我们希望 MoA 能即插即用,任何人训练一个稠密注意力的模型后,都能直接用。
我们也不希望我们的方法改变原来模型的偏好。你一旦训练,可能会让一个本来礼貌的模型,突然变得机灵,我们不想这样。所以当时是故意拿掉了训练部分。
肖朝军:对对对,我 InfLLM 论文的标题里就写了 Training-Free,就是不要训练。
大模型训练分预训练、微调两个阶段。2023 年时,第一个阶段还是短的输入和输出,第二阶段才会用比较少量的数据把它训长。所以当时还是想在训练之后的阶段把效率打上去。而现在看,从预训练阶段就引入稀疏,一是效果会更好,二是因为长 CoT,现在也真的需要这么做。
多模态叠加长思维链,文本还会更长长长
晚点:再往下,你们认为注意力机制有哪些探索方向?刚才也讲到了一些,如长思维链生成的相关优化。还有呢?
肖朝军:还有一点是,随着长文本变得更长,稀疏注意力迟早会面临存储问题,因为它的存储复杂度其实没变,还是得存前面的全部内容。
存储改进的极致是 RNN,也可以说是线性注意力,它的存储大小是固定的,但性能可能有上限。在这两个存储的极端之间,有没有一个中和?
晚点:想请天予补充一下,存储这件事,它能如何从硬件上优化吗?
傅天予:这很难。对比计算和存储,计算发展得非常快,但片上存储,例如显存发展很慢。最近 4 年,英伟达芯片的算力翻了几十倍,存储连两倍都没到。(英伟达 2025 年发布的 B200 的算力是 2021 年 A100 的 64 倍,显存则是 1.2 倍)。
这是因为快速存储非常占芯片面积。而芯片面积再增大,良率会快速衰减,成本就会高得不可接受。
肖朝军:当然存储相对便宜,不一定用显存,也可以用计算机内存,或直接挂硬盘,但这又带来数据传输的速度问题。
其实人脑就不需要那么多存储。有没有可能再进一步向人的机制靠近?就是能动态决策,什么时候、什么东西该存,什么不该存,这可能是下一步要探索的。
晚点:长文本,目前阶段看还是以语言为主,未来多模态的注意力要怎么优化?
傅天予:我手头正在探索多模态注意力的特点。一是模态变多时,上下文会有非常大的增长。对标人类,人 1 小时能读 18K 的文本,但听 1 小时音频转化成模型输入是 90K,看 1 小时视频,即使每秒只看 1 帧(正常视频至少每秒 24 帧),输入到模型也是 100 万(具体数值和分辨率有关)。100 万 token 什么概念?差不多能放下 3 册《哈利波特》。
二是,不同模态也会改变注意力的稀疏模式。文本中常见的稀疏模式是关注临近的词。而对视频而言,可能需关注不同帧的相同位置比如在观察球的运动轨迹时,那些和当前 Token 最相关的 Token 并非总是邻近的,而是会跳跃,比如每隔 220 个 Token 看一下。所以不同模态对注意力设计也有不同要求。
我们最近刚开源了一个工作 FrameFusion,它虽然不是处理注意力问题,但也是希望解决长序列下的视频理解问题。这个工作发现,现在我们在文本里选择舍弃哪部分注意力的值时,更多是从重要性考虑;而视频里,有些东西虽然很重要,但它每帧都出现,就不需要重复看。所以我们会更多从冗余性出发,只保留重要且独特的部分。
晚点:你们觉得,我们现在已经看到的 NSA、MoBA 这些注意力机制,离我们理想中的注意力,总体还有多大差距?
肖朝军:还是要从能力出发去思考这个问题,就是如何探索长文本的记忆能力。注意力机制本身能改的、大的东西也不多了。而获得更长的 “记忆” 可能需要新的架构改进。
傅天予:汪玉老师特别喜欢说一个例子:神经网络就是 y=f(x)。x 是输入,y 是输出,f 是这个网络。
现在的趋势是,x 越变越长,这是多模态等带来的;y 也越变越长,这是思维链带来的。f 要做的事就是,当 x 和 y 都变得这么长时,我怎么能算得快,同时又能正确地输入 x,并正确地输出想要的 y。这就是大家努力的总体目标。
至于 f 怎么做到这两点,注意力改进是方法之一。但也有其他方法能服务这个目标。
用 AGI 解决可控核聚变,然后供能 AGI?
晚点:我们又回到了长文本。未来更长的文本,可以用来做什么呢?
肖朝军:按 OpenAI 的规划,下一步就是做创新。比如我们博士生做科研,从选题到做实验,到最后写 paper,整个过程会历时几个月甚至一、两年,这几个月时间里的思考如果都存下来,现在的存储肯定不够。
(注:OpenAI 去年 7 月定义了 AGI 路线图的 5 个阶段:聊天者、推理者、智能体、创新者、组织者)。
而我觉得,AGI 的实现,未来一定要做科研。
晚点:为什么你认为科研这个场景这么重要?
肖朝军:因为科研需要非常综合的能力。能做科研,意味着 AI 要有思考能力、记忆能力、高效学习能力等等,所以科研是 AGI 发展到较高水平时的集中体现。
有了这种能力,AI 能拓展人类知识的边界,提出新范式,探索新的宇宙奥秘。
晚点:OpenAI 的路线图里,创新者之后还有一个组织者。
肖朝军:其实我不太认同这个。组织可能先于创新发生,它不一定是高智能水平才能做到的事,蚂蚁间也有组织。
这(创新和组织)可能是两个方向:一是单体智能增强,一是从单体向多体合作发展,谁先发展不一定。
大家以前会想,能不能让大语言模型自己生成文本,再自己训练自己,越训越聪明。现在发现,这样训练完的大模型会直接崩掉。但如果 AI 真能做科研的话,其实有希望让它自己迭代、自己升级,甚至有可能出现超越人类的智能。
晚点:现在有看到任何这样的苗头吗?
肖朝军:现在还没有,但我觉得未来 AGI 总会发现自己的缺陷,那就得改自己。
晚点:它为什么会产生这个动机呢?
肖朝军:这个就是 AGI 的未来了。它现在肯定没有动机。
晚点:对,现在只有人给它的学习目标,比如人给 GPT 设定的学习目标是预测下一个词,给 o1 的目标是用长思维链来 “思考”。再往下会是什么呢?
肖朝军:那就看人类怎么想了。也可以设计一个损失函数(Loss Function,它用来衡量模型预测值与真实值之间的误差解释,可为模型优化提供指导),告诉它,目标就是自我迭代,越来越聪明。
晚点:那么什么叫聪明呢?好像还是得人来定义。
肖朝军:当然了,这个其实很难。人怎么定义自己的智能,又怎么定义人工智能,都有很多分歧。比如这个话筒,它能录我的声音,这是智能吗?
晚点:好像不是一般人理解的智能。
肖朝军:但是大家肯定认为人脸识别是智能,它也和话筒一样,只能做一个任务。为什么话筒不是智能,人脸识别是智能?
人类对智能的定义现在还不完善。也许未来我们给 AGI 创造足够多的能力后,它的目标不是人定的,而是它自己定的。
晚点:这个目标会是人类想要的吗?
肖朝军:这很难想象。我倾向认为未来 AGI 可能是自组织形式,一个 AI 可以带着一堆 AI 工作,也会和人类一样有分工,老板负责 “画饼”、定目标,只是这个目标是否服务人类社会,这是未知的。
傅天予:人类总觉得自己的智能好像高人一等,大脑奥秘真是难以捉摸。但人类智能在机理上是不是就比其他智能高级呢?或者说什么机理最合适、最好呢?智能也不一定是越像人越好。
晚点:其实一开始聊稀疏注意力时,天予就提到,神经科学研究也发现神经元之间的连接是稀疏的。好像大家下意识还是把 AI 和人类大脑做类比。
傅天予:我觉得人是提供了一个可行解,而且是较优的解,但不能保证是最优解。
当大家都不相信一件事能行时,提供一个可行解或较优解,能帮助把事做成。但是去思考这件事怎么做到最好时,只提供可行解是不够的。
晚点:人脑的效率远优于现在 AI。
肖朝军:对,因为人的能源就是有限的,每天只能吃这么多。控制能耗是生物进化的一个关键限制。但对 AI,假如它的智能水平足够高,我们就能给它提供足够的算力。
晚点:地球能源不也是有限的吗?这是要实现可控核聚变呢?
肖朝军:可以让 AGI 去研究这个,然后再给自己供能。所以还是回到刚才说的,我认为科研会是 AGI 最重要的一个问题。
*附文中提到的主要工作的 GitHub 或 arxiv 链接:
NSA:
https://arxiv.org/abs/2502.11089
MoBA:
https://github.com/MoonshotAI/MoBA
InfLLM:
https://arxiv.org/abs/2402.04617
MoA:
https://github.com/thu-nics/MoA
FlashAttention:
https://github.com/Dao-AILab/flash-attention
题图来源:《社交网络》