Kimi 和 DeepSick 他发的这两篇叫做动态吸收注意力 Dynamic Sparse Attention 他们这个就是可以用来解决这种常温本的开销的问题然后像 MiniMax 的话他们就是采用了另外一种方案一种叫做混合模型的一种方式不太好说但我确实被 Latio Sparse Attention 它甚至比 Full Attention 要好这一点
吸引住了可能我之后也会做一些这种 dynamic spas attention 方面的研究像 DeepSeek 可能它就是比较少见的就是非常坚持自己做架构创新的这一点非常可贵因为很多公司我感觉都是排斥来做架构创新的
因为他们可能就觉得堆 data 就行了嘛我们为什么要冒险来做架构创新这件事啊做架构创新它是一个风险与机遇并存的哈喽大家好欢迎收听张小军商业访谈录我是小骏这是一档提供一手高密度信息的商业访谈节目
今天这期节目延续了我们的论文系列我要请 MIT 计算机科学与人工智能实验室的再度博士生松林来给大家解读上个星期 DeepSeek 和 Kimi 刚刚发布的全新的技术报告
DeepSync 和 Kimi 又一次在同一天技术对垒同天发布论文两篇论文都集中在改进注意力机制以处理长文本的任务上而在更早的之前春节之前 MiniMax 也发布了一篇注意力机制相关的论文那松林会带领大家阅读这三篇注意力机制相关的文章解析不同的大模型公司的技术哲学与路线选择
我们希望能让更多的人领略 AI 技术平权体验技术之美那 2025 我们和 AI 共同进步
今天这期节目延续我们的论文系列我要请 MIT 的松明来给大家解读 DeepSick 和 Kimi 的最新论文 DeepSick 和 Kimi 这次又一次撞车了在同一天发布论文这两篇论文都集中在改进注意力机制以处理长文本的任务上两篇论文的署名分别包括了梁文峰和杨志玲
松林会带领大家来读最新的这两篇论文同时也会对比对照讲解春节前另外一家大模型公司 minimax 发布的新型注意力的模型那松林先给大家打个招呼并做一个简单的自我介绍包括你的研究方向
好 嗨 大家好我是杨松宁然后我现在是 MIT CSC 博士二年级然后我的导师是 Yong Kim 现在我的研究方向是就是硬件高效的序列建模主要是集中在高效的注意力方面主要是线性注意力 OK
按照我们节目的传统节目形式仍然是送灵来主讲 paper 中间遇到我不懂的地方我会作为观众来提问可能在中间 可能在最后那我们的主要目的是希望能够帮助更多的人了解最前沿的 AI Research 的世界到底在发生着什么一起来共同学习做你的赛博组会也希望更多像我这样非技术背景的人能够感受到技术之美
那开始之前呢我想先简单的问宋玲几个问题帮大家做一个定位接下来的时间就会交给她总体来说你觉得为什么 DeepSeek Kimmy 都选择在这个时间点发布有关于注意力机制的论文啊注意力机制的改进在 AGI 路线图上有多么的重要因为现在是 2025 年的开始然后之前 DeepSeek 发了一篇阿旺的文章然后还有 Kimmy1.5 也发了一篇
他们的技术核心就是说这种长的思维链就是能够解锁很多 reasoning 推理方面的能力但是长的思维链呢他的这个推理的开销是比较大的因为 transformer 这种模型他采用了 self-attention 的这种机制所以他
有一个平方的一个计算复杂度和一个线性的那个 kv 开始的空间复杂度然后他们这两篇工作的话就是 kimi 和 deep seek 他发的这两篇叫做动态吸收注意力 dynamic sparse attention 他们这个就是可以用来解决这种嗯查文本的这种开销的问题
然后像 mini max 的话他们就是采用了另外一种方案他们是用一种叫做混合模型的一种方式混合模型的话就是线性和 summas 注意力他们的一个结合这样的话如果绝大多数的层都换成了线性注意力的话那么整体的这种开销尤其是推理上面
它这个解码上面的这个时间开销会缩短很多这样的话呢可能就是更加对 test and scaling 比较友好 DeepSeq Kimi Minimax 这三篇注意力机制的改进策略它们是共性更大还是差异更大我觉得就是 Kimia 和 DeepSeq 这两篇还是共性更多一点的
他们的话都是动态吸收注意力然后动态的话呢就是说他们的这个吸收的这个性质呢它不是事先预定好的像之前很多这种叫做静态吸收注意力 Static Spasial Tension 他们的这种吸收的这种模式呢就是事先给好了的
比方说像谷歌之前有一篇工作叫做 big bird 然后他们有一些就是固定的一些模式比方说他们有一些就是比如说像那种跳跃的那种 spas attention 或者说一些其他事先给好的 pattern
在这边就是动态的吸收注意力的话就是说吸收性是由 query 它来动态决定的也就是说对于每个 token 它的 query 不同的话然后它所想要 attend 到的 key 和 value 它们就可能会不一样这个就是动态吸收注意力的这种核心思想
Kimi 和 DeepSig 都想把这种动态吸收注意力用在训练上面所以它们是非常相似的然后我们之后也会讲到
像 minimax 的话呢就是另外一套思路了就是用到的是线性注意力线性注意力的话呢它可以被写成 Rn 的形式然后在推理的时候呢它是常数的空间复杂度然后也是然后每一步也是一个常数的时间复杂度这样子总体加起来的话呢就是线性的总共的推理复杂度
我理解我们今天的节目很大一部分都会围绕着注意力机制来展开那能不能先在节目开始给大家介绍一下注意力机制是什么为什么 Attention 对于大圆模型这么重要注意力机制最早应该是他们的起源有很多这种说法一般公认的话可能是
之前有一篇 paper 就是在 LSTM 上面在 hidden state 上面做了一个 attention 然后把这个东西叫做注意力机制可能是 15 年的有一篇工作然后之后的话呢注意力机制有谷歌把它发扬过来的就是那一篇非常知名的文章叫做 attention is all you need 的
他们用这一个架构就是完全取代了之前非常风靡的 LSTM 因为这个架构它训练起来它那个并行度很高所以它在 GPU 上面就是非常非常的高效
这样的话它就能够被它的 scalability 它很容易堆参数上去这样就可以迅得更大就比方说后面的 bert gpt 乃至到现在的那是那个 remodel 他们都是基于 transformer 这种架构然后注意力的话它简单来说的话就是说对于每两个 token 来说他们有一个 score 就是这两个 token 他们交互的 score
然后每一个 token 它就是要对所有另外的 token 都要有一个 score 这样子的话我们就有每两个 token 之间我们都会算出一个 score 然后这个 score 通常就会被叫成是注意力分数 attention score
在自回归建模当中呢然后我们一般会有一个 Quadro Mask 就是来防止这些 token 去 attend 到后面的一些 token 然后来保证它只能 attend 到前面的 token 然后具体这个注意力分数怎么算呢它一般是每一个 token 它会有三个 vector 有一个叫做 query key 和 value
query 就是查询 key 就是键然后 value 就是值每个 token 就比方说在自贿轨里面每个 token 他会用他的 query 去跟之前的所有的 key 做一个类集然后我们会得到一个 scaler value 的一个 attention score 然后再做一个 softmax 的一个操作然后得到它一个就是规划的一个 attention 分数
最后再由 attention 分数来对之前的这些位置它们的 value 向量来做一个线性组合最后再得到 output 这大概就是注意力机制的核心思想可以怎么更简单理解 attention
更简单理解 attention 的话就是我觉得 attention 的话就是每两个 token 之间我们要建模一个他们的这种交互这样的话这样一个其实我觉得都能叫 attention 吧它就是一个 pairwise 的一个建模过程它可以去建模这个序列里面每两个位置的那种交互程度
你觉得我们今天讲的 DeepSick、Kimi 和 Midmax 他们的注意力机制的改进是在为后续的模型训练和产品做铺垫吗比如说 DeepSick 提出的这个 NSA 系数注意力机制是为了 DeepSick V4 直接的上下文语训练做铺垫吗就是能不能从他们的不同的注意力机制的改进目标上能看出这家公司后续的一些策略上的不同我觉得 DeepSick 这篇文章是有八成是会为之后的 V4 来服务的
因为像大家都知道 DeepSeek 最近出了一个 R1 的工作这工作主要就是想有 Test Time ScalingTest Time Scaling 的话它就是说我们在预训练的时候这个 Scaling Law 已经快要失效了所以我们需要将更多的这种计算就是把它花费到这种 Inference Time 上面
然后在这个 influence time 的时候呢然后我们就可能会采用一些比方说那种长的思维链 long train of thought 去把这个输出的长度整体把它拉到很长所以这个就叫做 test time scaling 就是这个叫做推理时间的这种扩展
然后因为 test and scanning 的话它主要是一个 de-coding 的一个 process 所以这就对 de-coding 的效率就是对模型架构它的 de-coding 的效率有很高的要求
就像普通的 self-attention 的话大家都知道它 de-coding 的时候它是一个比较慢的过程所以这就是为什么我觉得 DeepSeek 会花精力来研究 sparse attention 的这种机制
然后像 Kimi 的话呢他其实他最近也有一篇工作叫做 Kimi 1.5 他里面呢也有一些 test time scaling 的一些东西在里面他那个思路是跟 DeepSeek 是比较像的然后后面 OpenAI 也发布说他们的那个做 reasoning 的那个模型的思路也跟 DeepSeek 和 Kimi 两家是很像的
这是一方面然后另外一方面呢 Kimi 它还有一个主打的一个功能像之前 Kimi 就是以长文本建模为卖点然后他们会提供很多长文本比方说你可以输入一个 document 然后 Kimi 会帮你处理这整个很长的 document
这个就涉及到一个呃类似于 pre-filling 的一个问题 pre-filling 的话呢就是对已有的这些呃给定的 tags 来进行一个建模
这个就有点像就是像训练的一个 forward 前向的一个过程这个过程呢因为 attention 的话它是平方复杂度的因为我们要建模 pairwise 的一个交互所以这个平方的复杂度在这个 document 的长度如果很长的时候呢它这个是吃不消的
这也是为什么 Kimi 想要研究这种 Spas Attention 的原因因为它可以把这个 pre-filling 的这个时间把它缩短很多接下来连续的五天 DeepSick 声称要开源五个项目能不能对新项目做一些预测
我们节目可能会刚好在他们发项目的第一天或者第二天我觉得他们应该会发一些 infra 的一些框架吧我看他们都已经有一个 repo 了他们说是一个我记得是
一个软硬件协同设计的一个框架我觉得更多是一些 infra 的一些工作比方说可能有 MOE 之类的然后还有他们前几天发的那个 native sparse attention 的一些开源模型之类的工作然后具体是什么呢我也不太能预测出来兼职算命哦
接下来时间就交给你交给松林由他来带领大家学习最新的三篇论文那论文讲解的时候有些专业名词我们可能尽量的解释一下但是也请大家见谅因为有些专业名词可能确实不好翻译成中文那好现在我们来带大家来看一下 Latest Buzz Attention 这篇文章然后 Latest Buzz Attention 的话呢我觉得它从这个名字 Latest 来说呢
这个 latif 是什么意思呢?他就是说他要做就是在硬件上面能够进行原生训练的这么一种 space attention 他可以说是现在这些里面第一个来把这种动态吸收注意力来做预训练的一个模型
为什么之前的这些动态系数注意力它不能作为训练呢我们后面会讲到它训练的时候会遇到各种各样的困难主要是它跟当前的这种硬件它是不是非常的 align 不是非常的对齐的
所以当前的主要的这些 dynamic spasticity 的一些工作都是主要用来加速 inference 而不是从头开始预训练 DipSeq 这篇文章我觉得是开创性的第一次来拿这种 dynamic spasticity 就是来做一个非常大规模的一个预训练
然后他用到的机制呢他就是之后我们会提到他应该是主要是基于他跟 Quest 很像 Quest 的话呢是一篇 SML2024 年的一篇文章他是由韩松老师组 MIT 的韩松老师组出品的
Quest 它的核心思想就是说对于每一个 token 它应该去动态的决定它要去注意到的这个 key 和 value 的 block 在什么地方这个也很好理解因为每个 token 它可能需要的这种信息它就不一样
那么 quest 它具体是怎么做的它就是为了跟硬件更加额大一点的话它是有一种对于每一个 query 它会去往前面找一个 key 和 value 的 blockblock 的话它是一个连续的一个 continuous 的一个 tronk 它里面有很多个 token
他们是连续的这样的话硬件的上面的话他们就可以做一些连续的读取然后来避免一些额外的开销像 Kimi 和 DeepSick 这两篇文章它其实都是可以当成是 Quest 的一个 follow up 然后把 Quest 用来做预训练
接下来我们会看到这篇文章的话呢就是针对这个 Quest 的这一种 Space Attention 的这种机制就是如何去进行一些 Hardware Avail 的一些 Design 也就是说就是如何就是在算法设计的层面上面就是让这个算法更加的去变得硬件亲和
这样的话他就可能训的就是能够更高效然后这一篇的卖点我觉得他们也是在想就是说他们想把这个东西就是在 modern hardware 上面就是能直接按 to 按的来训这样训得很好然后最后他们可能发现就这个东西他们从头开始预训练他们能够比 full attention 甚至还要好
最后达到一个就是既快又好的一个目的就他们野心非常的大他们既要还要然后我们可以简单的来看一下他的这个最后的一个效果这留三个 benchmark 是表彻长文本的一个 benchmark 还有这种 transferred reasoning 就像阿旺的这一种 style 的一种 reasoning 的一个能力
这个的话就是一些其他的能力了然后可以看到这个 NIC 的话它几乎就是在这些班次班上面都是要压这个负 attention 一头的负 attention 的话就是最传统的那种 attention 的机制
它就是直接建模每两个 token 之间的这种交互它需要平方的时间大部分大模型都是用的这个 Full Attention 是吗对的就是基本上所有的大元模型基本上都是基于 Full Attention 的比方说千问比方说 Lama 的话呢他们都是用的是 Full Attention 的这些架构但是值得一提的话呢他们用到的是一些 Full Attention 的变种
他们基本上用的是一种叫做 GQA 的一个架构这个我们之后会稍微提一下然后从右边的这个 speed 的这个比较来看呢我们可以发现这个 Lative Sparse Attention 它不仅在 decode 的时候要快它在训练的这个前向和反向传播呢都是要比 Full Attention 要快很多的
然后这一篇对就是他的主要思想就是要把这个他们的算法去跟这个硬件做更多的 align 然后他这个 align 他要计考虑这个 influence 的这个 time 他又要考虑这个 training 的这个友好程度就是他既想在 pre-filling 上面加速又想在做推力 influence 的时候他也想加速
我们可以看到这个图奥图奥的话就是他们这个架构的一个核心思想之前我们提到的话就是说他想要每一个 query 就是每一个查询的那个 token 他想去 attain 到不同的 key 和 value 的一个 block 这就是 quest 这篇工作的一个思想
所以的话呢我们首先会把这个 key 和 value 分成嗯不同的这种连续的这种 block 我们可以在这里看到他分成了嗯四个 block 这里是打个比方
对于每个 block 它会有一个 compression 的一个操作也就是说它想把这么一个 block 里面所有 token 把它压缩到一个 D-dimensional 的一个表示里面去之后我们每一个 trunk 它都有一个表示
然后这个 query 它就是能够跟这些创可的表示进行一个 self-attention 然后得到一个 attention score 然后它这里它是先把 key 它会压缩成一个表示 tony 它会把 value 也把它压缩成一个表示
然后我们这里会得到一个 attention matrix,attention score 就是给定一个 query 它对每一个 trunk 的 attention score 然后我们再 apply 这个 quotient mask 然后我们再对这个每个 trunk 的 value 进行一个线性组合会得到一个 output
这个 output 它会再过一个门控因为这里它收到有一个叫做 gated outputgated output 的话就是说它这里有三个分支它每个分支都会选一个门控来决定它们对整体 output 的一个贡献程度
这个门控就是一个由模型自己学的一个过程它一般的话就是说它会把 input 的一个 representation 过一个 projection 然后得到一个 value 这个 value 它是由模型 token 的表示来决定的所以这个就是一个经典的门控的机制然后这里我们就有第一个分支
第一个分支它就是它就是有一个比较粗力度的然后来对这个 value 对每个创可它会得到一个创可 representation 它其实它这个感觉就是做的是一个类似于创可 level 的一个 attention 然后这种粗粒度的这种 attention 做完之后呢他们就会再想做一些更加细腻度的 attention
但是如果所有的这种系列度都要做的话就要退化到了那种平方复杂度的那种 Full Attention 所以这里就是 Sparsity 的来源就是说我们不想对所有的都做 Attention 我们只想把 Top N 来做一个 Attention
就比方说在这个里面呢它这个 n 等于 2 然后我们会在这 4 个里面选出两个 attention 最高的这个 block 来做这个 attention 更加吸力度的 attention
像这里的话我们选到第二个和第四个 block 然后我们会把这两个 block 他所谓的 token 把它放到这里来然后这个 quadrate 在这些所谓的 token 来算到一些 representation 算到一些 attention score 然后再对他们这些位置对应的 value 来进行一个 awaited sum 求和然后得到第二个分支的 output
然后同样的这个 output 它也会有一个门控机制然后来决定它对这个整体 output 的一个贡献最后呢我们有第三个分支它是一个 sliding window attention 也就是一个划窗注意力的一个分支在这个分支里面呢因为这个主要我觉得这个主要是考虑到 language modeling 的话呢它有一个 inductive bias 就是说
那些宁静的头可能他往往会更加重要
就像如果你把一个讯号的 supermax attention 这种模型然后你把它的 attention map 把它做一个可视化的话它往往很多这种注意力会集中在这种 sliding window 上面以及最开始的几个 token 所以这个现象一般被叫做 attention sink 是在那个 streaming llm 里面提出来的
这里的话就直接就是利用到了 inductiveBIOS 然后直接就是默认去 attent 的 slidingwindowattention 的部分然后我们会得到一个 output 同理我们会对 output 然后来做一个 getting
然后最后我们会对三个分支然后分别做 Gating 然后把它相加得到最后的 Output 这就是 Lative Sparse Attention 它的整体思路那在这张图里面它是如何平衡全局和局部信息的比如说压缩 Selected 和 Sliding Window 它这三个分支是怎么协同工作的
我觉得这个的话呢就是让模型自己来学出来的因为模型它有一个门控机制门控机制就是一个经典的一个自调节的机制模型可以通过自己的一个 representation 就是每个 query 那个位置它对应的那个表示然后来自反馈的来学出我每一个这种分支应该去 pay 多少的 attention
所以我觉得这个就是他就是把就是没有那些人为的那种 inductive bias 就是说就是因为很难定义就是我具体每一个分支要选多少嘛所以我们不妨把这个选择直接交给模型就是模型他可以自己学出他需要 focus on 哪一个这种分支然后这就是整体的一个核心架构
然后第二个分支的话呢啊就其实就第一个分支到这里然后到第二个分支的话呢他其实就是跟快速的很像
因为快死的话呢他也是需要把每一个创可把他嗯得到一个 representation 然后再通过这个 quarry 去跟这个创可做 attention 然后来算这种 top k 然后来做这个 selection 的一个就是来做这个 block selection 的一个嗯方法对然后嗯对所以这一片工作人其实他的 lower t 并不在于这一些机制
然后我后面应该会讲因为这一篇呢它主要是集中于如何去解决它的这个效率的问题这些其他的这些机制比方说 sliding window attention 然后像这种粗力度和细腻度的 attention 我觉得都是应该是在 EO 的这个 literature 里面应该都是有的他们的主要贡献应该是更多的集中在这种如何让它变得更高效的上面嗯
然后像这里的话呢这边工作也提到了 Quest 然后但是呢 Quest 呢它其实是有一个问题的所以这边工作把它叫做就是它不能够很好的跟这些更加现代的这些 attention 机制来兼容
这是为什么呢因为在 Quest 里面就是我们之前前面讲到了每个 token 要去选不同的 kvcash 然后但是在 Quest 里面呢他每一个 attention head 他都要去选到他自己的那个 kvcash 的一个字迹我们可以在这里先简单的回顾一下什么叫做 group query attention 他就说我可以简单的
打开这个图就比较好理解像 multi head attention 的话呢他是每一个 query 他就每一个 head 他有自己的 keyvalue 和 query 像 multi query attention 的话呢就是说我所有的对所有的 head 他们的这个 value 和 key 他们都是共享的所以我们只有一份这个 k 和 v
这样的话就是我们在 Inference 的时候我们整体的 KV cache 它的大小就是有原来的这么多然后就缩小到只有一个 copy 了这样的话它 KV cache 的大小会极大的缩小然后这就是为什么 MQA 它会在 Inference 的时候高效很多
但是因为你这个东西其实就是缩减的有点太多了你就是把所有的 copy 都来 share 这同样的一个 key 和 value 的一个 representation 这样的话可能会带来一些最后结果 performance 上面的一些 degradation
那为了缓解这个问题呢我们就可以就是来折中就是说我们不要做这么非常激进的这种 sharing 我们可以做一些稍微温和一点的 sharing 比方说这里的话呢我每两个 hide 之间我去 share 一个这个 key 和 value 这样的话呢我们就把它叫做 group query 所以这个叫做 group query attention 缩写就是 gqa
然后回到这里我们这里的话我们是在 Quest 里面的话对于 MHA 的话因为它每一个注意力头它的 key 和 value 它都不一样
这样的话那我们对于每个 hide 来说呢它反正都要去读不同的这个 kvcache 那么的话呢你每一个 hide 它去选不同的这个 kvblock 那样的话呢它整体的这个读写是相同的
嗯所以在 mhc 的情况下呢就是你可以尽情的让不同的害的去选不同的 kv block 因为这样整体的这个 kv 开始的这个读取量
是很定的对然后你如果能让他这个不同的 Hide 去读不同的这种 Kblock 的话呢你这个 diversity 和这个灵活程度都是更强的所以这样更有利于模型去学到一个更好的 model 但是这个呢他只对 MHA 是成立的
因为 mha 就像我们前面说到他的每一个 hide 他的这个 key 和 value 他都是不一样的但是我们回到 gqa 我们前面啊就说到了嗯他是在一个 group 里面他是 share 这个 key 和 value 的
那也就是说呢就是说你如果你这个 group 里面你不同的头你去 attend 不同的 kv block 那你其实你是因为你只有一份 key 和 value 的 copy 嘛所以你就要如果他去 attend 不同的 kv block 那我就要读不同的 kv cache 进来
但是说如果你这个不同的头他去去选择同样的 kvblock 那这样的话呢他就需要读一份那个共享的 kvcash 这样的话就能带来一些 kvcash 读取上面的一些开销的缩减也就是说在在 gk 的情况下呢如果他
这个 group 下面它不同的 hide 去选相同的 kvblock 那它的那个读取量会少一点也就是说这样子的话有可能会带来这种 influence 上面的这种加速所以这个地方的话呢就是我们之后会反复强调这个地方会成为这个 native sparse attention 和 Quest 和那个 Keymin 的 MOBA 他们的核心不同
像 Kimi 和这个 Christ 他都是有一个啊就是每一个嗨的每一个追力头他都能去选不同的这个 kv sub set
但是呢像 little sparse attention 他为了去减少这个在 GKV 下面去就每一个头去 assess 不同的 KV block 他带来的开销所以就是在在这个里面他会去强行限制不同的注意力头他去注意到同样的这个 KV block
这就是为什么这个 lative sparse attention 他在 de-coding 的时候他能带来额外的加速这就是因为这个原因然后我们来看到就是说为了保证他这个不同的头他选择的是同样的 kvcash 然后我们这里会发现他这个就是来做这个 block selection 的时候他会有一个求和的一个操作
他会把这个 group 里面他所有的这个 attention 他的那个 score 之前我们提到了吗就是说他有一个他会对不同的 block 来做一个 score 然后这个部分的话我就不细讲了因为这个地方是处理一些 color case 就比方说他的这个 selection 的 block size 和这个另外的一个还有个叫什么 block size 他有个叫做 selection 的 block size
另外还有一个 block size 他应该就是那个 compression 的一个 block size 对他这两个 block size 其实是可以灵活的不一定要相同然后嗯这个地方呢就比较嗯如果当他们相同的时候这个比较好来做然后我们就直接就是通过之前我们说的那个对块之间的注意力我们就可以选出来了
但是他当他不相同的时候呢就可能比较麻烦然后这个地方就是有一些处理的机制嗯这个地方就稍微有一点复杂但是这个地方完全不影响核心内容的这个 high level ideal 所以我就把这个地方先略去了然后他这里嗯就是我们嗯就是这个东西就是嗯 query 对于不同的
block 他的那个追力分数然后这里我们是我们做这个 block selection 的时候呢我们是对所有的 head 都会做一个求和这样的话呢然后我们每一个这个 group
我们就会嗯得到一个嗯就是得到一个唯一的这个 selection 的一个 score 然后我们来做 top k 来保证这个 group 下面他所有的这个 hide 他的这个行为的一致性因为前面提到这个 gqa 的话他如果不同的 hide 他的独独到的 kv 开始的 subside 是相同的话呢他是有额外的这个嗯好处的
然后 latives bus attention 他就是为了嗯在 gqa 的下面有这个好处他就强迫这个 group 下面所有的这个 hide 去选相同的嗯之前的这种 kv 的 block 然后这里是求和来保证啊不同 hide 要选一样的东西后面呢我们就可以来看到嗯就是前面我们讲到了这个东西是对 inference time 是有好处的
然后后面我们这里来说这个东西它是对训练的时候它同样是有好处的我觉得我们可以先来简单的之后我会带大家来简单的回归一下 flash attention to 的一个可能他这里他说就是说这个地方他是我们把这里去掉他在说就是说如果我们用 flash attention to 的那种 strategy 就是把一个一个连续的 core block 把它 load 到 s run 里面
那的话呢我们就是非常的这个 Memory Access 是不是很高效的因为呢这个 query 它在同一个 block 里面他可能会去注意到不同的这个 kv block 然后最后这个对于这个 query block 来说呢他需要去从
全局内存里面读进来的这个 KBlock 就是所有 token 它的那个并级然后我们可以想象在最坏的条件下这个 Query Block 里面它所有的这个 token 它想要去注意到的这个 KBlock 它都不相同
那这样的话呢我们就是要把它整体的这个 U 量就是它所有的那个并集都把它读进来这样的话呢就是会造成这个 inefficient 然后我们可以简单再来回顾一下嗯 flash attention2 或者说 flash attention 它这里有一个类似的图对就这个图然后后面我们可以看到
Dipsy 给画了一个类似的图像这里的话呢它就是每一个 query 它都是把它它是以快状的形式把它读进来的
query 我会读一个 block 然后 key 的话呢他会从头开始然后会有一个 loop 就是说对于每一个 query 就比方说这里是第 4 个啊我这里是这个 block 第 4 个的话我会把这个第一个 block 第二个 block 第三个 block 嗯第 4 个 block 就是按顺序把它漏了进来然后
然后这样的话呢然后我每次的话呢我是有一个嗯假设这个 block size 是 b 的话我会漏的一个 b 乘以 d 的一个 sub 矩阵就是一个小矩阵进来然后这里的话我假设这里我的 block size 就是方便起见我说这个 kv 的 block size 和 q 的 block size 是相同的都为 b
这样的话我们都是 b 乘 d 然后这里的话也是 b 乘 d 进来这样的话我们可以做一个矩阵乘法是一个 b 乘以 d 和一个 d 乘以 b 的一个矩阵乘法然后我们这里会得到一个 b 乘以 b 的一个一个注意力的一个注意力矩阵 self-attention matrix 里面的一个 subblock 它是一个 b 乘以 b 的大小
然后我们再把对应的这个 value 这个 b 乘以 d 把它漏进来然后这里先做一个 online summits 然后我们再再做一个矩阵乘法我们就可以得到一个 output 的这就是 flash attention 它这个 blocking 它的一个核心思想为什么要 blocking 来做呢因为就是这样的话我们可以去
利用一些探测扩的一个加速同时我们又可以去避免把这个 attention score 写回那个 HBMHBM 的话呢就是那个嗯可以理解成那个全局的那个显存然后 S run 的话呢就是就是就是有一些嗯非常高效的一个部分有点像那种 cache 他可以在这个里面
做一些更加高效的一些运算不对也不能叫更加高效的运算他他那个 memory 的那个可能可以简单的讲一下 memory hierarchy 嗯或者直接来到 flash attention 的 paper 他这里有个 memory hierarchy 就是 s run 的话嗯他是那种共享内存嗯他的这种数量比较小但是他的这个 bandwidth 这个带宽就比较大
然后这个 HBM 的话就是普通的 GPU 的显存比方说你有 A100 的话你有 80GB 的显存也就是这个 HBM 的这个大小这个就可能是 A100 40GB 的版本然后它的带宽就是显著要比这个 S1 要低很多的
然后这些硬件高效率算法尽可能的想把这个计算保留在 SRAM 里面然后减少这个 GPU 和 SRAM 和 HBM 他们之间的这种通信然后我们前面大概介绍完了这个 flash attention 然后我们又回到这里我们再 recall 一下如果我们用 flash attention 的那种 style 的话
然后因为我们因为之前 flash attention 它是 full attention 所以对于每一个 query block 来说呢它之前的 key 和 value block 它反正都要扫一遍这样的话呢它不会有什么浪费但是对于这个 space attention 不同的 query 它所需要的这个 kv block 它是不相同的
然后这就导致如果我们还是这么连续的来读这个 query block 的话呢那我就需要去 load 它那些每一个 query 它对应的那个 kvblock 的那个并记这样的话呢它会带来一些 memory access 的一些 inefficiency 然后这一篇的话呢它就是利用到了 GQA 的一个特性
像 GQA 的话呢它在做 Inference 的时候像 MQA 或者 GQA 在 Inference 的时候它有一个技巧就是说它可以靠这个 Number of Head 靠注意力头的数量这一个维度来凑一个举证惩罚的形式在退的时候
这就有点像 batchify 了只不过因为它有一个共享的 key 和 value 所以就存在一个可以 batchify 的一个空间这句话可能有点比较难理解但我们下面就来讲这个东西是怎么 batchify 的然后这里的话就是我们之前是回到这个 flash attentionflash attention 它是有一个 block 就是一个
b by d 的一个 block 然后算出来的也是一个 block 的一个 output 就是我们会算出这个 n 乘 d 里面的一个 b by d 的一个 subset 他每次他会一般 b 的话呢他是一般会来到 128 所以他会并行的来算 128 个位置的一个 output
但是回到这个 DeepSeek 的这个模型来说呢它这里的话呢它就是为了避免之前 Query block 它存在的问题就是说我们不想让每一个 token 它不想要一些读取的浪费
然后在这里的话呢我们就不以那个就是干脆让每一个 token 它来独立的来算自己的 output 我们不把它们把它捆绑在一起来一起来算那个 output 了
像 Flyshe 和 Tension 它之所以要捆绑是因为它这个地方要凑一个矩阵乘法所以它需要这个 query 它的这个 block size 这个维度来凑一个矩阵乘法的维度要不然它就没法矩阵乘法了算了然后在 GPU 里面呢我们就非常喜欢这个矩阵乘法
因为矩阵乘法它可以调用半精度的矩阵乘法它能调用 TensorCoreTensorCore 它非常的高效它是一种 GPU 上面的一种特定的计算单元它能够很高效的来计算半精度的矩阵乘法打一个比方在 A100 上面
如果是给定相同数量的一个 flops 然后我们用半精度的这种矩阵乘法来算这个相同的 flop 要比其他的那些计算单元比方说 ALU 来算这个 output 的话来说呢它是要快大概 16 倍的然后在 H100 这些硬件上面呢它这个探测库就是越来越快
就以至于就是矩阵乘法太快了然后这个 memory 的这个 loading 反而成为瓶颈了这就是大家常提的一种线线叫做内存墙 memory 我好像扯的有点远了让我们回到这里就是我们之前讲的我们这里不想在这个 block 上面把它来凑到一起一起来读因为这样会引入很多不必要的这种读取
然后我们又想把它凑成一个矩阵成法那怎么办呢那前面我们又想到因为这里我们前面提到 GQA 存在一个方式让它 batchify 嘛那这就来了因为我们这个对于我们不同的
我们这里有不同的 hide 因为对于 query 来说它是一个 multi query 就是说对于相同的 key 和 value 来说 key 和 value 开始来说它这个 query 它是有多份的然后这也是 h 份然后我们又回想到我们之前强迫这 h 个
hide 他们去共享他们想要选择的那个 key value 那个 kvcash 的那个 subset
也就是这些 block 的话呢他们都是共享的所以我们就是把这个东西就干脆把它打包成一起然后因为他们是共享他们那个选择出来的 kvblock 嘛所以我们就可以同时来计算他们这里就存在一个 batchify 的一个操作我们这个也是可以想象成是一个 batch 的一个维度
这样的话我们就又可以用矩阵乘法了只不过我们这个地方我们另外一个矩阵乘法的维度它不是 query 的这个 block size 它是这个 query number of height 的这个维度上面的这样我们就可以凑一个矩阵乘法然后另外值得一提的话呢就是说在探测库它不是所有矩阵乘法它都能优化的
它有一些限值比方说它那个最小的那个尺寸是有要求的在这个 case 呢比方说在 tryton 里面它要求 h dk 和 bk 他们都是至少要有 16 然后像 native sparse attention 它是由 tryton 写出来的所以我们就会要求这个 h 它至少是 16
但是呢它其实这个要求它是非常非常强的因为我们又要保因为我们平常我们这个每一个 choreo group 它这个下面它这个 love of head 它是不会有 16 个的然后同时我们又想满足它最后它有 4 个 group
因为我们想要因为我们现在我们这个就是每一个 token 他想选择的这个 kvcash 的 subset 他其实是靠这个 number of group 来决定的因为我们每一个 group 他的这个行为我们已经绑定了他们这个 group 下面不同的 hide 他们会选相同的 kvblock
但我们又想保证啊一点这种啊嗯每一个 token 我想让他啊不同嗨之间还是有一些差异度的这个差异度呢就只能靠这个 number of group 来凑了然后一般的话呢啊 gq 他一般都会用到四个 curry block 比方说像 nama 我记得是用了四个 curry group 的然后这个话呢他也强行把它拉到四个
但是我们前面有提到他这里就是有一个限值吗他啊这个 h 他要有一定大他来用探测扩嗯所以这两个他都想保证他就干脆就是把嗯整体的嗯啊害的数量增大了然后我们可以看到他这里嗯 dq 他其实是 192 吗然后我们这里他有 64 那我们相乘的话我们会发现他这个东西他其实存起来已经嗯将近
应该有 12,000 左右然后我们这个呃 hidden diamond 省我们其实只有 2560 那就说明我们这里其实这个有一个非常非常嗯就是向上投影的一个过程一般是不会这么干的一般可能就是 2560 投影到 2560 然后用来分分这个呃害的
然后像这里的话就是完全是因为我们想强行把这个嗨的数量打上去然后同时我们想要有更多的 group 数量来保证有一些就是每一个 token 他不同害之间的那个选择 kv block 的一些呃代位色体
像这个的话呢我觉得这个做法呢就非常有 deep seek 的一个特色的像 deep seek v3 里面嗯 mla 它也是一个类似的做法它就是搞很多很多的这种 attention head 然后也会有一个非常大的一个呃向上的一个 toeing 的一个过程
然后 DeepSick 可能他的考虑是说我反正我只要我反正是从头开始训练嘛所以我只要最后他的 Inference Time 和我训练的时候这个训练的 Time 他都是硬件就是这两个阶段他都是硬件高效的话都是足够 Efficient 的话那其实这个 Up Projection 也无所谓嘛
因为反正 MOE 的这个阶段它反正有很多很多那种参数嘛所以也不会造成比方说 attention 的参数和 MIP 的参数就是那个不成比例的一个问题所以感觉在这个 MOE 的这个框架下面的话呢 DLC 这么选择也还是挺合理的
然后 Givesick 这里他用到的 MOE 是他们之前的那个 MOE 就他们这个地方的话我就跟这篇文章基本上没什么关系所以我就不讲了接下来我们看到这个训练的损失 Lose 我们可以看到它跟这个 Full Attention 相比呢基本上就是全程都比 Full Attention 要好一点他俩挨着
对但还是一直在他下面的然后对于表 1 的话我们有一些 benchmark 的一些结果然后在这些结果 NSA 他都甚至会比 Full attention 要好然后这就证明这个预训练的重要性因为如果你只是在就是在 influence 的时候
做一些那个我们后面后面后面他会有一个额背论 study 就是如果在负荷碳上的基础上面
然后你做一下 spas attention 比方说做 quest 的话呢它其实是会掉点的但是你把这种 dynamic spasity 的这种机制直接来做预训练然后你可能就是会甚至能得到比 fool attention 更好的一个结果嗯
这就是我们刚刚提到的像这些人的话呢就是他们用一些就是在 influence 阶段来来就是他们先 train 一个负 attention 然后再再用 influence 阶段来用不同的这种 spas attention 的一些 technique
来尽可能的增加这个效率然后我们可以发现这些模型因为它不是从头开始训练的所以他们是需要去贴近这个负耳滩神它原本学出的耳滩神的分布的因为它是一个逼近的过程所以它肯定是会有损失的
比方说像 crest 他跟这个负 attention 相比他就是嗯他就是嗯会更差然后这里他甚至还有一个就是他做一个 exact top k 他就是直接把 attention score 那个矩阵算出来然后他就直接求了一个 top k 这个的话呢就是所有 top k 的他一个上限嘛我们发现这个上限其实没有多高嘛
因为他始终是对这个富尔滩选的一个逼近所以再怎么逼近他还是有个大上线的大上线就是这个富尔滩选的这个效率然后快速的话呢他跟这个一个 jack 的这个 top k 相比他肯定还是更局限的吗因为我们前面就提到了快速的他还是用一个
他还是要保证这个 kv 的这个选择呢他是以 block 为单位的这样的话呢在 decoding 的时候就可以一个 block 一个 block 来 load 来尽可能的加快一些嗯效率但嗯就是说你嗯得到效率然后你失去了一些灵活度然后这个 quest 他比这个一个 z top k 他要来的效果更差这个也是非常 make sense 的嗯
对然后如果我们想让我们的 spa 的 tension 甚至比富尔他省要好呢那我们只有一个出路那就是圈房 sq 我们可以看到就这个地方非常的惊喜我觉得这是 dip seek 这一篇就是啊给我们指的道路就是 dip seek 可能就是想告诉大家
哎呀你们不要在这个 for attention 的技术上面在做 sparse attention 了你们不如干脆来设计一些 sparse attention 这个机制他在训练的时候呢他又能表现的很好这样的话呢你就有可能就是嗯就是直接跳过这个啊 for attention 的这个啊 performance 的一个上限然后嗯解锁一些新的一些
能力或者就是嗯比富尔摊这要好然后这一个这一个班子吗可能是弄半只就在常温本能力上面这个是八色探视比富尔探视都要来的要好然后对于这个来说呢就是有一些解释嗯首先呢像 quest 或者说这种 nsa 他们是对这个他们这个是不丢 kv 开始的有一些模型能像 h2
它其实是会有一个丢 kvcash 的一个操作的然后我觉得近一年有一些工作就说明了只要这个机制它会丢 kvcash 那么它对 performance 的影响是会很大的因为你指不定这个 kvcash 在之后的 query 又会被用到呢
这大概是一个 intuition 就是为什么不丢 kv 开始它的这个效果就比方说快死他会比这种丢 kv 开始的这个效果会好一点然后其次呢然后他不丢 kv 开始之后然后他还有一个 spas attention 的一个作用这这个作用的话呢他可能会更加帮助这个 attention 去集中他的注意力
就是其实负 attention 它其实是一个非常冗余的一个机制因为肯定因为 attention 它自己学出来它就是一个 highly sparse 的就它有一个很强的 sparse 的一个 pattern 在里面的就是大家可以把讯号的 attention 模型取出他们的那个 attention map 就很容易发现它是有很多很多冗余的
然后直接用一个 flat sparse attention 来训的话呢我我一个直觉理解就是说他就是在训练的时候他就已经嗯去去除了一些冗余就是能够帮助这个 attention 能够更加的 focus on 那个呃就是能够让这些呃 attention 更加能够集中注意力这样的话就有可能效果会更好他就不会背一些
无关紧要的那些 token 被它 distract 到了最后呢这里有一个 little young hashtag 我们可以看到这个就是绿油油一片说明它 retriever 能力还是在线的这里也很好理解因为它 kvcash 它没有丢嘛然后它模型靠模型它动态的来选就行了
最后这一点也很神奇就是说它不仅能增强长文本的能力它甚至还能在这种 translate reasoning 的上面就是它提高提高这一点也是非常有意思的然后 DeepSig 他们就是用他们 DeepSig 的这个 recipe 然后来做一些 SFT 在这些 SFT 的 data 上面
然后这个结果呢我们发现这个 NSA 它的这个 R1 蚊针它甚至要比这个 Full Attention 的这个 R1 蚊针要好一些的就说明这个 Dynamic Spacity 它确实非常的有潜力
这里的这个图 6 呢他们就是把这个嗯 tryton base 的这个嗯 native sparse attention kernel 跟 tryton base 的 flash attention kernel 因为他们想公平比较嘛所以大家就 tryton 对 tryton 他们可能也没有时间来写这个 cuda kernel 然后一般 cuda kernel 它还是比 tryton 可能要快一点的然后我们在这里就是
公平较量之后呢我们发现那个 native sparse attention 它就是它在比较短的一种长度上面它就已经要比这个 global attention 也就是负 attention 要好了然后当序列长度越长呢它这个加速比就越多比方说在 64k 上面呢它就来到了快 10 倍的一个加速
最后这里的话呢就是它这个 decoding 的这个 expected speedup 它为什么测一个就是这个期望值呢是因为这个 decoding 的一个 process 它是一个 memory bound 的一个过程那么呢它整体的这个效率基本上就跟你所需要读取的那个 kvcache 的那个量是相关的
然后前面我们提到了就是 NSA 它对这个 MQA 它是更有好处的因为它限制了每一个 group 下面它的 hide 它都要去 attend 到同样的那个 kvcash 就减少了很多的这个读取所以它不但相较于 FullAttention 来比它会快它其实它相较于 Quest 或者相较于
kimi 的 moba 来说他都是在 de-coding 上面会有天然的优势的这也是我非常喜欢 native sparse attention 的一点就是说就是说他发现这个嗯每一个 group 他这个 query 嗯他需要之后他能带来的提升嗯很多嗯虽然他会有一些局限性但是就是嗯他们就是进行了一些
比较激进的修改比方说增强很多那个 hide 的数量来保证这个模型它的 performance 也是在线的这样呢就我们可以击打到 performance 不掉甚至更好然后我们又同时在 inference time 就是非常非常高效这一点我觉得这一点是非常非常难能可贵的
DeepSeq 他们就是真的很敢去改架构就跟别的地方相比最后我们可以看一下这个地方他是做了一个 Operation Study 然后他来看就是说他的这个选 block 他的机制的一个 Operation Study
然后像之前我们提到就是之前那个 block selection 的话呢它有一个 complex 一个压缩的一个分支它是那个压缩的分支它会算出一个 output 就是基于每一个 chunk 压缩过的那个 key 和 value 来算的
那个分支呢它其实是有就在训练的时候呢它是有梯度传回去的然后这个模型就能通过这个这种 N2N 的这种 training 来知道哪一些 block 它的比较重要
这个机子就是还是蛮巧妙的如果没有这一个压缩的这一个分支的话呢那其实的话呢它其实是有一个不可倒的过程的因为如果没有那个我们再回到那个图方便看一点回到这个图的话如果我们只有我们只有这一步我们没有这一个 compress 的 attention 的话呢我们没有这一步的话
那我们就是没有这种训练的信号传回来吗然后我们这里做一个 top end 的这个 selection 它又是一个不可倒的过程所以如果这里有提度传回去的话它整个的这个 block selection 它的这个过程是更加的 informative 的
回到前面然后他做的 ablation study 呢他是跟嗯另外一些机制来做的嗯比方说嗯又是我们的老朋友 quest 了然后 quest 的话呢他其实是一种就是 prime of rate 的一种 importance score competition 嗯他应该是
我记得是这里是 following the strategy of quest 他们就是用这样一个机制来做的这个具体它是什么机制呢就欢迎大家去看 quest 的原文然后他还有一个机制就是加了一个这个就是 quest 的机制我们可以看到这个机制就是路是不是很好
因为可能就是说他那个选那个 block 的那个机制太 heuristic 了所以他可能选到那个 block 不是很好这也说明就是说这个 block selection 它还是蛮关关键的然后也证明了他们这个 compress 那个 attention 的那个 output 它的那个重要性然后另外他还有一个辅助 lose 的一个 selection
然后这个地方也不行所以他们这篇工作他们就做了一个这个 ablation study 把市面上常见的一些替代方案全部拉来做了一遍然后来证明他的这个方案是最优的这样的话大家就能更加幸福就是比方说为什么会有那个第一个分支这个也更加 make sense 了
所以他们这个会强调他们是一个可回传就是可以反向传播的一个 selection 的一个机制就是因为有那个压缩的那个分支在里面他可以把那个规定把它反传回去好的这就是这一篇 Native Spots Attention 我觉得值得讲的部分就带大家过了一遍我来问你几个问题啊
好呀他这篇工作是小创新多还是大创新多我觉得他这篇工作创新来说的话呢其实大家就很有可能就是浮于表面就比方说大家看到这个图
就觉得这边工作它没有什么创新因为我们每一个 module 都是已有的比方说 sliding window attention 用的非常非常的多然后像 block 来做 slash 在 quest 里面也已经有了然后 compression branch 它也不是不常见这三个东西它都没有那个
嗯那我体在里面那这一片不就是一个缝合怪吗有什么了不起的就是很多人可能可能会有嗯这么一个观点但是我觉得这一片他的 significance 他不在于这些小模择啊或者说他就是他其实他我觉得他那个更重要的一点就是说嗯他把这个 selected attention 做了一些改进能够让他啊变得呃硬件上面啊就是无论是在
推理的时候在 auto regressive decoding 还是在训练的时候它都会更高效我觉得这一点是非常非常重要的这样的话它才能做预训练然后在这种 decoding 的时候效率更高这也是为什么这篇 paper 它强调的并不是这三个分支的这种 lovity 它强调的是
就是说他是第一个把这个这种 query of will 的这种给他来做预训练的然后我们前面也看到了这个机制他确实在预训练阶段他确实速度很快然后他比那个负耳探设来比他那个表现甚至会更好
就达到了既快又好的一个效果那就不愧是 DeepSeek 就是非常非常惊艳的一个效果所以它是能在硬件高效实现训练的同时能够降本增效是吧降本的话呢它其实就是硬件高效的一个体现嘛哦 它是结果对对对就是你只有硬件高效你才能降本要不然的话呢它就是会训得比较艰难一点
像 Quest 这种模型它也能做预训练像我们之后要提到 Kimi 的那个 MOVA 它其实就是跟 Quest 的思路差不多然后它也是能够 scale up 的也是能做一些预训练的但是呢预训练它的那个 efficiency 可能就不如这个 NSA 的那个效率好了
然后 Quest 和那个 MOBA 他们这个 influence 的这个 efficiency 也是会在 MQA 的这个 case 下面会有一些损失的这个我们之前也是反复解释强调过的它这个是算法架构创新还是工程化创新比较多
我觉得就是按工程创新的角度来看我觉得 Latius Buster Tent 可以属于这个类别因为他没有提出非常非常新的概念这些概念都是已有的然后他只是把这些已有的概念让他更加去适配那些 Hardwell 从而能够达到更快的这个训练和推理的那个速度
对从这个层面来说可能就是工程创新要更多一点实现硬件清和 Hardware Branding 对对对这篇 paper 有你非常喜欢的部分吗我觉得非常喜欢的部分就是那个 kernel 的设计因为我本身自己也很喜欢写 kernel 然后看到这种 kernel 写法就感觉非常有意思
就很多人可能觉得这个模型架构就是不是很优雅吗但是我觉得这个 kernel 是非常的优雅的就是几乎就是一个完美的一个呃就是 choreo wellspark attention 的一个玩法对他就是基本上没有什么浪费然后又能应用应用到嗯该利用到的这种硬件上面的这种啊计算资源比方说 tensor core 他就是嗯
靠这个嗨的代曼城来凑一个没去 smart vacation
对这也是我第一次见到有人这么在训练阶段来这么做的就之前已经有人在 influence 阶段这么玩了但这个是我第一次在训练阶段这么见看的他的这些设计能体现出他的大胆是吧确实还是很大胆因为就是就是很多人可能会 concern 就是你这么多个 head 来 share 那个选取的 kvblock 会不会掉点呀之类的
我就觉得大多数人还是有这种 concern 的然后 dbc 就说那我不管那我一定要 share 因为他这个东西就是硬件高效那调点好吧呀那调点的话呢我干脆就是把 high 的数量给他加大然后我再加一些 avoid branch 就是我们前面也提到他有三个分支嘛
然后这然后就是可能这两个分支可能会对这个可能是要带来的负面影响会稍微缓解一点对然后我们可以看到最后的结果就是他非常大胆的是要了这个 group query 他那个害的他选择的 kbblock 之后他还是能有很很好的 performance
所以从这点来看呢我觉得确实是一篇非常大胆的一个举动你之前跟我说的时候说它是硬件上的暴力美学这个你能不能展开讲讲对啊这就是非常硬件的暴力美学我觉得它的这个首先它这里它对这个 GQA 这个推理的这个分析就分析的很有很很有见解然后它同时它这个
通过强行需要那个不同的 query 能够注意到相同的这个 kbblock 然后再来设计这样一个这样一个科呢我觉得都是层层相扣的就是少一点都不行然后就感觉到就是就是在这种硬件上面的限制下面它能在刀刃就是它能就是
像刀尖舔血一样就是能够同时还能还能坚守他的大原则因为这片子大原则其实就是 quest 嘛就是 Omega query 他想要去选的这个 block 是不同的这是一个大原则
然后 Native Space Attention 它的处理方式我觉得是在 Quest 这个框架下面的一个最优解了它能够非常非常高效率地利用到这个硬件然后它这个科罗速度非常非常的快对所以它就是对可以称得上是一种硬件上的一种暴力美学了
OpenAI 是怎么做这个工作的呀因为他们不能叫 OpenAI 他们是 CloseAI 所以大家也不知道具体用了什么东西然后像之前 GBT-3 的话它在那个 Technical Report 里面他们说了他们用到了 Sparse Attention 但是可能用的不是这种动态的 Sparsity 他们可能还是用的比方说像 Big Bird 那种静态的那种 AttentionSparse Attention
然后像现在的话呢就是他们这个 technical report 他们提供的 technical detail 就越来越少了这个大家也猜不出来他们到底用的是哪一种架构就肯定江湖上面有很多传言但这个就是没法考证了好的我们可以继续然后这一篇我基本上就讲完了然后我们可以来看到第二篇工作这一篇工作就是由 Kimi
Kimi 最近也是非常在往开源化的方向来走像 Mama 她是已经开源了然后她们今天
就是早些时候他们开院了一个基于 Mion 的一个新型油化器的一个呃一个呃方案然后他们开院了 Cobase 和为的就是非常非常的呃值得呃为他们称赞然后他们最近就是他们经常是跟 DeepSeek 对居吗就是大家会戏称这个是周门对居
这其实也体现出了就是 Kimi 他们的一个技术实力因为大家都是非常认可 DeepSeek 的一个实力的但其实我们可以发现 Kimi 它其实在研发方面他们也是很有实力的比方说这篇工作我们可以看到熟悉的身影比方有苏健林苏老师在里面做证
他们研发团的感觉还是水平还是挺在线的所以可以给我们献上很多跟 DeepSeek 专门对峙的一些经典作品这个 Moba 的工作它前面我们提到了它跟
DeepSeek 的那篇工作非常像他们都是跟在 Quest 的 frameworkQuest 就是 ChoreoVille 的一个 spot attention 在这个 framework 下面来做一些不仅仅是 influence 加速的一些工作而且还有这种预训练的一个工作然后 Mobile 的话呢它非常简单就是其实我们之前讲完了 Quest 和那个
那叫 sparsal tension 然后猫把的话呢就能在非常短的时间里面讲完
首先在 Quest 的框架下面每一个 Key 的一个 block 的话它是需要算出一个表示的然后这个 Query 会跟这个 block 的一个 Key 的一个表示来算出 attention score
然后在这里这个表示呢他是直接用到了一个命铺你他这个东西就非常非常的像之前的话 divsic 还用到了那个用到了一个 mlp 来做一个 projection 所以的话就干脆用了一个命铺你这样的就是完全没有任何多余的引入的一个参数然后另外的话呢像之前
DeepSync 它是有三个分支的我们可以看到它这里有三个分支然后 Kimi 的话它就把这个 Compress 的 attention 这个 output 的分支看了然后再把 sliding windowattention 的 output 的分支给它看了然后只保留中间这个分支然后这样的话整体的模型的简约性能是比
比那个呃那些低比赛的那个是要嗯更简单很多的所以嗯从这个方面来说呢就很多人会觉得啊魔法是比那个类似巴萨坦神然后更加优雅的
然后他们的团队就是说他们相信 SGD 的力量就是说他不需要这一些 Lose 他也可以通过这个 SGD 就是能够选到一些很好的这个 Top K Block 但我觉得这个可能是跟 Deep Seek 的那个 Oblation Study 是有出入的所以具体哪一种好呢我觉得还是有待进一步的研究的
这两篇工作都是很好的就是打开了一个新世界的大门就是说原来这种动态 spasitization 也是可以做预训练的对我觉得之后可能会有很多研究也来更多的 focus on 这个 dynamic spasity 的一个预训练的一个上面而不是仅仅在于这个 influence 上面
然后这里整体的架构就是基本上没有什么可讲的因为它这个是非常非常简单的然后它跟 Quest 一样每一个 Hide 它可以有自己的自由度去选择他们想要去 attend 到的那个 KV block 这样的话呢他们其实他们的这个 tone 点就变到了这个 implementation
之前的话这个 native sparse attention 的话可以利用到他们那个 shell 的那一点然后就是能够非常就是不会多读一些东西就是他们每一部的读取都是不会浪费一点东西的
但是在这里的话呢就是既然 query 会选不同的这个 block 那么这种浪费就是你要么会浪费东西要么的话呢你就说对于每一个 block 像这里的操就是对于每一个 block 然后他会找到所有的这个 query token 那他们可能是不连续的嘛
然后呃因为是不连续的如果你不落后不落后这么读的话呢他就会读一些呃多余的东西他们就干脆就是在事先就是啊把这个 chore block 就是不连续的这些嗯 query token 把它先提出来用一个连续的一个张量把它存起来然后之后呢他们就直接去掉这个 flash attention 的这个 kernel 就是来做所以他们主要就是
就是有一个对每一个 kvblock 他们需要把所有的选到他们这个 block 的对应的 querytoken 要把它全部选出来所以看他们的 callbase 呢他们其实就是主要做的就是各种演化了乱的一些 indexing 和 reindexing 的一些 operation 但是呢这个地方呢其实是有 overhead 的这个东西不是 for free 的
如果当这个 kvblock 的数量足够多的时候嗯这一步其实可能会成为一个 bottonette 这是为什么呢就是嗯这也是为什么嗯嗯这个 kimi 他用到一个 512 的一个 block size 然后我们可以返回来我们看一下这个 divsig 他用到的一些参数对
我们就可以发现 divsig 他用到的参数应该是找一下哦他们用到的是这个就是说他每一个 block size 是 64 然后这边 kimi 呢他是 512 然后 top k 呢嗯这边是选 top16 这边呢是选 top3 然后他整体的这个 token 加起来可能是差不多的对
但是就是因为这一边它不能像 Lithium Sparsal Tension 一样写出一个这样子的 kernel 所以他们必须要做一些对于每一个 KV block 来说他们要把那些选到他们的那些 quadro 把它全部提出来这个操作的话如果当 block size 比较小的话
是非常也不能就是会引入很多那种 overhead 这个 overhead 可能就是当不落赛很小的时候比方说在这个 case 把它赛成 64 的话那可能就是一个无法接受的一个局面
所以说就是大家嗯嗯就是嗯虽然看到了就是那个 MOBA 它表面上的这种简约但是也应该注意到一些隐藏的问题就比方说这个第一个地方是这个 KV 的这个 block size 它就是没有办法开的特别小的这个地方的话呢其实也是一种局限性吧我觉得
因为你能够选的这个 token 就这么多然后你不到 size 如果太大了那这个就是可以说是力度太粗了嘛然后你只选 top3 你稍微一不小心你就可能会把一些重要的东西把它漏掉对吗然后这边他这个力度非常非常的小他就是 64 就是他是 64 个那个在哪在上面就是他 64
他 64 的一个 block size 然后他是 16 个 block 这样的话呢他其实在选 block 的上面他是更加吸力度的然后他的容错率也更加大嘛因为他反正能选 16 个嘛就选三个容易错但是选 16 个啊就那个错的概率就会小一点了对这是我觉得这个 key me 他
简约的背后付出的代价之一就是这个 block size 他可能开不了太大开就是开不了太小他没法太细腻度的来选这个 kv block 然后其次呢我们可以关注到他这个加速比
加速比我觉得这个也是值得来对比一下我先来找一下它加速比的地方在在哪里来着我在这个地方你可以看到它这个东西它在 128k 的时候它其实都没有什么优势但是对于 deep seek 这个模型来说呢它其实在很短的上面就比方说这里是在
在 18K 16K 上面这个加速比就已经肉眼可见了这也是 Native Speed Spatial Tension 它更加硬件亲和的一个结果对 Chimmy 的话它
对然后我们可以再看到一个细节就是说这个 training rules 的一个对比像这个的话我们可以看到就是随着训练的进行它基本上都是稳压这个稳压这个 full attention 的然后我们可以看到像 Kimi 的话呢就是说她要我记得是这边的话她是要训到
一个一定的阶段他才能把这个 gap 把它变小的也就是说在前期的话呢他还是会比这个富尔探神要差一点的所以我不确定这个是不是这个 block size 太粗带来的一些负面作用然后其次的话呢就是说嗯 kimi 虽然把这个因为虽然他们相信 sgd 的力量他们把
DeepSig 他们的这个 compress 的这个 OPPO 的这个分支把它砍掉了但同样也带来了一个问题就是在 sft 的时候他们会存在一个就是一个 spas 的一个问题我这里 highlight 一下就是说他们会说
MOBA 它在 SFT 的时候它会有一些 suboptimal performance 这是为什么呢是因为在 SFT 的时候呢它有一个很长的 prompt 就是它那个 preface 它是不进入这个损失 lose 的一个计算的只考虑那些可能后面的一些那些 lose 那些 token 它的 lose
然后它这又是一个 spas 和 tension 所以如果那后面那少部分的那个头感的路子呢如果没有覆盖到某一些 block 那对于那些 block 来说呢它是没有任何提度信息的所以这是造成了一个这个训练信号的一个稀疏性然后这里他们就提到了就是这个 gradient 它是不是很好反传的
然后为了解决这个问题呢他们搞了一个 hybrid 的一个 approach 他们就是把最后三层呢把它 switch 到那个 full attention 这样的话呢就是最上面的三层他用 full attention 他其实是有一个非常稠密的一个梯度信息的就是对每一个 token 他都是有梯度的
这样的话呢他就保证了就是训练信号他不吸输然后这样的话呢他这个 performanceSFT 的 performance 他是会增加很多的他们在他们的知乎 blog 上面也
他们很有意思他们在智慧的博士上面就是把他们的 trend of thought 都已经写出来了就是这个 ideal 他们是就是他们具体的心路历程我记得他们好像写了很多个 episode 就在不同阶段他们遇到的各种难题然后怎么去解决它他们都写出来了这可能是之后那种 trend of thought 的那种 data 很优质的 data
就如果有人想训一个 AI 来做 research 的一个模型那一定要把他们的那个博客来做做个训练 data
然后像这一边呢像 native sparse attention 它应该是没有这个问题的因为我们这里有一个 compress attention 这一个分支它是直接参与这个 output 的一个计算的对吧然后我们 output 的话呢它就会把这个 gradient 把它反传给前面这所有的 token
这样的话呢这个 LATINOS BUS ATTENTION 它就不存在一个这个梯度稀疏的一个问题这是 KIMI 一个特有的问题我觉得是因为它砍掉了这个 COMPRESSED ATTENTION 他们相信 SGD 能找到正确的 BLOCK 但 SGD 可能这个信号不是很足在 SFT 的时候所以就没有办法找到正确的 BLOCK 了
对但好在他们这个东西就是非常的简约他们没有引入其他的东西就是一个非常极简的设计这一点来说也是非常的优雅的这也给他们去解决第三个问题带来了一个可能性他们是
就是他们会提到他们有一个切换的问题就是说他们可以把最后三层把它直接换成 global attention 这个是没有任何问题的吗因为他们这个整体的嗯这个 component 就之前为什么没有这个嗯之前他们用这个名谱理论它是一个不需要参数的一个方法所以说他这整个过程他就是非常非常的极简没有引入任何参数
这也就是所以说他们所有参数都是一样的只是他们那个路时计算不一样那我完全可以就是自由的在这个负 attention 和这个 block 这个 spaceattention 里面做一个自由的切换然后他们是在 sft 里面就是用到了这个自由切换的这个特性
然后我相信他们好像是在另外一个阶段他们也用到了我记得他们在预训练的时候他们好像也用到了这个性质就是说他们 90%的 token 是用 spas 的 tension 来训练然后后面他们切换到 ful tension 那来对剩下 10%的训练 token 来做一个 global tension 的训练
这样呢就有可能让整体的 performance 会变得等一下他这是只是一个 ablation studysorry 看走眼了我看看他们的 ablation study 哦他们发现这种啊对确实他们发现这种 hybrid 的这种训法能够嗯提高这个 performance 我们这个绿线的话呢是 moba 和副 hybrid 的对
然后说明这种自由切换他们不但能在 sft 上面带来好处可能在预训练的时候也会带来一些好处对这就是他们极简他们这个极简设计就是有利有弊吧最后 evaluation 的话呢他们就是做一些很长文本的这个 evaluation
他们的测试的长度是要比 deep seek 是要更长一点的比方说他们现在真是测到 100 万的这个级别 deep seek 好像只测到了 64K 然后后面的这些长文本的这些结果都是蛮好的然后据他们所称
这个 MOBA 也是实际投入了这个 Kimi 他们的这个产品的这个落地的所以可见这个 MOBA 的这个有效性他们用脚投票了就是自己都在自己的产品里面用这个模型这大概就是 Kimi 的一个值得提的一些部分就因为我们在因为我们在
因为我们在第一篇已经讲了很多这种 preliminary 的一些知识了所以反过来再看 Kimi 的话就非常非常容易的理解他们在干嘛 Kimi 和 DeepSick 的工作你觉得他们有互相能够借鉴的地方吗我觉得可能他们是有两种设计哲学吧就是 DeepSick 更加硬件暴力美学一点这一点也可以从他们之前的工作看出来比方说 MLA
然后 Kimi 这边感觉可能更加极简一点他们就是想做一个就是把不必要的地方都把它砍掉我觉得可能就是这种具体的技术选择路线不同吧然后技术选择路线的不同也会带来就比方说具体实现的那个效率对如果
如果想要硬件更高效的话好像只能走那种 native sparse attention 的那条道路虽然 quest 和 moba 也能做预训练但是那个提速比好像没有像 native sparse attention 那么夸张也就是说可能他们这个可以在很长的这个 pre-filling 上面有提速但是一般预训练的时候其实我们这个文本长度不会很长
一般可能就 8K 吧然后在这种上面的话呢这个 MOBA 相较于 Full Attention 它的那个训练是没有好处的但是像这边它其实在 8K 长度它就有一些实打实的一个加速了这也是跟他们的设计哲学是有关系的因为他们就是非常强调这种软硬件的这种协同的设计
它硬件有硬件的限制吗它就需要特定型号的硬件吗就很多人觉得不应该算法不应该去 overfit 这个硬件但是我觉得还是有很多这种相同的 principle 的就是无论你什么硬件有一些原则是共用的
比方说就像矩阵乘法那这个东西就是天天生的快就是你不论在任何的这种类 GPU 的这种硬件上面它都会很快然后像这种呃就是连续的这种 data 读取这个也是在呃基本上所有的这种硬件上面都是一样的所以我们要保证就是我们这些有一些很多这种运算能够写成矩阵乘法
然后我们在读取的时候我们尽可能这种 block by block 这么连续的来读这都是一些非常常用的一些 principle 然后我觉得短期之类或者甚至长期之类这个 principle 也不会有任何改变的
所以这也告诉我们就是如果在设计算法的时候我们提前考虑到了这个算法它对于这种 memory 的这种 access 它能不能 block by block 这么读然后它能不能写成矩阵乘法就是我们在设计算法之前
就可能就是需要对这一方面有更加深入的一些考量但是我觉得这一点呢就可能会被很多的算法从业者给忽略就比方说大家看到 Native Sparse Attention 这个图就觉得丑了就很多算法设计工作者可能有一些
模型架构的洁癖吧就觉得这个就是拼凑在一起但是我觉得从硬件暴力美学来看呢这个我觉得也无可厚非吧只要它够快速度够快 performance 够好那我觉得它就是美的 OK 所以这个是一个是硬件的暴力美学另外一个是极简优雅算法他们两个的一个就是他们两个这次在这次工作上提前的不同
对对对除了这个技术哲学他们在优化目标上是一致的吗我觉得他们的优化目标都是一致的他们都想我觉得他们应该都想就是没有人不想一个算法既在 pre-fitting 的阶段又在 de-coding 的阶段他们都搞笑吧大家肯定都想就是在不同的阶段就是越快越好吧
这一趟我结束了好呀那我们就是简单的带大家过完了就是本周新出的两个这种动态系数助力的一个工作然后接下来我们可能来聚焦一些这种 hybrid 的一个架构
Hybrid 的架构呢比方说 MiniMax01 它就是最近一个很大的把它下载下来吧就它是一个第一次就是一个非常大的一个这种模型然后他们说是有这种 GPT-4O 的这种 performance 的
那什么是 Hybrid 架构呢 Hybrid 架构就是让我们点到下面这是 mini max 的一个架构图他这里有一个注意到我们这里有一个 M 乘以就说明他是会有多层的这个线性注意力的这个 layer 在这个 case 呢他们用的是 lightning 的 tension 然后这个 M 呢他们取的这个值是
也就是说他们首先他们会有七层的这个线性注意力然后再会有一层的这个 soil mass attention 这样摘下来就八层了嘛而他们总共有八十层那这样的话呢就是他们会把这个整体的这个他们会把这个这个模具把它重复十遍
对就是先七层你两个 tension 再一层说 my third tension 再七层线性的 tension 就这么依次重复下去他这个注意力机制首先跟我们前面讲的那两个都是完全不一样的这个是你的专业对吧对因为这个东西我主要就是在做一些线性注意力的一个东西前面的话就是
客串来讲一下 Spa Sertansion 就之前我也也是跟大家一样就是从零开始学习这种 Spa Sertansion 然后精读了一下就是给大家分享一下我的体会然后这边的话就应该是我的主场范围了我的 Ninja Sertansion 这边还是特别熟的 Ninja Sertansion 的话它
我这可能把我的 slides 放出来会更加容易讲因为这边的这个 rotation 有一点点混乱所以这可能换成我的 slides 讲就是我之前这里这个主页这里有一个 open 的 slides 然后大家可以看然后什么是线性注意点呢之前我们这个多管耳滩神叫 so much attention
因为就是这个地方它有一个 softmax 的一个 operator 先行注意的话呢就是把这个 softmax 的这个操作把它去掉非常非常简单然后我们可以看到这个 iterative 的这个 inference 我们把它提过来这是 iterative inference 这个 turn 是 attention 的 score 它是一个标量然后我们把标量移到后面
然后再把这两个顺序调一下因为这两个调一下它这个结果是相同的最后我们发现这些都是一些线性的操作然后我们用这个线性操作的一个结合率把它结合成这个样子然后我们发现这个地方呢它其实是一个就是它们之间外积的一个累加
然后它是一个恒定大小的一个矩阵它是一个低乘以低的一个矩阵如果我们把这个矩阵看成一个 Rn 的一个 hidden state 那么这个 linear tension 它这个整体的过程它就是一个 linear recurrence 的一个过程
然后它这个 linear recurrence 其实是一个累加的一个过程它每次把这个当前时刻它的这个 kv 它的这个 alt product 把它加到这个 hidden memory 里面来然后它这个地方是有一个我们经常会提到在 linear 探测里面经常会提到一个词叫做 matches by hidden state
因为这个 hidden state 它的这个它是它的大小是一个 d8d 的一个矩阵所以我们管它叫做它叫成一个 major spire 的一个 hidden state 这个东西呢是用来区别于那些传统的 rn 比方说像 stm 它用到的东西呢就是一个向量的一个 hidden state 他们一般他们那个 hidden state 就是一个一位的向量它那个容量啊就大概是
低尾这个样子然后在尼尼奥坦逊的话呢它实际上是实现了一个增尾的一个过程就从那个低尾变成了一个低沉低尾我可以看出这个 Hidden State Size 是非常非常大的就是跟之前的这种传统的 RN 来说是非常非常大的然后它大完之后呢它有一个好处就是说尼尼奥坦逊呢它是完全依赖于就像
不只是 linear attention 更多的是那些所谓的这种 RN 的话呢它是只依赖于这一个 hidden state 来将所有的历史信息来做一个 encoding 的但也就是说这个 hidden state 它的大小就是直接跟这个 RN 它这个模型它的记忆的容量是成相关的
那也就难怪这种 Linear Tension 它会比之前那种传统的 RN 它的表现要好因为它有一个 Static Expansion 的一个过程 Static Expansion 它其实也是 Mamba 这个大家熟能详的工作它反复强调的一个东西
然后我在这里想强调一下 Ninja Tension 它有着最硬件高效的一个 Static Expansion 扩充容量的一个操作因为这里是一个 Auto Product 它是最硬件高效的我们前面在第一个 part 我们讲到了硬件高效的 Lative Sparse Tension 然后在 Ninja Tension 里面
我们又一次讲到了硬件高效这足以证明就是其实嗯在这个年代呢就是设计算法就是最好还是能让他嗯怎么硬件高效怎么来然后像 Mamba2 的话呢他为了解决 Mamba1 他硬件不高效的一个呃一个问题他就啊把它进行了一些改写然后我们后面可以看到他这个改写呢就把它改的非常像那个
linear tension 我们大概稍微马上就会讲到然后这个地方呢我们讲一下这个它为什么就是很难训练就是 linear tension 的训练的一些困难性在哪里像这个地方呢就是如果我们做这种 self-attention 这种类似的这种训练的话呢我们可以看到它还是跟整体长度是成平方关系的
那么我们在很长的 sequence 下面呢这个这个架构是没有什么训练上面是没有什么好处的然后在循环的上面呢我们可以看到嗯如果我们用循环来做的话呢这个首先他第一步他是循环算的话呢他就是没有那种变形度吗他就会很慢就像传统的 s t m 一样
第二个一点的话呢就是说这个操作里面它是没有任何矩阵乘法的这个操作在里面的我们这里是一个外击然后这个地方呢是一个矩阵向量的一个乘法来做一个 memory readout 这也是前面我们在 lithium sparse attention 也讲到了就是讲到它是
用一些很暴力的方式来凑一些举证惩罚然后这些原则都是相通的然后在虚心追定的话我们也想凑举证惩罚但是在循环形式我们测不出来怎么办呢那我们就想办法就是我们把一个创可来进行一个打包
把 tronk size 这一个 dimension 就凑成它的那个矩阵乘法的一部分就是一部分的一个 dimension 就是这些操作就大家可能听起来有点耳熟了就像之前 native sparsal tension 它就是强行把 high 的那个维度把它拉进来凑了一个矩阵乘法
大家如果关心设计算法的时候关心硬件的话很多时候大家都在想怎么去凑这个矩阵乘法就比方说有一篇工作叫做 Flash FFT 它这个工作它就是 FFT 快速负力变换是一个非常经典的算法但是它在当前的 Hardware 上面它不是非常非常的快
因为它没有这种矩阵惩罚的这种效果没有矩阵惩罚的这个 operation 这一点就跟那个 linear tension 它的这个循环形式很像然后在这篇文章里面呢它就是为了在硬件上面进行加速它就是这样一个算法
它就是能把这个 FFT 写成一个等价的一个矩阵惩罚的一个表达的形式从而能够利用 TensorCore 来进行一个加速我们可以看到这种加速就是非常非常大的在硬件上面然后感觉在短期上面来看呢就是我们还是要尽可能的把像我之前提到就是尽可能的把一些算法写成矩阵惩罚
这样的话你就能直接看到这个效果就是立竿见影你可以直接在当前的硬件下面进行优化你就不需要等到比方说未来某些架构比方说未来有些什么量子计算机啊 blah blah 的一些硬件那个的话就我不知道要等到什么时候
那为什么不直接把它去恶纳一下当前的这些架构呢硬件呢然后我前面也提到就是因为很多这种 principle 它都是对于不同的硬件它都是相通的比方说写成矩阵乘法比方说那些就是把它做一些 blockwise 的一些操作这些都是很相通的然后回到我们这里
然后像 netaline 向前面找一下刚刚那个文章在哪里来着在这里像这个的话呢他也是提到了一个这个 trunkwise 的一个算法用来做这种高效的训练对他们应该是有一个 trunkwise 算法的然后这种 trunkwise 算法呢其实就是
我不去算整体的这个就是我不是像循环一样每一个 token 这么来算这个 opper 的我是直接就是把这个序列先分成若干个 tronc 就有点像 native sparse attention 或者 quest 他们也是把序列等分
然后我们就是对这个每一个 tronk 它只算一个 last hidden state 然后算 output 的时候呢我们就可以结合这两种算法再算就是历史的这种 context 的贡献度的时候呢我们可以用循环模式然后对于 local 的这个 tronk 里面的这些贡献度来说呢我们就可以用到这个并行模式
然后需要强调一点的话呢就是说啊这个窗块是风他可以把它就是当你这个创业赛事设成一些其他值的时候他可以还原出这个旅客人风和这个啊啊 self attention 那个并行模式的那个风然后双外风它是一种啊数学上等价的一种变换它不是一种 approximation
然后这里简单讲一下这个窗户 Sagredon 我在其他平台应该也是有介绍过的但是这里我们再来回顾一下在窗户 S 的话呢它就是我们这里有两个灰色的这个呃
Hidden State 就代表它这个地方直接被跳过了我们不算中间的我们直接跳到这个最后一个 Hidden State 然后我们就是把这三个 Token 就把这个窗口里面的 Token 打包来一次性算出这个中间的这个 Hidden State Update 因为我们前面说到这个 AutoPortdown 它的这个相加是可以写成一个矩阵惩罚的形式的
所以我们这里可以写成一个矩阵乘法然后在 output computation 之前我们要用这个 query 去 attend 这个 hidden state 来删除 output 然后对于整个 trunk 来说我们发现它所有的 query 它都要去 attend 同一个 memory
这会有点又有点像那种 batify 的一个操作了吗因为这个就有点像那个 weight matrix 然后这是三个训练一个 sample 这有点像 batify 的一个操作这也是正因为此这个 c 这个维度 chunk dimension 的维度就有点像那个 batch dimension 然后在这里我们就可以抽一个矩阵乘法出来然后我们就可以来算出这种历史 context 对整体的一个贡献度
因为我们再回顾一下这个 hidden state 它其实是已经 encode 它在这个位置之前所有的历史信息直接我们就可以用这个循环风直接把这个整体的历史都考虑进去这也是为什么这个 tronquist 风它是一个 exact 风就是因为有这个东西来把整体的信息都考虑进去了
其次呢我们有一个这个呃 local trunk 的一个风我们就是类似于一个 local trunk 的一个 tension 然后我们把这个 output 就是直接算出来这样的话呢我们也是一些矩阵乘法的一些操作在里面然后它整体的复杂度呢它是一个呃这样子呃 d 是 high dimensionl 是 for sequence
然后 C 的话是 trunk size 一般这个 trunk size 我们就是设到比较中间的一个量这的话它不随着这个 L 增大所以结果就是说我们整体的训练复杂度是 sub quadratic 的它不是平方关系的这也就是有可能我们可以把力量 tension 用在非常长的一个预训练上面比方说
比如说一个很好的一个应用场景就是比如说像 video generation 它可以被 frame 成一个序列建模的一个问题然后它然后它比方说你几分钟的一个 video 它的那个序列长度其实非常非常大的可以很轻松的来到一个百万级别所以用这种 subconjective model 来做这种 video modeling 的话可能就会有一些先天的优势在里面
然后这个创外的算法呢它其实是非常 general 的它可以跟这种力量 tension 为是 decay 或者甚至说力量 tension 为是 delta ruledelta rule 的话呢也是一个很有意思的东西它跟最近非常火的比方说 testant training 然后和那个谷歌新出的那个叫做 titans 也是有很多很多关联的
最近这些线性注意力的这种现代的线性注意力模型比方说 Mamba2GLAGateDialog 然后这个 LightningAttention 其实也是 minimax 用到的那个模型然后包括 MSTM 这个就是 LSTM 那个作者团队他们有一篇工作叫做 XSTM
然后在这个工作里面呢就这个作者呢就是那个 LSTM 的那个一座然后就是他们呃就是 LSTM 那个一座就是打造出了一个现代的一个可以变形的一个版本然后他那个 MSTM 可以看成一个线性注意力然后有了川外风之后呢我们其实还要做一些 IO 的优化嘛就有点像 flash attention 但这里我们就不提了
我们有一个开源库啊 flash linear tension 就是在这库里面呢我们就写了很多很多这种硬件高效的一些 linear tension 的实现然后我们这里就支持了非常非常多的 model 然后大家如果对呃
这就简单做一个广告就大家如果想训这些现代的这些你俩谈什么的话呢就欢迎来用我们的库然后我们提供客服服务就是遇到问题就尽管尽管问我们就包解决一切问题然后后面的话嗯可以在给号一宿区然后对我们我们我们一般都回的比较快然后像
之前的话呢就 Ninja Tension 它其实有个问题就是说它的那个 performance 就是 language modeling performance 太差了然后导致于大家都有一个印象就是 Ninja Tension 它不 work 但是实际上呢它从前两年开始到现在就是那个进展是非常非常快的就大家对 Ninja Tension 的那个印象可能还停留在比方说四五年前
那个时候力量太省的那个 performance 确实差但现在呢大家这个 performance 就已经上来了对就大家可能要 update 一下自己的一些 prior 的一些 knowledge 了他主要的一些提升呢就是加很简单就加 dk 像 rightlight 呢就是啊这也是一个非常嗯比较经典的一个 work 他也是出自于
出自于 MSI 他们做出来的一片工作在当时也是挺火的然后像 lightning attention 就是前面我们也讲到了像 minimax01 他们用到的就是这个模型然后这个地方呢就是这个遗忘率他每个位置他都是相同的这样会有一个问题就是说他没有各个位置他的那种可以选择的性
像 Mamba 它里面也强调了那个 Selectivity 像 LSTM 里面其实也强调了 Selectivity 在我看来就是那个 Mamba 的那个 Selectivity 呢其实就是 LSTM 那个 Getting Magnetism 的一个新胡装舅舅他们本质 ideal 是一样的只不过在这个新时代又重新被挖出来发光发热了
像 manba tool 呢他其实就是可以写成这样的一个形式然后他跟之前的这个啊然后来你的他的相比呢就是把这个伽马把它变成了一个 data dependent 的一个 dk 每个位置他可以嗯自己算自己的这个 dk 然后最下我们提到了有三种啊线性助力的一个呃形式然后这个同样呢也可以对啊这个理念摊设为 sdk 也可以把它 apply
这里简单的例子就是说这里我们有一个 gamma t 然后之前的话我们这个地方是一个 quadro mask 但是在这个地方我们需要去 encode 在这两个位置之间他们的这个 cumulative 到他们这个 decay 这个 tun 他们的累成
然后这两者的等价性能其实在 Mamba2 这篇 paper 里面呢他们管这个叫做 State-Space Duality 他们是从另外的一些比方说矩阵分解的一个角度 motivator 的他们有一种叫做 Semi-Separable 的一个矩阵然后他们是从那个矩阵的角度出发的
但其实他们这两个是等价的这里我想嗯就是对大家可能会看 Mamba 2 可能他们那个数学太多了会比较难理解但是嗯从这种 linear tension 的角度出发的话呢其实这些东西都是我觉得是更加好理解的然后他们这个也有一些 trunkwise 风对然后
这个 tranquilize4 呢它其实就跟 Mamba2 的那个他们的一个 block decomposition 的一个 tranquilize 的一个训练的方法其实也是等价的所以从这些角度我们来看呢就是 Mamba2 它完全可以说是一个 linear tension 的一个 model 只不过呢它有一个 data dependent 的一个 decay 对然后我们回来回到回到回到哪里来了
回到这一篇就是他也有一个 trunkwise 的一个 phone 然后有一个 trunkwise IO 高效的一个训法然后后面他们有一个 scanning law 他们发现这种 hybrid 架构他是要让他这个 scanning 的一个 behavior 是要比 softmax attention 要好的我觉得这也是挺挺容易
想到的因为很多时候大家都可以看到有一些 attention 和 RN 结合然后能够就是能够利用他们各自的好处所以他们我觉得 attention 和对他 softness attention 和这种 RN 他的那个好处是比较 complementary 的
像安的话呢他有一个 fixed hidden state size 这样的话呢就强迫这个模型去学出一些可以压缩的一些 pattern 因为他只有 fixed amount of 这个 hidden state size 嘛所以他必须要学会这个压缩的过程然后学习压缩的过程呢可能就会跟压缩级智能这个 concept 会有一些联系
反观 soft vice attention 的话呢它其实它是没有那种压缩的概念因为它会把所有的 kvcache 都把它保存下来但是保存下来之后呢它能够起到一个非常好的一个就是一个来做检索的一个地方像 RN 它经常被诟病的一点就是说它不能够很好地来做检索类的 task 比方说做 retrieval
因为这个也很容易理解就是 RN 它只有一个固定大小的一个 state 那它总不可能来记住所有的历史信息吧要不然物理学就不成立了然后 RN 的话呢就非常有利于来做这种于虚伪的 task 因为它反正就自己就有那种所有历史信息的 kvcash 嘛
然后经常会有一些比较形象的比喻就比方说 attention 呢它有点像翻书然后 RN 呢它有点像那种人的大脑因为人的大脑那个脑容量也是固定的嘛对然后人在需要的时候会去翻书但是一般的时候呢就其实就是靠着这个 fix size 的这些脑容量就其实已经够用了然后下面的话呢都是一些 performance 的对比然后我们可以看到
就是你俩纯力量 tension 呢在这些嗯嗯就是比方说 retrieve 比较强的一些 task 比方说这个是 needle your haystack 对他这个嗯就是非常考验一个模型的一个那个啊 retrieve 的一个能力这种 task 呢就是力量 tension 的短板了嗯但是嗯
如果把这个 attention 和 rn 结合起来那它可能反而会更好因为值得一提的是这些 hybrid 架构呢它一般 rn 的话呢它可以用来提供一个 position 的一个 encoding 的一个作用所以在这些 hybrid 架构呢很多它都不使用 position encoding 的
他就干脆就是用一个 rn 来因为 rn 他自带一个位置信息嘛他是一个可学的一个位置信息所以 rn 他可以用来充当这个 position encoding 然后这样的话呢就不存在 rop 他会遇到的一些比方说外推的问题了所以可能可能在外推到之外来做这种检索问题的时候这种 hybrid 架构可能会有些优势
像这个 speed 的话呢我们可以看到这个 sumice 的 tension 就在 8 k 下面之后就这个他会越来越慢然后像 hybrid 的话呢他虽然也会变慢因为他还是有一些 attention 层嘛但是呢因为他的 attention 层比较少像 minimax01 呢他是每 7 层 0.2tension 他才会有一层 sumiceattention 那这样的话呢其实他是
就是他 linear attention 他就是做了很多那种工作了然后 summas attention 的话呢他就只有很少的就是跟原来相比的话呢他的那个计算量会减少很多然后这篇 model 就是在各种各样的 benchmark 上面来证明这种 hybrid 架构的这种有效性对然后他也是我觉得这篇工作他
他就是他非常惊艳的一点就是说他是第一次把这个那辆 Hybrid 价格把它 scale up 到这个尺寸的然后能让他有 GPT-4O 这个 level 的一个 performance 所以大家还是挺惊艳的
然后他能 scaling up 到这么大他当然也离不开这种硬件上面的这种优化就比方说像之前我提到了那个创快的算法就如果这个时间搁在三四年前没有这个算法的时候呢大家想 scaling up 这个力量 tension 也不行就之前就是大家对力量 tension 的印象就是说
它只是理论上看起来快但实际上跑起来很慢对然后我想纠正一下大家的印象就是因为 Ninja Tension 它这两年确实发展的很快无论是 performance 还是这个 efficiency 上面然后我们可以看到 minimax 这篇文章呢它其实做了非常非常多的这个工程油画他们应该有一个很扎实的一个 infra 团队
这里的话就是有一些并行的一些策略比方说 MOE 里面非常常见的这个专家并行然后这些就是一些 Pipeline 的一些流水线并行的一个东西然后至于 Ninja Tension 的部分呢他们应该是做了一些分布式的一些 Tranquilized Ninja Tension 的一些扩展比方说他这里就是有一些
就是由 lightning attention 那个团队他们做出来的那种工程优化然后可以看出来其实这些工程优化的 detail 还是挺多的也可以看出来他们这个工程优化非常扎实这也是为什么他们能够把这种 hybrid modelscale up 到这么大这个跟工程优化是
密切相关的这所以也告诉也说明就是说如果一个算法他如果他硬件不高效他其实是很难 scale up 到这么大一个尺寸的然后如果 scale up 到不了到这么大尺寸是很难引起别人的关心的对因为现在大家都是 the bitter lesson 的信徒嘛就是说如果一个东西他不 scale 他他他不是 scalable 呢
那么大家对它的兴趣可能就会大几然后像 Linear Tension 我们最近就做了很多工作就是说它这个东西就是能够硬件高效率来迅的对这就是一点然后另外的话我觉得就是像这种 Hybrid 架构它并不是空穴来风它不是就是 mini max 就是单独发现这种 Hybrid 架构能 work
我觉得还是需要去提到一些其他工作的比方说像这个工作就是 NVIDIA 去年发的一个工作我们可以看到这渠道和 AirportMama 的作者就是也在这个 author list 上面然后他们应该是做到了一些但他们没有做到像 minimax 这么大
所以可能他们掀起来的水花就没有 minimax 这么大这也说明就是这年代就是想让这个工作吸引到足够多的注意力那还是要 scale up 到一个非常大的一个 scale 然后用这个最后的结果来说话
但在这种大 b 的 scale 下面呢就是在学术界看来是一个非常大的 scale 了但可能在业界看来就是一个小模型在这种小模型上面呢嗯其实嗯这边也说明这个 highway 的架构它是不输嗯其他架构的然后尤其是他们我觉得他们还有一些 ablation study 就是来看这个 attention 层他到底需要
多少比例然后这边也大概是得出一个大概是 10%到 20%这个比例范围是比较正常的这个也跟 minimax 那个 01 是不谋而合的因为 minimax 它的这个 attention 的这个配比大概也是在这个区间所以社区还有别的工作比方说 Vida 还有一个叫做
Humba 的工作他们就是有各种各样的这种这种 Hybrid 的一些思路在里面的对就各种各样的 Hybrid 的这种模型这种 Sliding with attention 这个也是经常经常能够在 Hybrid 的 model 里面见到的
对这个应该是在一个 3B 的一个模型上面做的然后对所以之前的这种混合架构其实我觉得大家都知道这个架构是有效的只不过缺少一个团队来把它就是把它 scale 到一个非常大的 scale 比方说像 mini max 这个对对对放大对
就是对有些技术出圈的话还是需要就是把它 scale 到非常大能 walk 才能引起足够多的关注所以我们做力量 tension 还要感谢 minimax 因为它就是说明了这种 hybrid 架构的这种有效性所以我们做力量 tension 的话就是关注度会感觉最近会比之前会高一点
为什么 minimax 没有选择像 kim deep seek 的那个吸收注意力的机制我觉得可能是 spas attention 更容易一点吧因为 spas attention 它的技术路线其实没有那么高风险比方说 spas attention 的话呢它还是把所有的 kvcache 都保留了然后
像 attention 他学出来的分布是一个 sparse 的的大家都知道嗯然后大家就可以很直觉的想到那我如果预训练一个 sparseattention 同时我又保证一些特性比方说我不不丢了个 kvcash 那这样的话我觉得这个模型的下限是有保证的嗯所以这个风险我感觉也是一个比较小的一个
上面因为在长文本上面的话你俩他想确实还是有非常非常多的质疑的包括像对对任何这种像啊内安的模型大家都是感觉他在长文本上面是不放心的对所以就不敢去不太敢去做这方面的研究然后像 hybrid 加工呢其实就是就是呃你了谈审对于这种质疑的一种
compromise 吧也算一种妥协因为有一些力量参数的研究者比方说 RWKV 他们就不向这些方面去妥协他们就很有自信相信 RN 就是这条路是只需要 RN 就够了
但是其他的一些更实际一点的会如果更 care 这些长文本的这些内容的话呢还是会做一些妥协的比方说加一些 attention 层进来我们说 DeepSeek 它在改架构上动刀子非常激进这么说的话 minimass 是不是更激进
我觉得 minimax 它有它激进的部分就比方说用一个这个方案但是这个方案又从某种程度来上就比方说熟悉这个领域的人都觉得嗯这个方案是非常非常 safe 的因为它已经在主要是美国的工业界它已经大概验证了一年就从去年年初的有一个工作比方说装吧有个工作叫装吧它其实也是
一个 hybrid 架构他去年年初就已经放出来了然后呃他后面就是有 nv 的那两个模型然后还有比方说 bomba 这好像是 ivm 做的他也是一个 9b 的一个模型对就是他们这些东西就是已经被我感觉是已经被反复验证了能 walk 的然后还有一个比方说 samba 就各种吧
就三把的话它也是一个 highway 的架构就是满把加上一个 sliding window attention 对这个是微软他们做的然后还有很多很多的混合架构所以我觉得如果大家相信这些 7B 的这些结果能够 transfer 到更大的 scale 的话的话呢
从这个观点上来说,mini max 其实也是没有 take 很多 risk 的所以他们三个谁的 risk take 的最大?我觉得可能还是 mini max 吧客观来讲,spas attention,尤其是 dynamic spas attention
因为它只省计算它不省显存大家看到 OK 你这个方法它把 KV 开始全部保存下来了心里就可能有个底了就说你这东西它首先大海捞针肯定能做然后大家都发现那个都全绿了然后各种长文本看一下也没什么问题那就非常那就可以大胆的上了那 minimax 优化目标和前两个是一样的吗
我觉得都是一样的就是这些 efficient 这种 attention 像这种高效注意力它主要就是两个分支嘛一种就是 buzz attention 一种就是 linear attention 对它们的目标都是一样的就是一方面呢是长文本的训练另外一方面呢就是做 influence 的时候它们的那个复杂度从结果来看谁的结果最好呢如果目标一致
我相信大模型就比较难比吧我觉得除非它是在同一个环境下面迅出来的要不然它这个 data 不一样七七八八不一样大家也不知道是架构带来的原因还是模型的问题所以这个就是一个很难说的一个问题了就需要
感觉还是需要业界投入更多的资源来验证一下就更更更广泛验证一下这些东西现在 screen law 就是数据遇到了瓶颈所以他们其实不约而同都在改架构都在试图通过架构的优化带来更好的结果对我觉得就是大家可能就是比方说
对去年 Lewis 的 Keynote 大家都知道就是一样就发表一个演讲就是说这个 Training Time 的一个 Scanning 可能到头了然后我们会发现最近 Test Time Scanning 这个概念很火然后用这些高效率的这些架构呢它一方面它是可以提高这个 Test Time Scanning 的因为它确实更 efficient 了嘛
然后如果他的 performance 能够跟之前的这个 attention 能持平的话那么你呃多出来的这个呃 if inference 的这个
高效就能够直接转换成这个 test time scaling 的那个好处的在里面的对然后另外一方面呢那确实就是说你在 training 这个 scaling law 上面你 data 这个靠对 data 这条路可能走不通了那确实我们是需要一些更加底层的一些架构的创新的
像 DeepSeek 呢它就是比较少见的就是非常坚持自己来做架构创新的我们这一点非常可贵因为很多公司我感觉都是排斥来做架构创新的因为他们可能就觉得堆 data 就行了嘛我们为什么要冒险来做架构创新这件事啊但我觉得做架构创新它是一个
风险与机遇并存的就比方说 MLA 的成功还有肉眼可以预见到的 Native Spots Attention 的成功因为他们这边在 Facebook 里面看到了它甚至可能比 Full Attention 更好
所以我觉得就是大家在 data scanning 走完之后可能会花更多的精力来研究这个架构了因为你堆不了 data 了那可能就想来提升架构来提高整体的 performance 了后面的话我这边的分享应该是没有什么内容了然后对我们也分享了 160 分钟了我最后问几个小问题啊
你看现在发论文变成了各个大模型公司竞争的新维度你觉得这是什么原因我觉得是天下苦必然公司久矣然后如果你开源发 paper 的话呢你能给你这个公司带来更大的技术影响力
然后可能也会说实在的话就是给公司的股价带来一些支持我们可以看到最近阿里就长得很疯因为千问这一系列模型它的开源就做得非常非常的好让投资者有信心对吗现在展示技术秀肌肉对的然后就是对于后来者就是追赶者来说呢开源肯定是一种最好的方式的
因为你是追赶者所以你避远的话你是没有那种技术领先的那种带来优势的反而你会因为避远会受到一些会带来一些不利的因素所以我觉得追赶者他们经常选择的那种方式都是开源因为就像 Meta 一样他们那个 Nama 他们就选择开源
我们今天讲了 Deep Sea, Kimi, Minimax 这三篇工作你相对来说最喜欢谁的工作给他们三个做一个排名吧我觉得我可能排 Native Spas Attention 第一吧因为这确实是最近最令我眼前一样的能让 Dynamic Spas Attention 高效训练的一个手段第二亮眼的话可能是 Kimi 吧
因为我是做 linear tension 的所以我对这个 hybrid model 它能 scale up 毫不意外所以就是能无赖 minimax 排最后了因为它这个东西它确实不太意外我觉得就是 hybrid 架构确实还是值得更多这种资源来因为它有效我觉得还是有很大把握的 DeepSick 工作里面或者 Kimmy 的工作里面或者 minimax 工作里面有没有你有没有所谓的 aha moment 在你心里
不太好说但我确实被那个 Latest Bass Attention 它甚至比 Full Attention 要好这一点吸引住了可能我之后也会做一些这种 Dynamic Bass Attention 方面的研究 K-Mean 的报告里面是没有提供出它的架构改进比 Full Attention 更好的这种结论对吧像这个上面的话可能就是各有千秋吧在这些 Bass Bass 上面我们可以看到就是没有一个很明确的对 Full Attention 的一个优势在里面嘛
但是根据 DeepSick 报的那个 Native Spots Attention 是全线压制的就无论是预训练的那个 Loss Curve 还是下游的 Evaluation 甚至在 Reasoning 里面它也是更高效的更好的这个就让我非常的感觉很有意思
这个权限压制可能是今天整个我们讲的这个最亮眼的地方对啊因为它就是真的就是既要海耀它既要 efficiency 又要 performance 这个太厉害了你觉得架构在接下来有什么优化的可能性和优化的方向我觉得可能有很多方向吧就架构的话比方说我觉得像 position encoding 现在都是用 ropa 吗那我觉得
那我觉得这个 rope 是不是也可以啊动两刀啊能不能换成一些比方说 contexturize position encoding 啊或者说干脆就是拿一个 rn 之前我们提到有些 hebber 工作他就干脆拿一个 rn 来做 position encoding 那这种是不是可以直接来嗯 scale up 呀之类的然后嗯像注意力的话基本上就是只有 sparse 和 linearattention 两条路走
然后之前还有一个比较火的东西叫做长卷肌 non-coulomb 像那种比方说海伊拉这些模型会用到但是我不知道这些模型好像后面觉得大家没怎么关心了所以有可能长卷肌也有可能卷土重来 who knows 就像粘料 tension 和 sparse tension 卷土重来了一样这两点研究它就是一阵一阵的就是
一个东西他研究他可能就是陷入一段时间的低谷他又会卷土重来这个就像 New Light Work 的研究就是大家都说有几次低谷今年春节以来 Deep Seek 不是很火吗你觉得有没有改变比如说在美国的中国留学生对于国内大模型的一些看法它会改变你们的职业走向吗毕业之后的
人才都是会往那种人才密度高的地方走的嘛像之前就是国内落后了太多嘛那大家都愿意去比方说去硅谷的这些公司去学习更加先进的那是一个什么我懂嘛然后如果国内这方面现在我觉得就很肉眼看出来国内现在就是追赶甚至已经超越了这种技术所以我觉得国内的吸引力对于海外留学生来说会增加很多的
好了,这期节目就是这样,如果你喜欢我的节目,欢迎前往小宇宙,苹果 podcast,腾讯新闻,喜马拉雅,QQ 音乐,订阅张小俊商业访谈录。如果你有其他想邀请的嘉宾,想听的内容,或者你有任何想探讨的话题,都欢迎各位听众朋友们在评论区里留言。那我们下集再见,拜拜。