开场0:00
欢迎收听本期的 《 晚点聊 》, 今天的主播是曼祺 。 上周 DeepSeek、Kimi 都放出了新的大模型架构改进和优化成果 , 分别是 NSA、MoBA, 它们都聚焦到了对大模型中的 " 注意力机制 " 的改进 。
注意力机制是当前大语言模型的核心机制 。 回到 2017 年 6 月那篇开启了大语言模型革命的 Transformer 八字论文 , 标题就是 《Attention Is All You Need》, 注意力就是你所需要的一切 。
而优化 Attention 的计算效率和效果 , 又能帮助解决 AI 学界和工业界都非常关心的一个问题 , 就是长文本 ,long context。
不管是要一次输入一整本书让模型能帮我们提炼和理解 , 还是在现在用强化学习来提升推理能力的范式转型后, 需要生成很长的思维链 ; 又或者是我们未来希望模型有越来越长的 " 记忆 ", 甚至是像人一样有一生的记忆 , 这都需要有长文本能力的支持 。
这期节目中我们就邀请了两位也做过 Attention 机制改进的 AI 研究者 ,他们之前的成果都和 NSA、MoBA 一样 , 属于大的 " 稀疏注意力 " 方向的改进 。
一位是清华计算机系自然语言处理实验室的博士肖朝军 ,他是 InfLLM 注意力机制改进的一座 ; 导师是清华计算机系的刘知远 ; 另一位是清华大学 NICS-EFC 实验室的博士傅天予 ,他是 MoA 注意力机制改进的共同一座 ; 他的导师是清华电子工程系的主任汪玉 。
汪玉老师的实验室也做了很多与硬件层结合的优化工作 , 两位刚好有一些可以相互补充的视角 。 注意力机制确实是一个会涉及较多技术细节的话题 , 所以我在 shownotes 的末尾也贴了一些术语和过往注意力优化成果的简单解释 , 希望可以帮大家更好地理解 。
上期我们在和美国西北大学的博士王子涵聊过后, 有听友反映术语有些太多 , 听不太懂 。其实我自己最近密集聊了一些 AI 研究者 ,有一种 " 逐渐连点成线 " 的奇妙的感受 。
比如这次我和朝军还有天予聊 NSA、MoBA 这些改进时 ,他们也聊到了自己做研究的探索过程和一些反思 , 中间有不少点与我们上期节目也有呼应 。
比如两次我们都聊到了 FlashAttention, 上次是在聊 DeepSeek 最新开源的 FlashMLA 时, 聊到了当年的 FlashAttention, 它也是一个从系统层去做优化的很经典的例子 。
那这次聊 Attention 本身 , 肯定也绕不开 FlashAttention, 它是一个早期的对 Full Attention 的重要的改进 。 两次节目我们也都聊到了在工程上去做更底层的算子优化的重要性 , 它是帮你真的把一个 good idea 去落下去的方法 。
如果你虽然不是一个 AI 从业者 ,但又因为兴趣 、 好奇或工作需要 , 非常希望由浅入深地了解更具体的技术机制和进展 , 那欢迎多听我们的节目 。
这次我也在 shownotes 里贴了一些 AI 大神用相对通俗的方式去讲解 AI 的视频节目的地址 , 让我们一起学习起来 !
今天的 《 晚点聊 》 很高兴地邀请到了两位 AI 研究者 , 来和我们聊一聊最近引起了很多关注的对大模型的 Attention,也就是注意力机制的改进 , 包括 Moonshot 发的 MoBA, 还有 DeepSeek 发的 NSA。
两位可以先和我们的听友打一个招呼 ,也简单自我介绍一下 。
大家好 , 我是来自清华大学计算机系的博士生肖朝军 , 然后一直专注于做大模型高效架构层面的研究 。
大家好 , 我是来自清华大学电子系的博士生傅天予 , 然后我们也一直是关注神经网络模型高效性这一块 。
朝军和天予也可以讲讲就是你们之前以往的工作和注意力机制改进的一些关系 。
2024 年的时候我们发布了一篇文章叫 《InfLLM》, 然后也是做大模型注意力机制的改进 。 那么当时的出发点也同样的是认为说大模型在处理长文本的时候需要很多的计算资源和存储资源 。
同时大模型当时一年以前大家可以关注到的是 , 大模型当时开源模型最多也就处理 8k, 就是 8k 左右的文本长度 。
那我们当时就想要去说能不能无需心愿地 , 然后用稀疏注意力的机制 , 使得它能够处理更长的 128k 甚至是 1k 的文本 , 然后就提出了这么一篇文章 。
那么它整体的这个 Attention 的这么一个改进的思路 ,其实和现在被受大家关注的这个 DeepSeek 的 NSA 在 Attention 部分其实是比较类似的 。
那么 NSA 的话其实是进一步地把它做到了预训练阶段 , 然后且写了非常丰富的这么一个算子 , 然后做了非常精细的化的设计 , 使得它能够在预训练阶段就能够去很好地利用这种动态的稀疏 Attention。
那么其实它是一个非常大的一个进步 。
对 , 然后我这边的话也是在 24 年左右 , 然后我们有挂出一篇名字也和今天聊的这个 MoBA 非常像 , 叫 MoA。
我们是 Mixture of Attention, 然后它是 Mixture of Block Attention。 那大家可能跟刚刚朝军介绍的也是一样 , 就是大家的这个目标都是希望能够大模型能够更高效地去处理一个特别长的文本 。
那我们这篇文章更加关注的重点是 , 我们发现之前的一些稀疏注意力的文章 , 它虽然能让模型可能记住很长的上下文 ,但是或者说可以让模型在很长的上下文上能流畅地输出内容 ,但是其实模型并没有记住或者说能够使用很久以前的这个上下文的内容 。
那我们这篇文章就是希望能够去分析不同的注意力头 , 它各自的特性 , 来找到究竟哪些注意力头是对模型能够真正去利用上下文非常关键的 , 然后来针对性地去更多地保留这部分注意力头的注意力 , 来让模型不仅能够顺畅地这样说话 , 还能够真正地去利用到很长上下文的这个内容 。
然后在正式聊这个 NSA 和 MoBA 的一些具体的改进之前 , 我们先聊一聊关于 Attention,也就是注意力机制的一些基础性的问题 。
注意力基础5:33
我也是想请两位和我还有听友都科普一下 。 那其实在 2017 年就是提出现在大语言模型主流架构的 Transformer 的那篇论文 , 它的标题就是 《Attention Is All You Need》, 可见 Attention 应该是 LLM 中非常核心的一个模块 。
那两位也可以帮我们介绍一下就 Attention 它是什么 , 它大概是来做什么的 。
就我觉得这样 , 要说清楚 Attention 是什么 , 可能我们要知道一个大模型它输入和输出是什么 。 那对于大模型来说 ,其实它的输入就是一系列的 Token, 我们其实叫词源 , 或者我们简单理解就是一个词吧 , 一系列的词 。
那 Attention 的作用是这样 , 就是说对于每一个词 , 它单独本身是有一个含义的 ,但有一些词的含义必须要联合上下文才能表达 , 比如说一些代词 it, 它 , 那究竟它是什么 。
所以 Attention 机制的引入的核心思想就是希望输入的每一个词能够和之前的词产生关系 。在现在的这个大模型的 Attention 机制中, 输入的每一个词都会和前面输入的所有词产生关系 , 它会计算自己和之前所有词的关系 ,并且去根据这个关系的强弱来加权之前词的信息 , 这样就能够帮助大模型不仅很好地理解这个词 , 还能理解它的这个语境 。
那我可以补充一下, 就是这个为什么在聊 Attention 之前 ,其实可能大家需要了解一个概念 , 就是再往前 , 就是神经网络是怎么处理序列的 。
那么当时我们会认为叫一个循环神经网络 。 就循环是什么意思呢 ? 就是它循环的一个词语一个词语地去理解 , 然后动态地维护一个记忆 , 然后每一次去理解一个词语的时候 , 就判断这个词语和记忆到底有什么样的关系 。
那么在这样一个过程里面 , 可以预想的就是这个记忆就是会有遗忘 , 这个在这个技术上会有很多的这个训练上什么梯度消失 , 然后梯度爆炸等问题 。
那么这个 Transformer 这篇文章提出叫 《Attention Is All You Need》, 那它就认为说传统的这种循环神经网络这么一个机制 , 然后它是具有天然的缺陷的 , 然后所以它就提出来这个 Attention。
那 Attention 其实就叫注意力嘛 , 那其实就可以和这个人的注意力机制去产生一定的关联 。 那么可以认为就是它还是一个 Token 一个 Token 地去处理 , 然后但是呢 , 可以思考的一个问题是说 , 那之前这个 Token 它是需要和记忆去做相关性的计算 , 然后去提取重要的内容 。
那么 Attention 就说这个记忆我不要给它固定大小 , 那我就是把记忆拓展为全部的过往词源 , 那它就可以处理当前这个词源的时候 , 当前这个词语的时候 , 它也可以和之前的所有词语去做逐一地去匹配 , 认为哪个最跟它有关系 , 它就把它的相关信息提取出来 。
所以它就可以认为是说能够去改进以前的循环神经网络 ,在这种处理比较长的序列的时候会存在的遗忘的问题 。
对 , 可以就是大概是这么个理解 。
循环神经网络就是 RNN 吗 ?
对对对 。
那在循环神经网络中的那个记忆是什么样 ?
记忆的话它就是一堆树 , 就是一堆矩阵 。
它是把什么东西变成了这堆矩阵 ?
就是过往的词源 , 就是它是一个一个词 , 就比如说我们假设这个神经网络需要处理一个句子叫 " 我是肖朝军 ", 然后那它就得先处理 " 我 ", 再处理 " 是 ", 再处理 " 肖 "。
那就是循环神经网络就会把每处理一步 , 它就会把当前的输入变成记忆 , 比如在处理 " 肖 " 的时候 , 它就已经把 " 我 "" 是 " 这两个词变成了记忆 。
那么假设在这样一个过程里面 , 循环神经网络它就它的记忆大小是固定的 , 就是它只有一个固定大小的记忆 。
那在这样的过程假设当前我们刚才说的处理的 " 我是肖朝军 ", 那么它可能只有五个字 , 这个遗忘现象不严重 。
那假设就像我们今天这个播客 , 我在最开始的时候说我叫肖朝军 ,但是在后面我只会说 " 我 ", 那这个 " 我 " 字到底代表什么意思 ?
那需要这个模型就能够把这个 " 我 " 和我在最开始提到的 " 我是肖朝军 ", 肖朝军这个字 , 它们两个之间去建立关联 。
但是当我这个输入长度特别特别长的时候 , 我的记忆大小就有限嘛 。 那比如说我们这个播客录了两个小时之后, 那它可能整个模型就已经忘记了最开始肖朝军这三个字 。
但是这个这是循环神经网络的缺陷 。 但是对于 Transformer 而言 , 它会把过往所有的词它都存着 , 然后过往所有词的这个我们叫表示 ,其实就是一个一个的向量 , 它都存储下来 。
那在这个在两个小时之后我再次提到 " 我 ", 它这个 " 我 " 会和过往所有的词语去做一次相关性的计算 , 然后那它就能够很快地计算到肖朝军和我这个词语 , 它其实是一个高度的关系 , 那它就能理解这个两个小时之后我说的这个 " 我 " 字其实就是肖朝军 。
所以在最开始从 RNN 到 Attention 的这样一个改进 , 它本身就是为了去解决当这个输入很长的时候 , 我怎么更有效地去理解这个非常长的一个上下文 , 对吧 ?
对 , 当时的长可能都没有很长 , 就是几百个 Token, 就当时就认为是很长的了 。 所以当时在再往前倒的话 , 就是这个可能再往前聊就是会比较深了 , 就是说稀疏 Attention 最开始提出的时候是解决 BERT 那个最早的预训练语言模型 , 它只能处理 512 Token, 就 512 个词语的这么一个限制 , 然后稀疏 Attention 出来之后让这个模型能够处理 4k, 就是 4k 的 Token, 这已经是 1918 年的时
候大家这个认为已经非常长的一个长度了 。 当然到现在动辄长文本大家可以看到是 128k, 或者是甚至是一兆 , 就是 100 万的长度 。
对 , 所以这整个发展是很快的 。 所以当时 Transformer 提出来确实是能够去解决长文本 ,但是这个长和我们今天的长还概念还不太一样 。
明白 , 就是从长文本到长长长长的长文本 , 对吧 ? 好 , 那我们可以继续聊这个 Attention。Attention 它是在训练阶段和推理阶段它都会发挥作用是吗 ?
对对 。
然后现在我看大家的很多改进去对比效果的时候都会去对比这个 Full Attention。Full Attention 是不是就是以前标准 Transformer 里的那个版本 ?
以及就是为什么后来大家觉得这个 Full Attention 它不够用了 , 它什么地方有问题 ?
对 , 就是 Full Attention 就是传统的这个就是最早的 Transformer 里面的那个 Attention。 为什么它不够用了呢 ? 其实就刚才提到的这个 Transformer 会把所有的词语的表示都存下来 。
那就比如我们聊了两个小时, 那可能就已经聊了有上百万的词语了 。 但是呢 , 大家可以去算一个数字 , 就是在 Transformer 里面一个词语它是会表示成一个向量 , 一个向量就是一串的数字 , 然后这一串数字存下来 , 这个这个反正这个又要讲到更深的 , 就是一个比如说一个数字它在计算机里面可能是两个字节 , 那假设是当然这个有量化不一定啊 , 就我们假设是
两个字节 。 那最基本上一个数字现在一个词语它就要几千个数字 , 一层就要几千个数字 , 然后再更多层当然它要更多的数字 。
然后假设我们已经有几百万个词语的话 , 那它可能存下来的这个这个量就已经是要好几百 G, 对吧 ?
那既然好几百 G 的话 , 可以想象大家的电脑这个存储是远远不够的 , 这是存储上的问题 。 第二个的话是 Attention 提到了 , 就是我在处理任何一个 Token 的时候 , 我需要和前面的所有 Token 都来做一遍的计算 。
那就是随着我们聊的时间越来越长 , 我们聊了两个小时, 它就需要跟两个小时的词语去做相关性计算 。
但假如我们聊了四个小时, 聊了一天 , 那它就要跟一天的词语去做相关性计算 , 那整个的计算的时间是越来越高 , 越来越高 。
所以就是这个在处理长文本的时候可以看到 , 那这个我们会说 Attention 是 N 方复杂度 , 那它这个 N 方这个 N 其实就是长度 , 那随着长度它这个这个时间和存储的这个开销都会变得非常大 。
所以就是大家就会觉得需要去解决掉它 , 要不然的话我们是没有办法去处理一个长文本 ,因为现在的显卡它的显存可能就几十 G 的一个一个存储 。
对 。
那我稍微补充一点 , 就是关于刚刚提到就是训练和推理之间有没有什么区别 。其实我们之前看到很多的这个稀疏注意力的工作 , 它做的都是一个稠密训练的 Attention, 然后但是在推理的阶段把它变成稀疏的 。
那为什么可以这样做 ? 其实是有一个契机 , 就是我们发现 Attention 本身它就含有稀疏性 , 即使你是稠密的训练 。
为什么会这样呢 ? 一般可能有两个主要的原因 。 第一个原因是说 Attention 里面有一个叫 Softmax 机制 , 你可以简单理解它是一个更软版本的 Max, 就是它是一个更软版本的取最大值的过程 。
就对于最大值来说 , 就是最大的那个人是 1,其他人全部都是 0。 那 Softmax 就是最大的那个人可能是 0.9, 第二大的人是 0.09, 然后第三大的人是 0.009,但总之它是一个会有一个最大值的过程 。
那这就导致在这么多数字里面只有很少的数很大 , 那这就是为稀疏性提供了一个潜在的数学保证 。
这个值是相关性是吗 ?
对 , 这个值就是我们刚刚说的相关性 , 我们一般叫 Attention Score, 就是或者叫 Attention Weights。 然后第二个点就是说从我们语言学的角度来说 , 虽然说比如说我们今天这个播客可能有两个小时 ,但是潮军这个和我之间产生关联是非常非常稀疏的 。
就是说我可能和这前面的两个小时可能有 100 万个词中, 只和潮军这一个词是有关系的 。 所以你可以看它这个关联本身就是很稀疏的 。
而且就是从人脑的角度来说 , 大家也发现就是人脑的这个神经元 , 它也不是所有的神经元都和所有的神经元连接 , 它的连接本身也是非常稀疏 ,并且可能随着人年龄的增大 , 它会变得越来越稀疏 。
所以就是从无论是从数学上还是说从语言学上, 还是说从一些神经科学上的一些启发 , 大家就觉得稀疏 Attention 本身是存在并且是可以被利用来提高效率的 。
请我总结一下, 就是一个是它存储上会带来很大的存储的需求 , 然后另外一个就是它的计算复杂度会随着文本变长 , 然后它是一个因为你说是 N 方嘛 , 所以它是平方爆炸的一个过程 , 然后就导致大家想要寻找各种办法去优化它的计算效率 。
那我们可以来讲讲就是大家其实现在比较主流的一些改进的思路是什么 ? 因为其实你们刚才提到的像这个 NSA 和 MoBA, 还有你们做的这个 MoA 其实都是在这个稀疏注意力的大方向下 。
稀疏与线性15:11
就它如果总体来说的话有哪些分类 ?
我认为其实现在主流分类就是稀疏注意力和刚才提到的 RNN, 就是 RNN 又复活了 ,以 Mamba 为例的这些模型 , 我们假如统称为 RNN 模型的话 , 那其实现在最主流的方向就是 Transformer 的改进 , 就是稀疏 Attention, 然后以及 RNN 就是把这个 Attention 直接给取代 , 就是再替换回原来那种计算层次上比较高效但是带有遗忘机制的这么一个层 。
所以从大方向来说我认为是这两个 。
对 , 我个人觉得就是说总之现在大家不喜欢说自己是 RNN 嘛 , 就是大家会说自己是一个线性注意力 。
这个可能就是有一些我觉得有一些工作确实还是以一个循环的方式在进行 , 然后可能也会有少部分的一些工作它的它虽然是也是存在一个把很长的序列压缩到记忆的过程 ,但是这种压缩不是逐个词进行的 ,而是说我给了这么长一个输入之后我一次性把它压缩变小 , 那这部分可能也会被归为到线性注意力这一层 。
对 ,但我觉得总体来说是分为一个稀疏的方法和一个线性注意力的方法 。
稀疏的线性的 , 然后其中线性的话可能就是有一部分它是和 RNN 的思路是类似的 。 可以说稀疏注意力是更主流吗 ?
因为我看到很多成果都是和稀疏注意力相关的 。
应该说在 Mamba 之前它更主流 ,但 Mamba 之后其实以 Mamba 为例的这种 Linear Attention,Linear 注意力机制的改进也非常的多 , 所以其实很难讲哪个是主流 。
对 , 我个人感觉 。
Mamba 是不是就是那个 Tri Dao 和 Albert Gu 他们合作做的一个论文 , 对吧 ? 一个 paper,他们之前也是那个 FlashAttention 的作者 , 对吧 ?
对对 ,Tri Dao 是 。
FlashAttention 它也是它是属于刚才我们说的哪种了 ?
它是一个底层 , 它其实就是相当于它不涉及模型的改进 , 它其实就是一个这个底层算子的精进 , 就是这个它和模型是割裂开的 。
就是 FlashAttention 本质上跟 Full Attention 在计算层面是完全一致的 , 它只是让 Full Attention 算得更快 。
然后另外一个我想问的就是说除了 Attention 机制的改进之外, 还有哪些努力可以去改进长文本的计算效率的这个问题 ?
我觉得就是 Attention 机制的改进其实都处在一个我们叫一个算法层 , 那其实对于一个用户来说 ,他其实用一个大模型会大概率会有接触到三个层次 : 算法 、 系统和硬件 。
硬件层很好理解 , 就是你用一个更快的卡 , 更快的 GPU, 当然可以变快了 。 系统层可能稍微难理解一点 , 就是说就像刚刚提到的 FlashAttention, 它就是一个系统层的改进 。
它的好处就是说虽然 GPU 它的峰值算力和峰值显存是固定的 ,但是你的这个你可以说这个代码写得好不好 , 就决定了这么多算力你能用到百分之多少 。
那系统层的工作就是说我希望能够让算力的利用能达到百分之百 , 或者是带显存带宽的利用能达到百分之百 。
那这部分其实也是能提供一个很大的优化 , 比如说 FlashAttention 的提出其实是让 Attention 的计算量已经上了一大个台阶 , 然后显存量可以说是降了至少有一个量级的降低 。
所以系统层是有一些工作 , 然后再上面就是我们说的算法层 。 那算法层可能再往下细分又是分为一个模型层和说我们更 general 就是更普遍意义上的算法 。
那模型层就是说我们只考虑这个模型本身 , 那比如说稀疏注意力就是 , 或者之后可能会有提到一些比如说混合专家系统 Mixer of Expert MoE 也是模型层的改进 。
更普遍的算法层的改进是我们去模型已经固定之后我们去看它整个生成的范式 , 比如说现在大模型是一个词一个词我们来蹦 , 大家看像打字机一样 , 对吧 ?
但是就会有人想 , 那我能不能两个词两个词我们来蹦呢 ? 或者是我能不能一段话一段话我们来蹦呢 ?
或者说我能不能分十个大模型一人写一段 , 这样的话我最终写十段需要的总时间就会变少 。 这些就是不同层次的改进 。
因为你是在汪玉老师的团队嘛 , 然后电子系本来可能做这个硬件啊系统的会多一点啊 , 这个方面你们有什么就是经验可以分享吗 ?
我觉得系统层现在其实很多人也会关注到 , 然后可以看到市面上会有很多大模型推理的系统 , 比如说 VLM, 然后 FlashAttention 也算 ,有不同的优化方向 。
有的可能是去专注于优化大模型中的某个组件 ,有些还有一些比较新的方向可能是针对一个大模型要去服务很多用户的场景 , 那我们去怎么样让这些用户都能就是他们的延迟都不太大 ,并且我整体系统的吞吐量能够比较高 , 就是会有面向不同场景的不同的系统的优化目标和最终的结果也会不太一样 。
其实这个可以再举个例子就是当然这个算法层很多改进了 , 就是因为长文本问题很多 , 就是不仅仅只有计算和存储上的问题 ,其实可以认为就是你在场景不一样你的优化方向也会不一样 。
你可以看到的话就是在这一这个 DeepSeek 在这一篇文章里面它用的是稀疏 Attention,但这个再往前的话大家其实应该就是假设了解技术的人比较多的话 ,MLA 就是他们提出来的那套这个新的这么一个注意力机制的一个算法 。
它这个是在 V2 的时候 DeepSeek V2 的时候提的 。
对对对 , 那它在解决一个什么问题呢 ? 其实就是说刚才我们提到的就是 Transformer 它需要把所有的词源都存下来嘛 , 那它会认为这个存储量有点太大了 , 然后存储这个量大了之后呢 , 我这个每次去访问它的时间会很长 , 就是我需要一个一个把它读出来 。
那其实可以直观的理解就是你从电脑上去读一个实际的文件和电脑上读一个 1 兆的文件 , 那肯定速度上是有差异的 。
那它所以就想的是把它这个这个这个维度给它压低了 。 刚才提到一个词语它可能需要几千个数字来存储 , 它就比如说我就能不能把它压成 500 个数字 , 它就做了这一个方面的改进 。
所以其实就是说改进方向会很多 ,但就是可能就是看大家具体场景是什么 。
你们了解之前 Kimi 做的这个 Mooncake 吗 ?
了解 。
Mooncake 它是一个什么方向上的改进 ? 我理解它可能整体上也是服务长文本呢 。
它更多应该是在系统层的改进 , 就是它其实还是在这个算法上没就是它其实还利用的比较多的是 Full Attention 的机制 , 或者它在系统上去做的比较多的这种优化 。
NSA与MoBA21:25
那接下来我们就可以以这个 NSA 和 MoBA 这两个近期比较受关注的新的注意力机制的改进作为例子 , 我们可以更详细的展开聊一下注意力机制的一些变化 。
以及正式聊之前我有一个比较好奇的小问题啊 , 就是我看这次 DeepSeek 的 NSA 它是先发了预印本平台 ,但是它还没有去发这个 GitHub 的库啊 , 然后 Moonshot 的 MoBA 它是先在 GitHub 的这个主页上就已经有这个项目页了 ,而且它把这个工程代码也放出来了 。
就是大家一般去向技术社区释放这种成果的时候 , 我是先直接发个论文 , 还是说我先发 GitHub 这有什么区别吗 ?
这个其实是这个开源层次上是有区别的 。 你就比如说吧 , 就是大家会说 DeepSeek 开源 , 那当然它最近可能也要进一步开源了 , 就是说当然 DeepSeek 开源它开源的是那个模型 , 对吧 ?
它开源的是那个模型的参数 ,但其实假设我们业界想要去复复刻它那一套训练的过程 , 复刻它那一套推理的过程 , 就是比较低成本的训练 , 那我们还需要的代码是它的这个这个和硬件适配的代码 。
这个那这样的话 , 这个代码本身它不会是一个阿卡文论文 , 它就是一份代码 , 那就可能就得放在 GitHub,但它现在还没有放 , 那它可能过过段时间的话 ,因为它那个已经说了嘛 , 它要有 5 天的发布 , 那它会类似应该是会放这个部署的代码 。
对对对 , 它对它会有部署的代码 。 那所以说其实就是放 GitHub 那就是为了把代码开出去 , 当然放了 GitHub 也可以不开代码了 , 我可以只把模型放在上面 。
对 , 所以其实就可能论文它更多的是一种技术上的摘要 , 精要就是告诉你我这个东西怎么做的 ,但具体这个每一个细节还是得用代码来呈现 。
所以其实这是两个层次的问题 。 但 Moonshot 的 MoBA 它是在 GitHub 上做了 ,但是没看我没仔细看它有没有把那个训练代码和底层代码开源啊 。
对 。
那我们接下来来具体看一下这个 NSA 和 MoBA 的一些改进吧 。 然后这次我也是看了两个 paper, 包括你们之前就是应付 LLM 和这个 MoA 的 paper,其实这些技术论文呢它的大致结构是相似的 , 就是前面的 introduction 和最后的 conclusion 的部分会去总结的来讲一讲就是这一个论文里对注意力机制改进带来的核心的特点 , 还有一些性能和效率的提升 。
然后中间这个 method 的部分是讲具体怎么改的一些设计架构 , 然后是我觉得也挺重要的 , 可能之前讨论比较少就是这个实验的部分 , 到底是用哪些 Benchmark 来测它改进的效果如何 。
我们可以就是按照这些部分来做一个比较和展开啊 。 可以先从这个 introduction 和最后 conclusion 的部分来聊起 , 就是两位看到 NSA 和 MoBA 这个成果之后, 你们会觉得就是它在它最开始的介绍和它整体的这个结论里面 , 你们觉得比较重点和亮点的东西 ,有意思的东西是什么 ?
我这边我觉得看到最有意思的是他们都做了一个稀疏的预训练 , 这个是确实是我们在之前的文章里看到很少 ,因为就像我刚刚说的 , 之前大部分文章是做稠密训练 , 只有在推理时才稀疏 。
虽然说稠密训练会我们刚刚说确实稠密训练的记住力本身会有一定的稀疏性 ,但是如果你的训练和推理是有些地方不一致的话 , 它不可避免的会引入一些误差 。
所以说其实其实业界也非常好奇 , 或者说学术界也非常好奇的一个点 , 就是如果我在训练中, 甚至是在早期的预训练阶段就引入稀疏性的话 , 会对模型最终效果有一个什么影响 。
我个人觉得之前之所以没有这样的探索 , 可能一方面是大家更多的早期大家更多的是追求说这个模型要足够的聪明 , 我要把点打上, 我要这个数学题做得好 , 对吧 ?
但是至于效率问题呢 ,是放到后面再来解决 。 所以说大部分人还是说更愿意选择一个更保险的一个稠密训练的稠密注意力的这么一个方法来确保模型的性能上限不影响 。
但可能到现在这个时间节点 , 大家会逐渐觉得就是模型的效率这件事情也变得非常非常重要 , 尤其是我要去服务这么大批的用户的情况下 。
所以说就是可以在业界看到一些关于稀疏注意力更投入更多资源的尝试 。 所以这其实也是解答一个之前大家非常关心的问题 , 就是稀疏注意力的训练中经过充分的训练之后, 能不能达到和稠密注意力一样的性能上限 。
我觉得是这个是大家一直会很关注的 。 关于这个问题 , 至少 NSA 的这个论文里呈现的看起来呈现的效果是说是可以达到的 , 甚至在某些情形下是可以超过稠密注意力的 。
我觉得这个是一个我觉得非常有意思的观点 , 然后也是相当于是给稀疏注意力这个领域打上了一针强心剂吧 。
就是因为之前很多的审稿人他可能会质疑 , 就是说虽然当然你这个变笨了一点 ,但是变快了很多 , 那变笨这么一点我是不是能接受的 ?
如果我就是要一个很聪明的模型怎么办 ? 那有这个稀疏训练的工作就是告诉大家你可以聪明的同时也很快 。
你刚说这个特点挺好的 , 这也解释了我的一个疑惑 。 因为我看 NSA 论文的时候 ,其实它是引用了你们之前的 InfLLM 的那个成果的 , 它引用的那个地方就是它在比较说我和那些之前主要是在推理阶段来做稀疏注意力的一些成果的一个比较 。
所以所以它确实有一个区别 , 就是它是在预训练阶段就引入了这个 。
这个事情其实虽然看起来可能会觉得大家会觉得是说一个稀疏一个推理阶段 , 一个预训练阶段 ,其实这个 gap 其实还是挺大的 。
就是说其实可以天然的是因为这是硬件上的原因 , 就是 GPU 本身它是不太适合去做稀疏计算的 。GPU 本身它其实是很适合的去做这种非常密集的稠密计算 ,但是假设我们要把稀疏这种机制引入到预训练阶段的话 ,其实是它就是这个我们当然可以做 ,但有可能是我们根本没有办法去实现加速 , 就在预训练阶段去做的话 ,其实这个整个过程会比较困
难 。 然后其实为什么在训练阶段去做这个加速 , 或者说为什么稀疏注意力可训练这件事情现在变得越来越重要了 , 那其实还是核心还是一个问题一个原因 。
所以大家还是觉得要去思考的问题是这个 DeepSeek 的发展路径到现在为止它为什么会突然关注到稀疏注意力 ,但其实是这个跟 R1 的出现是密切相关的 。
因为 R1 大家可以看到的是它会有很长的思维链 , 那就是说把这种思维链变得非常非常长已经成为一个必然的趋势 , 已经成为一个必然就是让模型变得越来越聪明的一个趋势 。
那么在之前的长文本 , 大家可能关注的就是更多的是输入很长而不是输出很长 。 那么输入很长我们叫 pre-fitting, 那这个是这个 Moonshot 这篇文章关注的核心的点 , 那也是之前 Kimi 他在做他的产品的时候一个很重要的特性 , 就是我能输入很长 , 且把一篇小一个很长的长篇小说输入进去我也能很快的处理 。
但当前 DeepSeek 它可能更关注的问题 , 当然它的这个 NSA 在这个输入很长的时候也能加速了 ,但我觉得它这篇文章里面最重要的点是在输出很长的时候 , 它也能够做到非常好的加速 。
而且那这件事情为什么要 trainable, 那其实可以看到就是 RL 阶段它是需要去这种迭代的去训练的 , 就是它需要去先输出很多很长的东西 , 然后让模型这个再去用 RL 去给它做更新 。
那在这个阶段的话可以看到 R1 里面有一张图 , 就是随着 RL training sleep 的增长 , 然后它整个这个这个输出的长度会变得越来越长 。
那可以预想的就是假设我的 R1 想要继续不断的往前训 , 那我的长度就一定会继续突破 。 那在这个一个场景下的话 , 把这个稀疏的注意力机制引入到训练阶段 , 尤其是 RL 的训练 ,但这个事情它没有在这个 NSA 的论文里面去做了 ,但我觉得它一定是一个未来趋势 。
所以就是可以看到他们两个这个这个这个两篇文章 , 它其实虽然说都是主稀疏注意力 , 乃至说我们之前做的很多文章也是稀疏注意力 ,但是到现今天这个时间点是已经发生了变化 , 这个长 CoT 已经成为一个非常重要的问题 , 然后是大家之前相对来说是忽视的一个问题 。
所以长思维链我可以理解成也是长文本中间的一种 ,而且它是现在可能就是相比于我一个很长的输入 , 我很长的输出给它处理好也变得很重要 , 就和推理模型的这个范式的变化是有关的 。
然后我看这一次他们这个论文的 introduction 的部分 , 对 ,也都强调了你刚才说的那个可训练的 , 你也用了另一个词是 trainable 啊 , 就讲到了这个事的重要性 。
这个 trainable 的意思就是说我可以在训练阶段用 , 还是指说这个稀疏性是可以学到的 。
这稀疏性它一定是天然的 ,但是呢它有两个好处 , 就是说假设我训练阶段就是稀疏的 , 那可以认为就是这个训练我训练时的这个注意力机制的使用模式和我测试的时候或部署的时候 , 这个时候它们之间是没有 gap 的 , 就是它们是没有区别的 。
那这样的话它一定是效果更好的 , 这是第一个 。 那这个第二个就是 trainable 的这个稀疏的话 , 它能对训练本身是可以反补作用的 , 就是能够把训练速度给做上去 。
那这个也是这个一个很很关键的一个点 。
动态稀疏30:16
我看这个 NSA 和 MoBA 也都强调了他们是动态的稀疏注意力 , 这个两位可以展开讲讲吗 ? 就是那肯定也之前有一个静态的相对应啊 , 就是它这个区别可能是什么 ?
从大的角度来说 , 一般静态它就意味着效率更高 ,但是效果会稍微差一点 。 动态就意味着效率会稍微差一点 ,但是效果会好一点 。
为什么这样呢 ? 这就可能要说到大模型 , 还是回到大模型怎么处理一个文本 。其实这个文本进来的时候是有两个东西进来了 , 一个是你说的每一个词是什么 , 第二个是这些词的位置是什么 , 比如说你第一个词说了什么 , 第二个词说了什么 。
那位置这件事情是静态的 , 对吧 ? 所以其实如果说这个注意力是跟位置强绑定 , 比如说某一个某一个注意力图 , 它总是关注一个句子开头几个词 , 或者因为开头几个词很可能是一些重要的一些用户的一些指示 , 或者是一些系统的一些设置 。
那这样的话 , 这个头可能它就是表现出的注意力模式就是一个偏静态的 。 那如果说这个注意力头它更多的是跟你输入具体的这个词的内容相关 , 那它可能更多的是表现出一个动态性 ,因为你无法预知我输入的内容会是什么样 。
总那如果是一个静态的注意力机制的话 , 它其实很大程度上是能够保留跟位置相关的那些注意力的 。
但是如果说这个注意力真的和输入的内容非常相关的话 , 那它不可避免的会有一些损失 。 动态的注意力机制它其实是两者都可以保留的 。
所以说在效果上, 我们可能一般认为动态的会稍微好一些 ,但是它也带来一个什么问题呢 ? 就是我在进入这个 , 就是我在输入拿到我的输入的具体内容之前 , 我是不知道我要看哪里的 , 我是不知道我要关注哪里的 。
这就给 GPU 运行带来一个非常大的控制的开销 , 就导致它效率会比较低 。 所以这两个我觉得是某种意义上是一个权衡吧 。
其实可以补充一个静态的例子 , 就是那个那个 NSA 里面其实有个就是就是滑动窗口嘛 , 那滑动窗口其实就是一种静态的注意力机制 , 静态的稀疏注意力机制 , 就是说那它为什么是静态 , 就是因为我已经预设好了你到底要跟哪些这个就是每处理一个词语的时候 , 它要跟哪些词语做相关性计算 。
就是滑动窗口就是说就只给你前面的 K 个 , 就比如说 512 个 token 去做注意力机制的计算 , 那它我就不需要动态的去决定哪些的 token 哪些词源是跟我相关的 , 我只是直接知道哎我往前看 512 个就行了 。
但这样的话就是一种静态的 ,但是这种静态其实可以想象的嘛 , 就是刚才我还是举的那个例子 , 我说的我我是肖朝军 , 那这个事情就是它就得动态 ,因为静态的话 。
它滑不到哪 。
就我已经滑不到哪了 , 已经关注不到哪了 。 但是这样的话就很快嘛 , 每次就我都不需要知道你当前这个词语是什么 , 我就能够提前的把我前面 512 个词语拿出来准备好 , 最后给你计算 , 对吧 ?
这就就很快 。 但是呢假设是动态的 , 我就必须知道你这个词语是什么 , 然后还得知道你跟哪个词语相关 , 动态的去决定 。
那整个过程就是会比较的复杂 , 然后再加上刚才提到的 GPU 的特性 , 就是这种动态的就是稀疏的东西 , 它本来就是一个这个计算上不是很友好的一个操作 。
所以就是动态的就会效果好 ,但是呢慢 。 静态的呢就是快 ,但是呢效果不好 。
我我想再补充一点 , 就是 MoBA 其实也有静态的部分 , 就是可以看到它是固定选择了 , 它会固定的选择就是当前这个词源所在的那个 Block 的 Attention,也其实就是某种意义上就是在选择我临近的一个比如说 512 长度的这么多 token 必须要 Attention,其实也是有静态的部分在 。
所以其实更准确说他们都是动态和静态的思路是混合的 。 对 , 刚才也讲到了就是说 , 比如说我我选择这个动态的注意力机制 , 可能它对 GPU 的计算特性是要去做一些优化或者适配的 。
然后这一次 NSA 它不管是从标题啊还是从它 introduction 的部分 , 它也特别强调了说它是一个 hardware aligned, 就是我和硬件是有一些联动优化 , 我是这么理解的 。
硬件对齐33:58
这样的一个注意力机制 , 这个可以解释一下吗 ?
就是我觉得想要解释这个问题 , 我们可能要先说一下 GPU 到底是怎么在算一个东西的 。 那 GPU 它的一个特性就是 single instruction multiple data, 就是说我给你一条指令 , 你这个相同的指令在不同的数据上做同样的操作 。
比如说我现在让你第一个数字的第一个位置去乘第二个数字的第一个位置 ,但是这个数字比如它本身是一个矩阵 , 那如果是一个矩阵 , 那 GPU 可能做起来会比较慢 。
但如果这里有 20 个矩阵 , 大家都在做同样的事情 , 那 GPU 它因为它并行度很高 , 它可以 20 个事情一起做 , 那它的效率就会非常高 , 它的速度会很快 。
所以说并行度有多高一定程度上决定了对 GPU 来说有多友好 。 这是计算方面 。 第二个方面是内存访问方面 , 就是说我们知道内存它存在计算机的时候都是连续的一些数字存起来的 , 那如果你需要访问的数字也是连续的 , 那对于 GPU 来说就非常友好 ,因为它直接顺序访问就可以了 , 这个速度是非常快的 。
但如果说你需要访问的数据是碎片化的 ,因为 GPU 访问的力度是一个它一次性就会取一大块数进来 , 如果你取了一大块数只有一小块是你要的 , 那效率就很低 。
如果你取了一大块数都是你要的 , 那效率就很高 。 所以说连续的内存访问对 GPU 来说是友好的 。
那知道这两件事情之后我们再来看 NSA。NSA 它做了一个可以说 GPU 非常友好的策略 , 就是它是 block 的 , 可能又又惊到了 MoBA 的标题里 。
对 ,MoBA 的标题的那个 B 就是 block 的意思 。
对 , 它是 block 的 ,也就是说它虽然说是一个稀疏的注意力 ,但是它的力度是一块一块 , 要不然就是这一块我都要 , 要不然就是这一块我都不要 。
那你看这样的话就满足了我们刚刚的两个期待 , 一个是说它的内存访问是一块一块进行的 , 第二个点是说它计算的话是这一块都在做一样的计算 , 所以说对于 GPU 的效率也是会比较高 。
就这是我看到他们这里对硬件做了主要是做了这些优化 , 就是 block 的这件事情 。
啊 , 对 , 打个广告啊 , 我那 24 年 2 月份那个 InfLLM 其实核心就是提出来一点 , 就是 Attention 的稀疏性就得在 Block Level 去做 , 才能有比较好的硬件的友好性 。
对 , 这是我那篇文章的一个核心的观点 。
所以 NSA 和 MoBA 其实都是在 Block 的层面在做稀疏 。
对对 。
OK, 那 DeepSeek 之前给我的解读不对啊 ,因为我也之前问 , 我也直接去问了 DeepSeek 就是 NSA 和 MoBA 的一些区别 , 就它的一个输出是说它会它会说 MoBA 是更在 Block 层面的 , 然后 NSA 可能有一些更细的一些这种 。
嗯 , 应该它 NSA 也是在 Block Level 做的 ,但它可能在文章里面没有那么强调它 ,因为它更多的还是就是即使你做了 Block,但它要真的能够做到硬件上比较好的优化 , 还是需要非常多的操作 。
所以它这个更多强调的是它在后面做的那些硬件优化啊 , 那个是很关键的 。
它这个硬件优化是靠一些什么样的代码具体来实现的 , 或者说什么样的 ,因为我听下它还是个软件的工作啊 , 就它还是靠一个软件工作实现的 , 对吧 ?
对 , 它就是写写软件 , 写算子 , 就是系统层的一些软件 。
就是写算子实现的 。
对对 。
嗯 , 然后算子就是大家平时如果是用英伟达就是用 CUDA 或者用它更底层的这个 。
他们用的是叫 Triton, 那这个 Triton 是 OpenAI 开源的 , 面向 CUDA 往上再抽象了一层的一些接口 。
嗯 , 就具体到 NSA 这个里面他们是用 Triton 写的 。
啊 , 我就想补充一个非常有意思的事情 , 就是 Triton 应该做出来是也是 GPT-2 还是 3 那会儿出来的 , 就坊间有传闻吧 , 就是说这个不靠谱的坊间传闻是说可能 GPT 某一个版本最开始是有尝试想使用稀疏注意力来训练 , 所以他们也会有一部分人来去尝试去适配这个系统层的适配 , 这就有了一个 Triton。
然后你可以看 Triton,不管这个坊间传言是不是真的 ,Triton 其实确实非常适合做块状的稀疏的计算 。 不管 OpenAI 最后虽然可能没有用这个 Triton,但是确实现在 Triton 已经成为学术界如果你想做一个块状稀疏计算一个大家都会非常愿意选择的一个工具 。
所以这是 OpenAI 还 Open 的时候给社区带来的一些贡献是吗 ?
对 ,但其实其实你真的要再进去继续往下做 , 可能我觉得 DeepSeek 可能就是 Triton 这个事情它只是用户 , 就是编写代码的人友好 ,但它要真的再进一步的快 , 它有可能还会深入到 CUDA 去进一步的去做优化 。
当然其实我其实可能这个想补充一个点 , 就是我觉得 OpenAI 它有没有做稀疏注意力我不知道 ,但它一定在长文本上一定做了新的工作 ,因为你可以看到的就是以最近的一些它的发出来的一些工作嘛 , 就是像 Deep Research 等等 , 它在长文本上可以想象它能力一定是很强的 。
对 ,但只不过它可能没有去强调也没有去提 ,但我个人认为它我倾向于认为它内部其实是做过一些优化的 ,但是它具体用的什么技术我们其实不太清楚 。
对 。
亮点机制38:50
嗯 , 然后说到 introduction 的最后的一个总结啊 , 就是因为在这个部分大家都会放一些我具体提升了多少嘛 , 就是关于他们具体的效果上 NSA 和 MoBA 你们觉得比较有亮点的是什么 ?
我个人觉得 NSA 比较亮的还是推理 , 就是 decoding 的加速 , 就是因为这个我还是比较就是认为说现在长 CoT 是一个最关键的一个未来 。
那么基于这个未来我们要真的能够在训练阶段也好 , 然后在 RL 阶段也好 , 然后或者是直接在推理阶段也好 , 能够做到它的加速其实是非常关键的 。
好 , 那接下来我们就可以就进入到就是它这个具体的新的注意力机制的设计上 。 嗯 , 就在这部分两位看到的重点是什么呀 ?
刚才其实我们也提到了一下, 就是他们都是一个块状的 , 然后都是静态和动态有一些混合的啊 。
其实我个人看来其实注意力 Python 就是那个注意力层到底应该怎么去跟过往的 token 去算相关性这件事情 ,但我认为在这个阶段可能已经变得没那么重要了 。
就是因为本身它本来就只要是 learnable 的 , 可能在效果上的差异就不会有特别明显 。 对 , 所以我还是比较注重效率上的提升 , 就是它真的能在这个这个训练阶段加速 , 然后能够在 decoding 阶段有很明显的加速 。
对 , 所以其实我个人认为这个在算法层面他们的创新当然肯定是有创新的 ,但我个人认为可能没有那么的关键 。
我个人还是觉得效率已经成为现阶段 Transformer 要去做 RL scaling, 就是我要去要不断的去把 RL 训得越来越久 , 训得越来越过越来越多数据 , 它在这个长文本上的效率才是比较重要的问题 。
然后所以说真的能就是传统我们一直在讲这个推理阶段的这个这个效率嘛 ,但其实我们会我现在认为是推理阶段的效率已经没有那么的关键 , 尤其是我们之前测很多去测推理效率 , 那它其实这个会有一个区别 , 就是我们传统这个以往的论文去测推理效率都是一条数据一条数据去测 。
对 ,在这个过程和现在的我们要在训练阶段去做加速 , 它可能是一个 batch, 就是我一次要处理好多条数据 , 它的加速本质上是不太一样的 。
所以我个人这个对我自己的工作的批判就是它的加速落不下去 , 就是我认它我们当时只能做到一些推理加速 ,而且我没有在算子层面去做优化 。
所以这个 NSA 出来之后给我最大的冲击就是因为我当时也想把它做到训练阶段 , 当然我当时想做到训练阶段没有现在的认知就是长 CoT 很重要 , 我就觉得可能是不是啊预训练还是开销很大 , 所以我想把这个开销降下来 。
但其实我现在感觉更多的就是要在 RL 这个阶段把这个长的问题给解决掉 , 才是未来大模型它能够把这个 RL 持续下去一个比较关键的点 。
所以我还现在关注的就是这个加速这个理论加速比它真的能不能落得落到实际 , 然后他们两个都做得比较好 , 就是理论加速比真的就在 training 阶段 decoding 阶段都理论和实际都做得很很接近 。
那我们之前就是 InfLLM 当时可能理论加速比会比较高 ,但是真的实际加速比做得还是不够不够好 。
对 , 那接下来大家要去验证就是这两个论文里提出的理论加速比是否能落到实际 , 就是去搭一下这个架构 , 然后去试去测 , 对吧 ?
对 。
大家会自己去测 。 你们已经有开始类似的工作吗 ?
我看知乎上有人回答 NSA 已经有人复现了 。 哈哈 , 对 , 我看已经有人手很快已经把那个底层的那个那个算子也已经搭搭过一遍了 。
其实我也想补充问一下, 就是你们你们当时没有把它做到这个训练阶段和你们的资源就是卡的数量这些有关系吗 ?
是不是从训练阶段就加入稀疏注意力的改进 , 它对你的就是投入的要求也会比较多 ?
对 , 肯定是的 。 就是这个事情其实有两方面 , 一方面是资源的投入 , 就是我们学界要去搞预训练本身其实开销很大 , 这是一方面 。
当然我觉得这只是只是一很小的一方面 , 更多的一方面是当然这是我个人的原因啊 , 就是我一直在搞算法 ,但我可能不懂不懂英数啊 ,不懂底层算子 , 所以我当时想把它落到训练阶段的时候 , 我当时也想了 ,也跟别人讨论过 ,但我就会觉得稀疏这个东西天然的不适合 GPU, 然后最终这个想法就就就作罢了 。
但是看到 NSA 之后我会觉得啊其实还是自己认知的局限 , 就是我不懂不懂硬件不懂底层 , 所以这个想法到那里时候就结束了 。
但是他们就真的能够把它推进下去 。
那你当时没有和汪玉老师的实验室来讨论这个问题 ?
是是是 ,因为因为在当时就是我 24 年 2 月份那个论论文出来嘛 , 所以做的时候已经才 23 年, 当时长文本还没有那么受大家关注 。
所以当时其实可能少部分就是当时国内就当时就最简单的一个例子就是开源的模型 , 这个长度基本上当时还在 8K, 比较长的就是 mini 到 32K,但你可以看到现在的开源模型 128K 一兆就已经完全打不住了 。
所以当时长文本这件事情还没有那么多关注 , 所以也没有那么多同行可以聊 , 然后当时我也不太认识天宇 , 要不然就可以聊一聊 。
哈哈 , 对 。
嗯 , 补充一下, 就是我觉得从我角度来说 , 呃 ,其实学术界还有一个问题是学术界没有数据 。 如果我们要做一个训练的稀疏 ,并且我们要向大家证明这个是好用的 , 最需要的一个点就是说我要把它变得跟稠密的模型一样强 。
但问题是稠密的模型变那么强所用的数据学术界可能没有 , 然后包括训练的一些经验 , 一些小的 trick 学术界可能也不知道 。
那呃 , 你当然可以说我再重新训一个稍微用一样的训练方法 , 一样的数据训一个笨一点的稠密的和一个笨一点的稀疏的 ,但是这两个里面稀疏的可能稍微聪明一点 。
嗯 , 这样好像也能说明问题 ,但是其实在工业界的认可度可能相对来说就没有那么高 , 然后并且验证它所需要投入的验证成本也会非常高 。
所以可能我们当时做我们那篇工作的时候 , 我们最大的出发点就是说我就不要训练 , 我一定不要训练 ,因为其实虽然我们预训练可能说有很多算力问题 ,但是如果我们要做一个微调还是能做得起的 ,但我们就是说我们一定不要微调 , 我们就希望这个方法是一个即插即用的 , 任何人训练一个稠密的呃注意力之后都能拿我们这方法直接插上就用
。 还有一个就是说我我希望我们这个方法对这个原来的模型的一些偏好不会有什么改动 , 比如说因为你一旦训练你可能会改变模型回答的一个偏好 , 比如说它可能本来很礼貌对吧 , 你一训练它突然变得很机灵了 , 这个就我们不希望这样 。
所以说其实在我们做那个工作的时候 , 我们是故意的拿掉了训练的部分 。
对对对 , 我当时也是 , 就是我们当时最后那篇论文呈现出来在标题上就有一个非常明显的词叫 training free, 就不要训 。
对 , 就是我们当时就是还是受限于认知嘛 , 就是我们会当时没有考虑到的一个问题就是在这个训练阶段去引入长文本就是在稀疏性它的关键关键点 。
所以当时还是这个还没有长 CoT 的到来 。 那当时的话就是会认为说这个模型本身训长文模型本来也就分两个阶段 , 第一个阶段是短的 , 第二个阶段才会用比较少量的数据把它训长 。
那这个阶段的话其实它开销好像也没有那么大 , 就我们可能那我就还是训练这个在测测试阶段把它的能力性能再打上去 , 那是不是一个更关键的问题 。
但现在来看的话可能还是受限于当时的一个认知 , 只是现在在训练阶段去引入的话从效果上来说会更好 。
另一个现在也是真的需要 。
嗯 , 那具体到这个 NSA 和 MoBA 他们的这个注意力机制到底是怎么工作的上面 , 这个可以讲讲吗 ? 就比如他们的区别 。
我看 NSA 好像是我简单理解就是它是有三个方法对吧 ? 然后 MoBA 好像是一个方法吗 ?
嗯 , 我觉得共同的部分有两个大点是有点像的吧 。 呃 , 先说第一个大点就是他们都是我先从更高层次的去选一块我需要关注的过去的这个信息或者上下文吧 , 过去的上下文 。
它这个所谓一块就是一个 block level, 就我们刚刚提到很多嘛 , 这种选法可能两者有点细微的差别 ,但总之我是一定要先选我要关注哪一块 , 然后再把这一块的内容拿进来去关注这一块内部所有的细节 。
这是他们第一个可能是共同的一个想法 。 第二个想法就是大家都要关注离我当前这个生成的词最近的这些词 , 这个也是非常自然的 ,因为无论是说一个稠密的注意力天然就会表现出呃对于自己临近的词很关注 。
第二个就是说你从语言学的角度来说对吧 , 对我当前这个词到底要说什么话 , 可能影响最大的就是我刚刚十分钟前说或者十分钟以内说的话 , 一个小时之前我干了什么可能没有那么重要了 。
啊 , 还有一个共同的特点是它输入的每一个 query 的话 , 它选到的 KV 的 block 是不一样的 ,也就是说它是针对你当前在 decode 的哪一个词 , 它会给你选不同的上下文 。
其实或者直观理解呢 , 就是说呃我先把文本上上文切块 , 切块了之后呢每个块做一次相关性计算 , 然后把这个最相关的那些块拿出来之后再去做系列度的腾形 ,其实整体思路走序列啊 。
对 ,但只不过可能具体的就怎么选 , 然后会有一些区别 。 对 , 然后就或者是那个块的表示就是怎么跟这个这个这个上文这个块怎么去做相关性计算 , 那就可能要有一个块的表示 , 这个表示可能会有点细微的差距 。
对 , 所以其实整体上思路就思想上我觉得已经算是比较固定 , 包括这些学界 , 然后包括呃我自己的那个 InfLLM 其实思想都是这样 ,但就是这个还是我刚才提到那个点 , 思想很一致 ,但是他们他们能落下去这件事情很关键 , 就是把这个加速比给落到实际实处 , 落到真实的系统里面 , 这个很关键 。
因为我看 NLC 它是有三个这个筛选的机制嘛 , 然后 MoBA 是一个筛选的机制 , 就是可以说一个会更简单会更好吗 ?
还是没有没有这个推导 ?
NSA 应该也是两个吧 , 就是它看它画了三个图了 ,但它画的那三个图其实就是其实就是两个 , 一个是刚才提到的滑动窗口 , 还有一个就是选块选远距离的块 , 就是哪个块跟它相关 ,其实就是这两个 。MoBA 的话也是这两个吧 , 我理解 。
嗯 , 对 , 对 , 我记得是啊 ,其实应该差不太多 , 就是只不过他们可能画图的呈现上是有点区别的 。
实验评测48:54
对 , 那接下来我们可以讨论一下就是这个实验的部分啊 , 就是因为你做这种改进肯定都是要实验的嘛 , 然后这次正好也可以从 NSA 和 MoBA 他们选择去测什么 Benchmark, 我们可以来讲讲就说我们怎么来评判这些注意力的改进 , 它到底做得好不好 。
嗯 , 你们比较就是呃关注他们做的这些评测里的哪些评测的效果 ?
我个人最关注的是 NSA 在长推理的那个数学题上的一个效果 , 我最关注那一个小表其实反而是对 , 当然这个 pre-fitting 然后大海捞针等等这些长文本的常用测试集的话 ,其实可预见的应该都不会差 。
哈哈 , 现在啊 , 我个人更关注的是他们的训练曲线的呃下降情况 , 就是 NSA 的这个 Figure 4, 然后 MoBA 应该是 Figure 3。
我个人感觉是这样 , 就是说推理时候的能力就像刚刚呃朝军说的 , 就是总是能上去的 , 或者说如果上不去的话 , 我把稀疏度再降一降 , 让它更偏向稠密的话 , 总是能够跟稠密逐渐靠近的嘛 。
它实际上本质上是一个权衡的过程 , 或者说我们如果要考虑它的性能和效率的权衡 , 我们其实会关注它叫一个帕里托 , 它是不是在一个帕里托前沿上 ,也就是说跟我一样快的模型我是不是最聪明的 , 那跟我一样聪明的模型我是不是最快的 。
那那至于你如果我只看聪明这个维度 , 你总是可以往左靠一点 , 或者你总是可以在效率维度上往左靠或者往右靠 。
所以说呃这个我们倒没有那么在意 ,但是我觉得 training curve 这个事情是呃会告诉大家就是稀疏注意力训练这件事情到底靠不靠谱 , 到底我投入足够多的资源之后能不能变得和稠密注意力一样聪明 , 这件事情是我们之前不知道的 。
然后这两篇工作确实都给了一些比较积极的答案吧 , 就是大概率是能够最终趋向一致 , 甚至是说稀疏会更好 。
所以我总结一下, 就是你其实你们两个都更关注的是它对效率上的一些测试 ,而不是它那些性能上的一些测试 , 对吧 ?
因为性能上其实大家学界可能都能想到 , 就是它是可以到一个就是你刚刚说的嘛 , 性能我可以让它更聪明一点啊 。
应该这么说 , 性能的话其实跟 full attention 的话它可能拉不开拉不开差距 , 就能跟它 comparable 就已经就是就达到目标了 。
所以其实就是在基本上就是说我在不不损失性能的前提下我能做的有多快 。
嗯 , 你们自己在做实验的时候 , 就是你你们接下来你们可能会比较重点的去关注什么呀 ?
哎 ,因为我感觉这个核心还是看看你改进了些啥 。 对 ,其实就是假设你就比如说啊你这 attention 的改进是改进缓存 , 那其实你可能就要跟 MLA 来比对吧 , 然后就是会在一些比较通用的这个生成也好 , 这个 decoding 这个 pre-fitting 阶段也好 , 都要去比 。
哎 , 你假设还是做稀疏 attention, 那你不这个这个自然的现在来说肯定就要跟 NSA 去比 。 但是你说 Benchmark 的话 , 个人还是坚持那个观点 , 长 CoT 生成 。
哈哈 , 对 ,在这个点上的效果和速度 。
哦 , 对 , 我我想问一下就长 CoT 生成有什么比较好的 Benchmark 现在 ?
其实假设你只是就是不关注长 CoT 本身质量 , 你就只关注它能不能给模型带来增益的话 ,其实就还是之前 reasoning 那些 Benchmark 就可以了 。
只关心质量 ,不关心是否给模型带来增益 , 这个是指什么 ? 就只关心质量我大概能理解 , 就是就是它最后的能力嘛 。
对 ,其实你就最简单例子就是 RE0 对吧 ? 它不是论文里面也提到嘛 ,RE0 它的思维链是不可读的 , 甚至会有很多 mixed language, 然后那我们的稀疏注意力有可能会改变它的这个 Python, 比如说可能让它变得更不可读 , 对吧 ?
当然这是有可能啊 , 就不一定 。 那在这个过程当中就是看你关注些什么 , 假如你还是希望这个长思维链是可读的 , 然后那有可能这个事情就是就是呃这个这个你可能你的 Benchmark 就得改一改 。
那假设你就是只是认为长思维链只是一个过程 , 对吧 ? 那可能我们就还是测最终你给人的那个输出 , 它的效果是怎么样的就可以了 。
当长思维链不可读的时候 , 你怎么看一个长思维链的好和坏 ?
哦 , 就是我意思就是稀疏 attention 它会不会影响可读性 , 就是当然现在这个是一个未知数了 , 就看你关不关注 。
假如你关注的话 , 你可能就得测测它的这个对可读性的影响 ,但是你要不关注的话其实就无所谓 。
嗯 , 所以现在还没有一个这样的 Benchmark, 就可能如果你要测的话 , 就你得自己去 。
你说可读性这件事 。
对对对 , 需要自己构造一个这样的 Benchmark。
对 , 就可读性现在应该叫没有这个指标 , 应该是就可能一个 Benchmark 它是由数据和评测指标两部分构成 , 可能现在有这个数据但是没这个指标 。
对对 , 呃 , 那我就是 for laugh 这个问题就是关于看什么样的 Benchmark 的点 , 就是我感觉就是模就是特别是在长文本领域吧 , 大家做的不同阶段其实关注的东西是不太一样 。
我们自己就是我自己喜欢就是说模型的能力 , 我们就说一个是说能不能说人话 , 第二个是说能不能说真话 。
说人话的意思就是你模型别给我说一些什么 , 比如不同语言给我交杂在一起了 , 或者说你甚至输出一些奇怪的字符都不是一个完整的句子 , 这叫说人话 。
这个事情是 streaming LM 那批工作是最早期的大模型的稀疏注意力工作尝试解决的问题 , 就是说当我的输入长度超出了模型训练时候看过的长度的时候 , 我怎么能保证模型还能够顺畅的说人话 。
那对于这种问题我们就会比较常看的指标就是 perplexity, 嗯 , 或者就是所谓的 training loss 一般也是 perplexity, 就是说看模型说的这个话呢跟人类写的这些东西它的这个 match 程度是怎么样的 。
嗯 , 那这里其实有一个潜在的问题 , 就是说你如果不匹配不代表你说的不对 , 对吧 ? 有可能模型比人说的还好呢 ,但是你这样的话如果一旦不匹配你的分数其实是下降的 。
那所以针对这个问题 , 或者说进入第二阶段的需求 , 就是说让模型说真话 , 比如说你问一个你给了一个很长的上下上下文啊 , 爸爸的爸爸是爷爷 , 对吧 ?
然后你现在爸爸的你告诉你呃 A 的爸爸是 B,B 的爸爸是 C,C 的爸爸是 D, 现在你问 A 的呃这个是曾祖父了是吧 ?
是谁啊 ? 大概这个意思吧 。 嗯 , 看这个模型能不能打对 , 这就是说真话 。 嗯 , 那对于这种评测的话 , 我们指标就换一换了 , 对吧 ?
就会变成说不管你以什么形式把它的名字说出来了 , 你大写你说了名还是说了姓 , 说了大写还是小写我不管 , 你只要能把这个人找对就行了 。
所以这这方面的话就是比如说这个准确率的指标 , 看你能不能说真话 。 呃 , 这对应的发展阶段就是在上一个阶段肯定是首先你要能说人话你才能说真话嘛 。
所以在上一个阶段之后, 嗯 , 现在比如说我可能 MoA 那篇文章关注 , 或者说现在大家都更关注的就是模型实际的能力怎么样 。
然后再下一阶段可能就是朝军刚刚说的这个思维链能力 , 就是说不是你说的所有话都有用 , 对吧 ?
你想的那个部分我随便你怎么想 , 你只要能给我想对就行了 。 我我看的是你最终想完之后你说出来这个结果对不对 。
嗯 , 那这个可能又是下一个阶段大家会更关注 。
我有一个小的问题啊 , 就是比如说在这个 NSA 和 MoBA 里面 ,MoBA 是做了那个消融实验 , 我放了些消融实验的结果 , 然后呃 NSA 可能没有做这个 , 就做消融实验一般是为了什么呀 ?
是为了一个一个去试中间某一个部分哪最有效是吗 ?
对对对 , 就是消融实验就是一个 , 就是你可能会有很多个机制 , 然后一个一个把它去掉之后效果会怎么样 。
那注意力机制一般需要做这个吗 ? 就常规来说去验证的时候 。
就看实验思路 , 一般来说就是看假设你的机制很很复杂 , 对吧 ? 那可能就得一个一个扒了试一试 , 再假如你的机制很简单 , 那其实就无就没有必要了 。
就是可能你把它那个机制一拿掉 , 它就是变成 full attention 了 。 就是而且其实可以这个认为其实你看 NSA 它的核心其实就是一个是底层算子加速嘛 , 啊 , 或者还有一个是这种稀疏 attention, 那就是稀疏 attention 其实只要比效果 , 就是可 full attention 去比效果 , 然后这个底层算子加速的话可能就是比速度 , 那其实它就是会分成两章来分两章来写 , 就不会以消融实验的
这种形式去做呈现 。
我看那个 NSA 里面还写了很多他们核心设计的一些东西 , 这个算是写的比较详细了吗 ? 就可以让社区大家可以 。
对对 ,其实写的我觉得还是挺详细的 , 就整个算法流程 , 然后就是设计思路还是写的比较多的 。
所以你说手快的人已经浮现出来了 , 对吧 ?
对 , 就我看知乎上有人浮现出来了 。 哈哈 , 就是大家还是挺这个挺挺活跃的 。
你的意思是知乎上浮现出来的不一定是真的浮现了 ,是这个意思吗 ?
也不是 , 就是浮现肯定就是到底效果怎么样还得验嘛 。 所以就是现在不管是任何一个人, 包括 DeepSeek 其实放上 NSA, 那它能不能就是这个在我们实际使用的过程当中落下来 , 我们也都得做实际的验证 ,不可盲信 。
未来方向57:17
最后我们可以总结一下就注意力机制的一些更多尝试啊 , 就是再往下的话 , 你们觉得注意力机制有哪些比较值得关注的探索方向 ?
其实刚才也讲到了一些 , 比如说这个长思维链相关的一些注意力机制的优化 。
其实我觉得啊 , 就是可能还有一个点是稀疏注意力机制的话 , 它的存储复杂度其实是没有改变的嘛 , 就是它还是需要把所有东西都存下来 。
那这件事情的话其实可以再进一步的去做思考 , 就是说这个我们人脑它的存储效率其实可能是还是比较高效的 , 就是说我也不需要把过往两个小时每一字一句都存下来 , 那就是这种存储效率是不是也能再改进一下 。
当然这个改进到极致可能就是 RNN 了 , 就是 O1, 就是固定大小的存储 ,但这种固定大小的存储是不是又可行呢 ?
那就相当于是现在就处于两头 , 稀疏注意力的存储就是属于全存 , 然后 RNN 就只有只存固定大小的 , 然后 RNN 就可能会有能力上的问题 。
这个稀疏 attention 就迟早会有一天可能会这个面临这个存储上的问题 , 对吧 ? 那在这样两个极端上的话 ,有没有可能有一个缓和 ?
迟早有一天面临存储的问题 , 就是因为文本还会上下文还会继续变长 。
对对对对对 , 或者可以认为的一个问题就是假设现在这个模型它可能长 CoT, 它只需要解决解决一个数学题 , 对吧 ?
就已经是达到大家的预期 。 但是大模型未来这种思维方式 , 它肯定是这个要运用到实际 。 那假设这个这个这个按照这个 OpenAI 的规划嘛 , 下一步就是要做创新 , 那就作为一个科学家 , 或者进一步的就是假设它就是这个大模型未来就要成为一个博士生 , 就是做科研 。
那我们做科研的过程当中就是从做选题到做实验到最后这个写 paper, 整个过程会历时好几个月 , 甚至上年过年一两年的时间 。
那这一两年的时间那这个存储都存下来 , 那肯定有问题嘛 , 对吧 ? 所以其实就是现阶段来说可能一万两万能能存肯定也能存 ,但是未来这个过程肯定是需要被解决的 。
这个也可以请天宇补充一下, 就是存储这件事情它可以从硬件上去做一些什么优化吗 ?
呃 , 这个其实是非常难的 , 就是我们看就是计算和存储发展的速度来说 , 计算这件事情发展的速度其实非常快 , 尤其是 NVIDIA 把它推的非常快 , 每个每年可能这个算力可能会有一个比如说翻倍 , 甚至是它这个速度其实基本上能够满足大模型的需要 。
但是存储就是显存这件事情其实发展是非常非常慢的 , 可以看到呃从可能 NVIDIA 几年前的芯片到它迭代了这么长时间 , 可能算力可能已经乘了 10 倍了 , 存储可能不知道还有没有乘乘两倍呢 。
所以说存储这件事情在硬件上本质上是会有一点发展上是比较慢的 。
它这个是显存和计算的本身的物理结 , 就是它承载的半导体的那个物理结构的差异导致的什么 ?
对 ,因为记就是快速的存储是非常非常占芯片的面积的 。 就现在的这个芯片可能很多很大的面积都是用来做这个快速存储了 。
嗯 , 你如果要进一步增大的话 , 你就需要这个芯片面积再增大 ,但是芯片面积再增大就意味着它的良率是会衰减的非常快 , 那它的成本就会变得非常非常高 。
嗯 , 那这样的话大家可能是觉得不太能接受的 。
而且刚才朝军说的这个就是显存的限制 , 就它也并不涉及这个存储和计算之间的通通信和搬数据 , 它不是这个限制是吧 ?
就跟这没关系 。
就是这当然肯定也是就是速会影响速度嘛 ,但是我刚才讨论是上限的问题 。
哦 , 就是本身它存多少东西的那个限制 。
对对对 ,但当然可能存储算是比较便宜 , 就是可能我不一定用显存 , 我可以再利用上计算机内存啊 , 或者是进一步的直接用用上硬盘 ,但是可能是可行的 ,但可能这个又会有速度上的问题 。
所以就是这个问题未来怎么解决可能是值得思考的 ,因为或者是说就是直接直观一点就是人也不需要那么多的存储嘛 , 就是我们脑子里面可能对一件事情可能不会超过 100G 的存储吧 , 或者是不会超过 40G 的存储 ,有没有可能再进一步的像人这个机制再靠近一点 , 就是我什么时候东西该存 , 什么东西不该存 , 然后它是有一个动态的决策的 。
那这个其实可能是下一步的一个点 , 就是稀疏注意力还是只是解决了计算上的问题 , 就是我计算可以稀疏的 ,但是我的存储没改啊 ,但这个我觉得可能未来是一个比较重要的点 ,因为我觉得 AGI 的实现未来一定要做科研吧 。
哈哈 , 一定要去探索知识的边界吧 。 那就是以这个问题为例的话 , 那我们现在做一做一篇研究 , 就是得好几个月上一年的时间 , 那现在的模型显然做不了这件事情啊 , 那它怎么能做 ?
对 , 我觉得这个也得改得改 。
对 , 就关于这个点我也可以再补充一下, 就是说呃我觉得这个提的非常好 , 就是说未来一定是一定会有大量的这个文本来进来 ,但是它是不是一定在注意力机制这个层面做改动 , 我觉得倒是不一定的 。
举个最简单的例子 , 就是假设我们还以这个做科研为例吧 , 嗯 , 可能我会读 100 篇 paper, 那 100 篇 paper 加起来上下文已经超级长了 , 那现在的注意力机制可能解决不了 ,但是我可以怎么样 ?
我读一篇 paper, 我给你写一个 20 个字的总结 , 读一篇 paper 我写个 20 字的总结 , 那 100 篇也没多长 ,2,000 个字而已 。
我去看这些总结 , 对吧 ? 我再决定我到底要去读哪哪个 paper 的呃工作 。 嗯 , 这种就属于是在注意力机制上更上一层 , 可能是在就是通用算法层或者说生成范式上的改动 , 这些其实和注意力机制都在解决长文本的问题 , 只不过你放在哪个阶段去做 。
我们现在说的这个长文本 , 它是目前阶段看好还是语言为主啊 ? 它未来是不是也会就变成个多模态的啊 ?
那我感觉必然吧 , 必然趋势 。So, 那它就是一个实时的流式模型 , 那这种流式假设啊 , 假设它的记忆非常的有限 , 它就只能记 10 秒钟的内容 , 那这个流式可能就没什么用了 , 那可能它就不需要流这种流式的输入 ,但它假设能记一天一年的内容 , 那它可能就能成为我们一个很好的一个助手 。
对 ,其实记忆本身就它的记忆存储这个提升 ,其实可能会带来一些比较质的改变 。 我个人感觉其实我们自己现在就正在手头上正在探索一些关于多模态注意力的这个特点 。
我刚也是想问 , 就说如果多模态的话 , 注意力可能需要怎么去优化啊 ?
我感觉主要是两个点吧 。 第一个点就是你模态变多的时候 ,其实它对上下文的长度是一个非常大的增长 。
比如说呃我们之前看过一个数据吧 , 比如说呃如果说纯文本的话 , 你说那个序列长度是吧 ? 对 , 序列长度 。
那这个其实大家可以估一下嘛 , 就是一个就是一张图片 , 它大概可能就得 100 多个 token, 就看你那个分辨率 , 假如你分辨率越高 , 这个 token 数量就会越多 。
那你一秒钟假设啊 , 就是以极端的场景 , 一秒钟 24 帧的话 , 那你一秒钟要一一帧 100 个 token, 那你就是得一秒就是 2,400, 那你 10 秒钟就是 24,000, 对吧 ?
那你至少得要有一分钟一小时吧 , 那这个量就一直上一下上去了 。 当然现在的做法是更多的是抽帧 , 就是一秒钟就一帧 , 或者 10 秒钟就一帧 , 那这个过程就是你抽帧抽出来效果就很差嘛 , 对吧 ?
就是我 10 秒钟只能看到一个图片的内容 , 那就没有这种视频的这种连续的流式信息了 。 呃 , 我们就对标人类嘛 , 比如说人类的话 , 它一个小时大概能读 18K 这么多文本 ,但是人类一个小时的音频 , 我听一个小时音频如果转换成模型的输入的话 , 就有 90K 了 。
如果我看一个小时的视频 ,其实我是一帧每秒的看的话 , 转换成模型的输入就有 100 万了 。 所以说你看这个模态本身的信息比较丰富的时候 , 同样对标人类一个小时所需要的量 , 对吧 ?
模型需要处理的量是越来越大的 。 所以说多模态本身其实是带来一个长度的进一步增长 。 而且我再举个更形象的例子 , 比如说一个小时的视频 ,在我们看来就是半部电影 ,其实不算很长 , 对吧 ?
但它对应的这个 token 量就是 100 万 ,100 万的文本是什么概念 ? 哈利波特全集加起来就是 12345670, 加起来好像也差不多也就 100 万 。
所以说你可以看差别是非常非常大的 。 第二个点就是除了输入更长 , 不同的模态它带来其实是注意力的那个稀疏模式可能会有点变化 。
嗯 , 比如说对文本来说 , 最常见的稀疏模式就是说所有的文本都是看上一个词 , 或者说看邻近的几个词 。
嗯 ,但是比如说对于一个图片来说啊 , 对于一个视频来说吧 , 它会比如说我可能会需要关注不同帧的相同位置 , 对吧 ?
我要我要看比如说某个球随时间是怎么怎么动的 , 那我是不是要看不同帧的一个差不多相同的位置 ?
那这种注意力的模式就不是总是看相邻的模式 ,而是它是会跳 , 比如说每隔 220 个 token 会看一下, 每隔 220 个 token 看一下 。
那这种不同的模式其实对你注意力的设计也是有不同的影响的 。
那它可能对计算的特性需求也不一样 , 对吧 ? 这个现在呃学术界或者工业界有些什么新的成果吗 ?
有吧 , 一些什么应该比较早就有人研究了 , 什么 KV Compression,KV Eviction 这些 , 就是和多模态的注意力相关的 。 对 , 就比如说图片就是可能会有一些特性嘛 , 比如说图片相邻帧基本上内容差不多嘛 , 就一些微小的改变 , 那就可能有一些就是它可能一些 token 的合并 , 甚至一些 token 可以丢掉吧 。
对 , 我们最近刚开源了一个啊 ,不是刚对 , 刚开源了一个叫 FrameFusion, 呃它虽然不是处理注意力 ,但它也是希望处理长 context 下的视频理解的问题 。
然后它那个里面就是分析了一些呃就是从因为现在注意力丢掉 , 我们更多的是从重要性的角度来丢 , 就是说我觉得不重要的地方我可以丢掉 , 对吧 ?
但视频里它不是这样 , 视频里是说有些东西虽然很重要 ,但它每一帧里都出现 , 你不需要看这么多次 。
对 , 所以说我们这个工作更多是从统一性出发 , 我们去把一些我们只会留下重要且独特的部分 , 重复的部分和不重要的部分都丢掉 。
嗯 , 就是所以最近做了一个这方面的工作 。 嗯 , 那除了刚才我们提到的就是这个呃长思维链带来的注意力机制的改进 , 还有多模态之外, 你们觉得还有什么方向啊 ?
注意力优化的方向或者趋势 ?
更多方向1:07:03
刚才说到存储压缩 , 可能是哦 , 对对对 , 刚刚也说了啊 , 存储压缩 。 嗯 , 还有的话 ,其实可能还就是你要说很多小的点 ,其实应该还是会有比较多 , 就比如比如说这种稀疏 , 可以可能这个在硬件层面可能还能再继续优化 , 对吧 ?
或者是说刚才提到的这个这个更多的利用计算机的内存 , 就是做一些这种 offloading, 就是卸载 , 就是这个显存和内存的这么一个交换 , 对吧 ?
就是然后以及可以进一步的就是这种稀疏 attention, 那未来会不会跟更多的推理加速的算法 , 比如投机采样等等这些结合在一起 。
但我觉得可能都是一些小的工程点了 。 嗯啊 ,其实可能还是思考方式 , 我觉得可能还是面向 AGI 的未来 , 我们有什么本本质的问题需要再去改变啊 , 我觉得可能但这个问题可能就不不会很多了 。
就 AGI 的大问题已经不会很多了 。
嗯 , 就是在光说注意力这个问题上的话 , 它可能就更多的还是刚才提到存储上的问题 。 我个人感觉就是单纯做思想上的实验上来说的话 , 就让它去做科研的话 , 它已经有很强的这种这种这种思考能力了 , 对吧 ?
它有很强的逻辑推理能力 , 当然它这个还会有更多的一些新的能力要做了 。 就单纯从注意力机制上来说 , 感觉好像其实就是这种这种存储 ,其实或者说叫记忆 , 它其实比较关键 。
嗯啊 ,但这个东西具体该怎么做 , 可能就是一个比较大的问题了 。
你觉得离我们就我们现在已经看到 , 比如像 NSA、MoBA 这些 seeker attention, 到我们理想中的注意力其实还有多大差距啊 ?
哈哈哈 , 我觉得我们我们理想总是非常非常理想的 。其实我感觉就是稀疏注意力这整个大方向来说 ,其实对注意力的改动相对来说还是比较可以说没有那么激进的 。
就是相比于线性注意力那一分支来说 , 它的改动其实比较小的 , 然后跟现有的很多方法其实也都是直接能搭的上的 。
那其实呃 ,但是可能线性注意力的话 , 大家就是可能描绘了一个更美好的蓝图 , 就是说从呃 scanning, 就是从输入 scanning law 的角度来说 , 稀疏注意力它其实是减掉了一个长 , 它除了一个常数的比例 , 呃 ,但是但是总有一天它越来越长的时候 , 它还是会爆掉 。
但是线性注意力它描绘的蓝图是说我的增长速度是比你慢的 , 可能比如说我在 500 多个 token 比较少的时候 , 对吧 ?
我比你慢一点 ,但是当你无限的增长的时候 , 你使你的速度一定会超过我 , 或者我的速度增长速度一定会比你慢 。
这个是呃线性注意力给我们描绘的蓝图 。 所以说可能理想还是线性注意力那种 , 甚至是能能不能比线性更少 , 对吧 ?
但是呃现在看来 , 可能大家用的比较多的还是常识比较多的还是稀疏注意力 。 就可能现在很多学术界的探索还是证明 , 就是说纯线性的还是效果上不太行 , 就是你需要还是需要混合一些 。
或者对 , 或者我觉得这个问题啊 , 注意力机制的更多尝试 , 我觉得还是可能再往上一层 , 就是长文本或者是长序列记忆这方面的更多的尝试 。
注意力本身需不需需要改 , 我觉得可能还是围绕着记忆本身 。 对 , 就是还是得从能力出发去思考这些问题 。
就可能本身这个这个机制本身可能没啥没啥太多要改的了 。 哈哈 。
嗯 , 记忆和长文本它的区别是什么样 ? 因为它相关性好像是比较明显的 , 对吧 ?
嗯 , 这记忆我觉得认为可能还是一种新的架构 , 就是从架构层面的一个新的改进和尝试吧 。 就是说长文本是输入嘛 , 就是我要去处理很长的序 , 很长的序列 , 然后注意力机制是这个东西输进来之后我要怎么做处理 。
那么记忆可能更多的就是说这个 , 比如说很长的序列输入输入进来 , 然后我这个模型需要不断的这个这个去处理 , 接受新的输入 。
那么接受新的输入 , 我就要选择哪些东西要记住 , 哪些东西不要记住 , 然后把要记住的东西和我当前的输入一起输给传这个注意力机制也好 , 输给传统也好 , 它去做处理 。
对 , 所以感觉上可能确实就是注意力机制更多就是记忆和输入来了 , 我怎么去处理 , 然后记忆本身更关注哪些东西要记 , 哪些东西不记 , 然后长序列就是输入啊 , 整个的输入我理解应该是这样一个关系 。
可能对 , 就我感觉我们就是汪玉老师特别喜欢说的一个例子 , 就是 y 等于 f 的 x, 就是说神经网络就是一个 y 等于 f 的 x,x 就是输入 ,y 就是输出 ,f 就是这个网络 。
现在的趋势就是 x 越变越长 , 这是多模态可能会带来的 , 还有一个趋势是 y 越变越长 , 这是思维链会带来的 。f 要干嘛 ?f 就是说 x 变长 ,y 变长的时候 , 一个我怎么算的快啊 , 第二个我怎么在这么长这么长的情况下, 我也能正确的输入这个 x, 正确的输出你要的 y。
所以这就是大家努力的总体目标 。 至于这个 f 怎么实现 , 这两点就是注意力改进肯定是其中的方法之一 ,但是也有其他的方法能够达到同样的目的 。
记忆与应用1:11:45
他这个解释挺好的啊 , 还比较简单啊 , 就是中学数学也能听懂 。 哈哈哈 , 嗯 , 那你们觉得当这个记忆能力啊 ,也也可能也算上跟它相关的这个长文本推理这些 , 它解决的比较好之后, 又会解锁一些什么新的研发方向或者应用方向 ?
其实我觉得记忆本身是架构层面的改进 , 架构层面还是要服务于实际的能力的需求 。 就跟我们现在为什么在这里讨论稀疏 attention, 可能还是因为长 CoT 未来一定会越来越长 , 所以长文本进行一定的解决 , 然后所以我们会去讨论架构层面的这种效率上的问题 。
记忆也是一样的 , 就假设给我一个无限长的 , 就是无限大显存 , 然后缓存也没有任何时间 , 然后无限大算力的一个 GPU, 那我就不考虑记忆了 , 我就全全存着呗 , 对吧 ?
所以其实效率我觉得这个架构层面的问题一定是解决效率问题 ,但效率上的问题一定是服务于功能上的问题 。
那就是说未来它这个功能 , 就是比如说我们真的想要学像这个模型 , 这个模型去做科研 , 那这个记忆问题肯定要被解决掉 。
那其实让它去做科研 , 现在长 CoT 是不是就已经够了 ? 那显然也不够 。 所以其实这就可能是两个层面的 , 就是架构层面解决效率 , 然后在未来学习机制层面 , 我们要去解决它各种各样的这种认知上的能力的改变 。
对 ,因为就我博士开题的题目其实就是跟长序列相关嘛 , 所以当时我们其实也整理了一些 , 就是说长序列真的能支持之后, 可能带来什么好的点 。
就我当时是 , 就是我们当时整理的就是说模态知识情感和能力啊 , 模态就是我们刚刚其实聊了很多了 ,是我能够去处理各种各样丰富的需要更长输入的模态 。
呃 , 情感就是我们希望模型能够像人一样 , 你能有一生的记忆 , 这样的话 , 对吧 ? 我跟你聊天的时候 , 你始终知道我们很久很久以前发生了什么事情 。
知识就是说它可能可以类似于代替像搜索引擎的角色 , 就是你有整个互联网的记忆 , 那我无论问你什么问题 , 对吧 ?
你都能给我准确的 、 最新的 、 最相关的个性化的回答 。 然后能力就是刚刚超军说的 , 就是说长 CoT 的能力 , 我能够去深入的去思考 , 然后给你一个可能更加合理的答案 。
我觉得这四个方面都是需要依托这个长文本能力 、 长序列能力吧 。
就是长序列应该是这些东西的组成部分之一 ,但是为了实现它 , 还是需要模型能力上还是要有些精进 。
对对 , 所以就单纯依赖长文本这件事情 , 可能想象空间没有那么的大 。 那就接下来就可能就让它一直思考呗 , 就思考很长很深 , 那就可能数学题能解的越来越难 , 对吧 ?
但可能真实的应用场景里面 , 还是需要它有一些新能力的提升 。
所以总结来说 , 就是为什么大家现在都在看起来都在卷 attention, 大家的注意力都交汇到注意力上 。
嗯嗯嗯 , 对 ,是因为就是有几个事叠加 , 对吧 ? 就一个是我们需要越来越多的处理长文本的能力 , 包括多模态 ,其实你转化到序列里 , 它也是一个很长的东西 。
然后另一方面就是因为推理模型的这个范式出现之后, 要去处理更长的思维链 , 这个也需要一个更好的 、 效率更高的一个注意力机制 。
第三个可能就是再往后的一些一些新的东西的架构的变化 , 或者能力的变化 ,也都是要以这个为一个比较重要的模块去改进 。
我觉得这个能力应该是属于已经是属于 AGI 终极能力了 。 我觉得就是你其实可能想象一个问题是说 , 科研能力本身其实是一个非常综合的 , 就是就是 AGI 我们现在就只讨论智能能力 , 就是智能本身吧 。
AGI想象1:14:51
就是可能比如说像这个情商 , 就是比如说呃 , 你坐在我的对面 , 我能感受到你的情绪 , 这我觉得可能不包含在这个智力的范畴 , 这可能是一种情商的范畴 。
就单纯讨论智力这件事情来说 , 做科研和新知识的发现 , 它一定是智力的就是最终追求 。 我理解 , 对 , 我不知道大家同不同意这个观点 , 反正这是我的理解 。
但就是呃 , 可能就是说 AGI 在最终形态上是需要做到这件事情的 ,因为有了这个科研能力 , 或者说是有了这种就是探索新知识的能力 , 它能做些什么呢 ?
就比如说它能做到一件事情 , 就是 AI 它能够去拓展人类知识的边界 , 然后 AI 它能够去充分的去 , 就是现在 AI 拥有的知识还是人类的知识 , 就人类已经总结好的语言知识都放在一卷语料里面 , 它学到了 ,但是它未来它要突破这个新的范式 ,因为它要这个去探索新的人类的这个探索新的呃 , 这个宇宙的奥秘 , 对吧 ?
那它就得要有这种科研的能力 。 那在科研能力它掌握科研能力之后, 它就代表着它会有很多这种认知能力 , 比如说像这个思考能力 , 对吧 ?
那就是这个解解数学题 , 解解这个高中题 , 那这个肯定就很简单了 。 那就是这个 , 或者是说我的记忆能力 , 对吧 ?
在科研里面一定要体现 。 那么进一步的 , 比如说我的这种高效的学习能力 , 对吧 ? 那它也是要有体现的 。
所以我认为就是科研本身可可能可以认为是 AGI 发展到比较高端水平的时候 , 它的一个集中的体现 。
反而在 OpenAI 的这个 roadmap 里 , 它是第四个阶段嘛 , 它是在 agent 之后的一个阶段 ,是创新者 , 然后再后面一个阶段是 organization。
对 ,但我其实觉得 organization 和创新本身并不一定 organization 是要在创新之后的 , 对吧 ? 其实 organization 有可能在之前 ,因为就是说创新这件事情 , 就是或者可以认为说 organization 它是不是一个非常高智能水平才能做的事情 。
那比如说蚂蚁之间也能够有 organization, 对吧 ? 它们之间也能写作 , 那这个能力其实可能并不需要依托一个非常高的智能 。
所以这个观点我倒不一定认同 OpenAI, 就是说 organization 是 AGI 最后一步 。 所以我觉得创新这件事情就是颠覆范式 , 就范式颠覆性的知识探索能力 ,其实可能反而反而我觉得就是一定是最高智能的这个生物 , 就是从我们人类来看 , 最高智能的生物才具备的 。
对 , 我觉得这可能是两个有点像是两个发展方向 , 一个是单体智能越来越强 , 一个是从单体智能向多体的合作来发展 。
所以谁先发展其实不一定嘛 。 然后而且我也非常赞同刚刚朝军说的这个科研能力 , 我觉得它其实意味着一个 AI 可以自我改进的一个情况 ,但现在这种情况我们是没有看到的 。
就是说举个例子 , 就是大家会说我能不能让 AI 让 L 大模型自己生成一些文本 , 然后再自己训练自己 , 它是不是越训练就越聪明 , 越训练就越聪明 , 现在发现不行 , 这样训练完的大模型直接就会崩溃崩溃掉 。
嗯 ,但如果你真的能做科研的话 ,其实是有希望能够实现说它能够自己迭代 , 自己升级 , 那这样的话其实就是有可能会出现超越人类智能的 。
嗯 , 对 。
自己迭代就是它自己想到一些新的 , 呃 , 比如说一些计算机制 , 然后它自己写代码去实现 , 这现在有看到吗 ?
现在没有 , 现在没看到 , 现在没看到 。 但我觉得是 AGI 未来吧 , 就应该是说 , 就比如说 AGI 其实最简单的就是 , 那比如说这个我们的工作全都被它取代掉了之后, 那它这个这个总会发现自己的缺陷嘛 , 那它就得改自己啊 。
那它为什么会有这个动机了 ? 这个动机 。
对 , 那这个就是 AGI 的这个未来了 , 就得想一个问题 , 那这个 AGI 到底它的真实动机会是什么 ? 就它这个就是只深植于 AI 它的脑子里面的动机会是什么 ,其实现在大家不清楚 。
我觉得它现在肯定没有动机嘛 。
对 , 它现在是没有动机的 。 动机是人给它的一些指令 , 对吧 ? 那它什么情况下它才会有 , 就一个系统才会有动机了 ?
人可以给它这样的动机 。 现在的 AI 就是从 R1, 就 R1 这个范式之前的 AI, 它的动机就是学人说话 , 它叫 next token prediction, 下一个是预测 , 它最大动机就是学人说话 。
那其实是一个人给它的优化目标 , 对 , 一个学习目标 。 嗯 ,但是 R1 给了一个新的目标 , 就说你把我这个题做对 , 我不管你想法是不是跟人一样 , 你做题步骤是不是跟人一样 , 你反正把我这个题做对了 。
那这不是 O1 给的吗 ?
啊 , 对对对 ,O1,O1,R1 都是 , 都是一个 。 对对对 , 就是 O1 先给的啊 。 嗯 , 对对 , 然后那你觉得你觉得 R1 zero 给了什么新的目标 ?
这就是 R1 zero 的目标吧 , 就是 R1 zero 和一个 O1 应该可以认为是等价的产品 。
R1 和 O1, 对 ,在这在这方面是类似的 , 只不过可能 R1 就是那个 zero, 它对学人说话这个点要求更低了 , 就是 R1 它是先给了一些人怎么思考的呃例子来让它训练 ,R1 zero 是完全没有给这样的例子 , 直接就让你你随便想吧 。
所以说它想的过程跟人差的就更远 ,但是结果上都能给 。 嗯 , 你刚说之后会可能会是什么 ?
之后的话就是看人类想怎么样了 , 比如说人类就是想说你要能自我迭代 , 那我当然也可以设计一个损失 , 告诉告诉模型你的目标就是自我迭代 , 你现在越聪明越好 。
嗯 , 那这个想象也有点复杂 ,因为什么叫聪明啊 , 好像还是人得给它定义一下啊 。
当然了 ,其实很难讲 ,因为人人怎么定义自己的智能呢 ?
我觉得它是有共识 , 然后每个人可能想的又不太一样 。其实智能本身的定义到现在来说都不是很清楚 。
对 ,也是有分歧的 , 包括人, 就是别说智能 , 就是人工智能的定义到现在都很有分歧 。 就比如说这个这支话筒 , 对吧 ?
它能够帮我把声音录进去 , 那它能帮我完成这个 task, 那它是不是有智能 ?
那好像在一般人的理解里就不是智能吧 ?
对啊 ,但是你再往前走 , 智能手机 , 你看我们强调的智能手机 , 它能实现什么智能的功能呢 ?
在最开始的 iPhone,iPhone 那个里面 , 它不就是能帮我去这个做出很多 app, 上面有很多的 app 吗 ? 对吧 ? 然后它这个相比于之前的手机 , 它的智能点在哪呢 ?
那我觉得是翻译的问题 ,是不是 ? 因为手机不是 smartphone, 智能手机是 smartphone。
对 。
但是 smart 和 intelligence 这个在英文里它可能不是一个意思 , 中文是这样翻译的啊 。
嗯 , 那或者再举个例子 , 人脸识别 , 大家肯定认为它是人工智能的应用嘛 , 那为什么它是智能 ?
它只能也只能帮我识别人脸啊 , 跟这个话筒一样 , 只能帮我完成一个任务 。 为什么话筒不是智能 , 人脸识别是智能 ?
对吧 ? 其实人类到现在为止对智能的定义本身都不够不够完善 , 所以其实在这件事情上我倾向于认为 , 就是说当我们给 AGI 创造足够多的能力的时候 , 未来 AGI 的目标不是我们人来定的 ,是它自己定的 。
想象不出来这是一个怎么样的未来 ,而且它定的这个目标是人想要的目标吗 ?
不一定啊 。
对啊 , 包括它对人是有好处有有坏处 , 或者说好处更大还是坏处更大 , 这都好像都很难想象啊 。
对 , 这很难想象 。 所以我个人认为 , 就是我倾向于认为 , 就是未来可能 AGI 还是一种自组织的形式 , 最后可能会变成跟人一样 , 就是说我们可能 AGI 的初步是取代了一波人的工作 ,但是未来就是随着可能比如说技能点非常高的那波人的这个力量 , 那 AGI 可能会成为新的这一波 , 就是它成为在这个工作上最专业的那波人之后, 那可能就是 AGI 带 AGI 了 , 就是一堆 AGI 带一
堆工作 。 那可能我们现在能想到的初步可能是说 , 呃 ,有一些基本上的就初步的这种能力会被 AGI 取代 ,但是一些比较这个可能人还是有经验 , 对吧 ?
还是可能会比 AGI 用更多的经验 , 所以还是会有一个人机协同 ,但这个过程肯定会被逐渐的取代掉 , 然后未来就是一波一堆的机器人在一起工作 。
那在这个在一起工作之后, 那可能跟人一样嘛 , 人就会有分工完之后, 就是这个老板会跟大家画大饼 , 然后老板会给大家定目标 , 那未来可能也是这么一个过程 , 就是 AGI 自行的定义目标 ,但它这个目标会是什么样的 ?
会不会是说这个服务于人类社会 , 对吧 ? 那这其实这个事情其实是一个未未知的问题 。
对 , 我觉得这个讨论反正非常有意思 。 我自己是觉得就是很多时候效果上很惊艳的东西 , 它在技术上未必是复杂的 , 或者有些东西在效果上有了一个飞跃 , 它在技术上我觉得未必是真的有什么 , 就可能在技术上看来是很自然的事情 。
就比如说有的 , 嗯 , 假设这个 O1 模型 , 对吧 ? 它某一它这个思思考过程突然开始胡言乱语 , 嗯 ,R1,R1 zero 在思考过程突然开始胡言乱语 , 这个从效果上来看 , 它觉得哎 , 怎么怎么这样 ,但其实从技术上来看 , 我们觉得非常合理 , 对吧 ?
只要你能 ,因为你的目标就是让你把最后的答案搞出来 , 无论你是说人话也好 , 还是说什么奇怪的语言也好 , 说中文也好 , 说英文也好 , 这都无所谓 , 这在技术上看来很自然 。
这这再延展下去 , 就是说就是我们人类总是觉得自己的智能好像高人一等 , 对吧 ? 就是我们这个大脑这个秘密真是难以难以琢磨 ,但可能其实你说你这个智能又比别的智能是本质上在机理上是不是就是比它机理要高级呢 ?
这个我们可能也说不明白 , 对吧 ? 或者说什么样的机理是最合适最好的 , 这个可能有的时候我们可能也不能这么这么怎么说自傲 , 就是觉得好像哎 , 越像人类就是越好 , 可能也也不是这样 。其实一开始我们在聊稀疏注意力的时候 , 你们就提到应该是天宇提到的 , 就是说在这个神经科学或者对人脑的一些研究上也研究出这个神经突触 , 它不是
都是相互连接 , 神经元之间也是有稀疏性的 。 所以我觉得好像现在下意识大家还是会把这个 AI 的系统去类比 , 就是你生物人人的生物上的一些特点啊 ,但是但有可能它可能最后那个智能形态也许也和大脑很不一样的时候 , 可能我觉得人就是提供了一个可行解 ,而且它一定是一个较优的解 ,但是我们不能保证它是最优解 。
所以说在当大家都不相信这个东西能功能能行的时候 , 你提供一个可行解 , 或者说较优解 ,是能够让大家觉得这个事情是能做成 ,但是当大家质疑的是这件事情怎么样做到最好的时候 , 你只提供一个可行解是不够的 。
不过人脑的效率挺高的 。
对对 , 就很肯定很多地方它其实是比现在 AI 优嘛 。 对 , 人脑效率高肯定是高的 ,因为其实你从人类进化的角度上来说 , 它的能源就是有限的嘛 , 我每天只能吃那么多 ,而且我的食物获取效率也比较低 。
当然现在可能就是说我想吃任何东西好买嘛 , 再往前走的话 ,其实这个获取食物生存下就是大家人的本能 。
所以就是说控制人的能耗本身是一个可能认为是应该是认为是生物发展一个最最关键的一个限制 ,但是对于生 AI 来说可能不一定 。
我们现在能够假设它的智能水平能足够高 , 我们就能够给它足够提供足够的算力 。
那真的吗 ? 地球的能源不也是有限的吗 ? 你这是要可控核聚变了吗 ?
那这个可以未来叫个 AGI 研究 。
然后就让 AGI 研究可控核聚变 , 然后再去用这个可控核聚变的能源再来发挥 。 哦 , 好像 。
对吧 ? 也很合理 。
也可以啊 ,也合理啊 。
所以说白了就是还是刚才回到那个问题 , 我还是为什么会认为科研它本身是一个最重要的问题 , 就是说现在所有的 AI, 它的所有的知识 , 所有的监督信号还是来源于人。
对 , 那它在未来的话 , 它假设能够实现科研 , 代表它能够自己去找到那个知识突破的边界 , 代表着它其实是有了自己自我监督的一个能力 。
我个人是这么一个理解 , 所以我认为那个是那个一定是就是比较高级的一种形态 。 所以我倾向于认为说假设我们在这个做科研的过程当中, 我们的这个就是发挥我们认知能力需要些什么 , 那我认为就是这种能力可能在未来 AGI 身上也是非常必要的 。
那今天非常感谢两位做客晚点聊 , 我们从注意力机制后面聊到了 AGI。
对 ,AGI 哦 ,但当然这也是一个很自然的延伸 。 嗯 , 最后总结一下, 注意力机制是 Transformer 架构里的一个核心的机制 ,但是它的工作原理就导致了最初的 Full Attention, 它一直有显存和计算复杂度的问题 。
那当我们要处理的序列或者说文本变得非常长时, 存储或计算就会跟不上 。 学界后来做的很多注意力机制的改进 , 都是为了在保证效果的同时, 去提升注意力机制的存储和计算的效率 。
那我自己很有印象的一个点是 , 不同于以往 , 大家主要是在模型的推理阶段引入了稀疏注意力的机制 。 这次两位也都提到 NSA 和 MoBA 的一个亮点 ,他们是在模型的训练阶段就引入了稀疏注意力 。
那现在的强化学习就是 RL 的方法 ,是需要在训练时生成和处理很长的思维链的 。在这个背景下, 把稀疏注意力放到训练阶段也是更加有必要的 ,以及未来我们要做更多的多模态理解 ,也需要注意力机制的改进 ,因为多模态本身也会带来超长的序列 。
我们今天主要讲了两种改进注意力机制思路中的稀疏注意力机制 , 另一个大的方向是今天我们也提到过的线性注意力机制 , 或者也可以说是 RNN 循环神经网络的回归 。
这是一个理论上限很高 ,也不存在存储限制的方向 。 顺便预告一下, 下期节目我们可能会和 MiniMax 的研究人员来详细的聊线性注意力 。MiniMax 在今年 1 月中旬开源的 MiniMax 01 的核心创新点 , 就是它使用了一种新的线性注意力的架构 。
然后今天的节目就到这里 , 各位再见 , 拜拜 。
本期节目就到这里 , 欢迎收听 。 如果你对今天聊的话题有观察 、 好奇或疑问 , 欢迎在评论区分享想法 , 这也会成为我们节目的一部分 , 让整个讨论更完整 。
你也可以把我们的节目分享给对这个话题感兴趣的朋友 , 欢迎推荐更多你想听的主题和嘉宾 。
你可以从小宇宙 、 苹果 Podcast 等渠道关注晚点聊 LateTalk,也欢迎关注我们的公众号晚点 LatePost。 下期再见
。





