152. 领读Kimi K3技术报告:从架构创新聊起,注意力美学、多教师蒸馏和开源MoE
[00:00:00] Hello 大家好 我是小俊 今天的节目是一集学习播客 学习KIMI K3的技术报告 希望和大家一起领略技术之美 K3是有效扩展到2.8T总参数 并全量开源的MOE模型 大家可能注意到 这集技术报告的领读播客 距离模型发布已经过去了一段时间 期间我们试图寻找一位合适的嘉宾 我们希望这位嘉宾 他的工作和学术背景非常适合的来讲K3 最后找到了孙宇涛 宇涛目前是清华大学计算机系博士候选人 上海创制学院普瑞学者 他从博士开始的研究方向是LLM架构 预训练架构创新一直都是他的兴趣所在 这正好是K3的亮点之一 那宇涛透过领读K3的论文 也串联讲解了十多篇相关的论文 他的语速非常快 所以前方语速高能预警 期待2026年我们和AI共同进步 [00:01:03] 当然了这块我觉得可能还有一些别的concern 比如说我们发现 其实如果用Mion的话 它其实是会更容易出现Alt-Line的 你控制中间的激活值 总不是一个比较错的一个现象 当然如果我说Mion更容易来Alt-Line 这个速箭林一定会反对 他肯定会说 对于任何优化器来说 它都一定会出现Alt-Line 因为你从模型架构上是控制不了的 所以说如果想严格控制的方法 他一定是直接从模型架构下手 这个学校上还有一个对应的概念 就是泰修斯之船 就是你刚开始 2017年这个船刚开始行驶的时候 是Transformer 但是这个船刚开始是怎么拼起来的 它是Alt-Line 加Recidial 平时的过程中 我们会把可能会把慢慢的 把某些部分换了 某些部分换了 其实跟Transformer已经 我觉得像素已经很低很低了 你是否还把这个东西叫做Transformer 我说一下我的判断 我的判断比较暴论 我的暴论就是 大模型可能没有太本人的创新了 后面都是一些改样性的进行进步 好的 那我们的论文学习播客又来了 这次我邀请了清华大学的PhD Candidate [00:02:06] 上海创制学院普瑞学者孙宇涛 将由他带领大家一起来学习和阅读 最近大家关注度非常高的 Kini K3的论文 但是宇涛会带领大家读一系列的论文 那宇涛你能不能先给大家做一个自我介绍 并且介绍一下你的研究方向 好的 各位观众朋友大家恰不好 然后我是来自清华大学的孙宇涛 我在这个博士期间的主要的研究方向是 大模型的架构和预训练 然后这个博士课题呢 我是从二十三年从那个时候开始 我们主要去研究这个大模型的模型架构的 一系列的工作 然后在那个时间点应该是 ChateGPT刚刚发布一段时间吧 但是我们的架构研究 其实从ChateGPT发布之前就开始 对差不多就开始了 然后我这两三年的主要的一个研究方向 就是去主要是去尝试解决 然后大模型在推理这个环节的一些低效性 然后所以说我们主要的一些研究方向都是围绕着推理高效性来去展开的 [00:03:10] 然后其实大家也可以注意到说就是在模型架构这个方面呢 整个业界的研究方向也是逐渐从天这个性能为导向逐渐的变得是以效力为导向 然后在这个方面其实是有一些办事上的变化的 因为可能在Vision时代或者说在ImageNet时代 大家还是尝试去做到更精妙的一些架构 然后去提升模型本身的一个表现 但是在大模型时代呢 然后我们其实逐渐发现对于模型的性能而言 模型的参数量原来是一个最主要的一个因素 然后在这个在模型架构本身的一些改进性的变化呢 其实相对于模型参数本身的提升 对带来的这个性能提升是相当微小的 但是其实不同的架构在这个模型的推理方面 然后性能差异是巨大的 而且这个也是主要决定了模型最后的一个部署的价格 然后其实这两年大家主要在这个方向去努力 然后对于我而言的话 其实我们是在23年开始 然后探索这个限制助力 这样的一个方向的一个工作 然后我们这篇Racket的工作 刚开始主要是解决了两个问题的 [00:04:11] 我觉得从现在的这个阶段 主要解决两个问题 第一个问题就是限制助力 怎么能尽量的去 在一些比较general的场景下 能逼近这个全助力的这样的一个性能 因为linear从刚开始提出 主要是为了去用一个比较linearkernel 然后去一个kernelized的方式 去拟合然后二次复杂度的 这个全助力这样的一个python的 所以在之前那个时代 其实对于这个lineartension而言 它的位置信息 它其实是不够sensitive的 然后其实当然在那个时代 这个lineartension和这个 和rn只是在形式上比较相似 但是从这个建模的特性上来讲呢 rn其实还是比较强调 一些locality的一些表示 所以说在那个时代我们在rn是比较早的引入了一个 拆点的一个机者 这样的话可以让这个限制助力在一个有限的这个状态空间里 然后尽量的去研磨这一些对最后的结果贡献足够大的一些信息 然后对然后这个其实刚开始的一个motivation 除了这个模型性能以外呢 我们当时也是主要比较先的提出了这种 这个tuncle recurrent 就是tuncle as recurrent这样的一个 [00:05:12] 这个线性注意力的一个kernel 就是kernel的这个计算形式 因为对于这个线性注意力来说呢 如果把这个整个的状态都展开了 然后在token这个维度去做这个 去做地归的计算的话 它其实从从效率上并不是最优的 但是如果用仿照注意力这种这个计算方式去建模呢 它又享受不到这个整体计算复杂度带来的优势 所以说我们当时就是在这种parallel representation 从一些并行的就是像传入于这样的一个计算形式 和就是全地归的这个计算形式之间 然后找到了一个tradeoff 也就是这个块地归的这样的一个计算形式 而这个tuncle as recurrent 我们既可以拿到这个整体的一个计算复杂度上的一个收入 同时我们能在kernelize层面 然后我们可以尽量多的去调用tuncle 然后把这个local的一些计算密度都拿满 这个是我们提出了一个比较有效的一个计算范式 然后大家其实如果可以关注到就是之后的一些 其实所有的一些线线主义的改进工作 都是基于这样tuncle as的计算形式去计算的 包括manbattu然后get delta net 包括然后来到今天的这个cumular kda这样的一个计算模式 [00:06:14] 然后在这个计算大的计算模式这上能 然后又带来一些新的比较细节上的变化 然后这个可能之后对今天的后面会就更详细的来进行讨论 然后当然从现在这个视角的纯线线主义力 就作为纯线线主义力的一个模型而来 无疑是一个比较失败的一个尝试 因为无论如何这个比较有限的一个contest 它都难以带来就是在长线线文中和这个全注意力比较完全相懂的一个性能 这个其实在这个今天这个时间点我们都知道是不可能的 所以说这个当时我们在23年吧也是注意到了这个现象 所以说我们就会尝试说就是从这个全线线主义力 然后转到一个这个hybrid tangent的这样一个架构的形式 就hybrid tangent就是其实大家顾名思义就是很简单 包括kimi k3其实也是这样的嘛就是用一些线线主义力和一些这个全注意力 然后组合起来然后作为一个模型的一个架构 然后这个本质上听起来就是像是一个工程上的trade off 然后这个本质上听起来就是像是一个工程上的trade off 然后也是一个比较工程的解法 但是虽然如此呢我们当时就发现一个线 不过这个也是目前所大家公认的就是混合注意力 [00:07:16] 它其实虽然从架构上来讲是一种trade off 但是从最后模型本身的表现来说并不是一个trade off 包括大家其实发现在保持一定的全注意力比例的基础上 整个模型其实是可以获得无损甚至更好的一个长线线线文表现的 也就是说其实在混合注意力模型的架构中 我们并没有牺牲一定的这个全注意力的一个模型能力 从而带来工程上的注意力 所以从这个角度来讲也是也是因为这个实验上的一个结论 然后从而导致这个混合注意力现在被大规模的利用起来 这是你的第一片工作是吧 对对对对对是的 然后后来的话就是当时我们会发现说这个混合注意力 其实在工程上是一个百分之上work的方法 我觉得其实没有问题 其实直到今天work的也还是不错嘛 当然了对于一个博士生来讲 博士生来讲这个东西虽然它比较work大家也愿意去持有 但是这个东西从nowty上其实感觉就差点意思 而且感觉也不够有趣 因为当时我们觉得如果只是把这两种混合注意力模型结合起来的话 它有这么几个问题 我觉得最大的问题就是它在推理的加速比 [00:08:16] 它永远是和这个混合比是正交的 或者说也不是正交就是完全成正比例的 因为现在比如大家比较常用的是这个混合注意力比全注意力大概是三比一 这样的一个比例也就是全注意力 然后在整个模型里大概是四分之一这样的一个比例 所以说如果说我们认为四分之一是一个比较无损的也是一个比较极限的比例的话 其实我们很难拿到更大的加速比 也就是说我们无论是prefail还是做decode 我们最多的加速比也就是四倍 当然我们在做纯现性注意力的时候 我们希望是更高的 我们希望最后如果混合注意 它其实只是一个这个常数级别的改进 所以当时觉得可能不是很有意思 所以我们后来就做了yoko这样的一个工作 对当时我们的一个motivation就是我们从第一性原理去思考 为什么纯现性注意力没有办法获得和这个纯全数力一样的性能 原因也很简单 就我们至少希望模型有一些比较基本能力 比如说我们至少有一个可以获取全文信息的能力 所以说在这个场景下 其实传上线爱文的kvcash这一点是没有办法去省掉的 [00:09:17] 所以说就kvcash既然没有省掉 对吧我们能不能从另一个维度去省 所以当时我们就觉得既然说这个从 从token长度这个维度没有办法去节省 所以说我们找到了另外一条节省的方向 就是从这个层间这样去节省 所以yoko当时做的是一个就是所有层共用一份kvcash这样的一个架构的方式 然后另外一个就是从模型的计算角度 就每一个token在decode的过程当中 对它的计算密度是没有办法去这个减少的 因为我们希望它保持一定的这个全注意力的计算能力 然后这样它才能达到我们希望的常常差也没能力 所以说我们提出的另一个东西 就是我们希望把这个模型的计算和存属节有开来 也所以说我们当时可以看到 虽然我们只有一份的kvcash 但是我们可以保持一个多层的 富尔层生的这样的一个计算结构 所以说在这个技术上我们当时的yoko架构就可以 就是我们只保留一份的kvcash 但是可以获得这个和全注意力或者混合注意力 基本上可以等价的一个模型的一个计算结果 然后这个架构还有另外一个优势 就是我们在prefill的时候 可以直接跳过这个全注意力的计算 [00:10:17] 因为prefill 比如说也就是模型处理用户输入的这样的一个计算 我们本质上只是希望我们可以拿到模型的kvcash 然后这个kvcash是用于后续的这个decode的一系列的hitter state 所以说这个prefill的唯一目的就是去达到这个模型的kvcash 所以说在这个这种架构上 我们经过前面的一些linear retention的一个计算 然后拿到了kvcash 这个就够了 因为prefill阶段我们是没有必要就是解码出每一个位置的 后续的next token prediction 所以在prefill阶段我们就可以直接不过cross retention 但是在底后的阶段我们可以保持和这个传统模型一样的一个计算能力 对然后这个是我相关的一些第二篇工作 这个标题也挺有意思的 对这个也是致敬嘛 有onlylook once 当然后来也有后面一系列的致敬的工作 你只能缓存一次是吧 对是的 对这个其实在这个从kvcash的存储角度基本上已经达到极致了 因为我们都同意的吧 如果从tokenwise角度我们必须能保证所的话 一份其实就是最少了不可能再少了 所以这个从kvcash角度是一个比较极限的一个结果 [00:11:18] 对然后我讲我对personally我的一个第三边工作就是 在这个工作里我们其实解决了 就是从一个更通用的角度来去考虑问题的话 就是模型的推理开销主要就分为三个部分 就是prefill的这个实现开销 然后decoder的开销 然后和kvcash的存储开销 这三个是最主要的跟模型的推理评价 不可能有第四个 然后约克这个工作呢 我们主要解决的是prefill和解决了kvcash 但是我们没有解决decode 然后decode的话我们后续是 或者大家会尝试用这个sparter retention的方式去解决 然后但是k3它其实目前是没有用sparter retention 所以这块对今天就先不讲了 对然后我们后面的一个工作是一个和另一个赛道是一个比较相似的工作 也就是loop language model loop language model 这个顾名思义也就是我们在保持一个固定的模型参数大小的情况下 去通过多次迭代来去提升模型的flops 从而去提升模型的总的一个能力 所以loop这一系列的工作主要目的就是可以在保持一个比较小的模型参数的基础上 然后取得比同参数的模型好更多的一个效果 [00:12:21] 但是其实传统的loop language model 它在decode的情况下它的成本其实是难以忍受的 因为它只是省了模型参数 它其实并没有省计算 而且在相同计算下的话 它其实是并不如把参数展开 或者说用一个更大的 但是不去loop的模型 它最后总的效果好的 比较传统的loop language model 还有一个问题就是它的这个推理 它的这个carry cache它的存储 它会随着这个模型推理的深度而增加 所以说最后总的算下来 loop language model所带来的总的carry cache 其实是相当大的 然后yoko universal的这个工作 其实就是在这个yoko价格的基础上 然后去做一个位置上的改变 也就是我们把loop的单元 然后变成一个很efficient的一个单元 然后从而去避免就是推理的时候 一些额外的一些或者比较大的成本 但是能保持它模型的一个效果 比较稳定的一个增长 解法也很简单 因为对于yoko而言 毫无疑问它是一个这个混合注意力架构 但是我们混合注意力的方式 它不是一个交错式的一个结构 它是一个两端的一个结构 也就是说我们模型推理的前期 它是一个全线性主义的 [00:13:21] 但是模型的后期 是一个全注意力这样的一个架构 所以说我们的选择是把这个 把loop这样的一个架构 集中在这个线性主义力这样的一个位置 然后这样的话 我们对整体的kv cache增长是比较小的 因为linear attention它本身的kv cache 它其实是微乎其微的 然后第二个就是线性主义 它不仅省存储 它其实也是省了计算 就是在长上下文这样的一个场景下 它其实带来的额外的计算是相当小的 但是虽然它linear attention 所带来的attention的decode的计算 它是相当小的 但是从injarnode的模型能力上的话 它从比如说模型的propilessy 或者说从模型的scaling behavior 它是可以获得足够捷径全注意力的 这样的一个模型的能力 所以说我们这个架构 它其实可以达到的一个效果就是 就是从用差不多这个 比如说我们用两倍 与原模型的这样一个计算强度 我们基本上就可以 可以获得两倍左右的一个性能提升 但是我们的模型存储和这个模型的kv cache 还是保持和原模型的一个差不多 这样的一个这个推理开箱 [00:14:21] 对这个是我第三个工作 然后这边工作 因为去年开始这个loop language model 是一个大家比较热议的一个话题 然后我们在这方面然后做了一些探索 所以你从23年一开始读博 你的研究方向就一直在架构创新上对吧 对是的 而这次k3它在L1M的架构和预训练上 也做了很多工作 这是我们今天来找你来带我们读论文的原因 对是的 因为kimi linear刚发布的时候 当时我们其实之间也有一些讨论 然后其实这工作的这个连续性 其实还是比较强的 包括kimi linear它其实也是比较原封不动的 搬到了k3的一个总的一个合办的里面 你为什么一直对架构创新比较感兴趣 我觉得两方面吧 对吧从个人角度我觉得 架构创新比较有意思 就是比较好玩 对因为别的层面的工作的话 它其实工程性的因素会更强一些 当然架构创新它也有一些比较工程性的因素 当然它的工程性主要来源于就是 你需要做一些infra上的code design 但即使是infra上的code design 其实我们之前也提到了 比如说我们提出这种chunk recon [00:15:21] 这样的计算结果 它本身其实也是infra层面的一个创新 所以我觉得这个事情比较有意思 而且它比较能起到一个四两拨千斤的效果吧 我觉得对于一个博士程度而言 这块是一个相当好的一个研究领域 当然在2023年是这样的 2026年的话可能架构创新能做的 其实是越来越少了 这个是其实从个人层面带来的一个考虑 然后整个这个领域的角度而言 我觉得其实全注意力的话 它当时是一个非常大的一个瓶颈 如果说在这个大规模的这个 如果大模型推理是大规模的应用的话 就是attention这个东西是一定可以解决 就是一定需要解决 而且我们相信是一定可以解决的 所以说在那个时间内 我们觉得从整个行业来讲 架构创新是对于模型部署而言是最重要的事情 那我们这次的主题其实是一起来读 拼命K3论文 但是你对于这篇论文有很多自己的想法 所以你也做了一个不一样的一个分享的结构 并不是完全是根据这篇论文展开 能不能介绍一下你整体的分享的一个结构和逻辑 我一般想talk的主要的逻辑就是从它模型本身 [00:16:23] 比如说从一个论文本身出发 当然所有论文都是建立在之前无数个relative work的基础之上 所以我会选一些比如说它一个论文它有几方面的贡献 然后它可能一个若干贡献 它在背后有一个历史研究的一个脉络 我一般的风格是会把这个脉络打开 然后这样会达到一个效果就是 如果只看这篇论文你会知道它是这样做的 但你可能会不太清楚它为什么这样做 或者说历史上大家是怎么做的 为什么最后达到这个解 我觉得比如说从一个比较重要的点展开 我觉得从观众的角度是一个比较好的学习的方式 然后这样的话也会讨论的更综合一些 因为如果只是一个点的话 它其实我觉得意义是不够大的 当然这块可能这个模型架构是一个比较多的一个篇幅 主要也是因为一个是KIMIK3 它也做了比较多的一个模型架构本身的创新作 另一个就是模型架构这一块 它的也这个研究的脉络 它其实是相当清晰的 而且它每一个部分它其实都有一些比较固定的一个credit [00:17:23] 我们可以拆成一个一个点 然后把大家去讲出来 当然后面也会有一些关于infra的内容 因为现在其实都是比较依赖infra和模型架构的核设计 所以这两块它其实是密不可分的 别的一些比如说这个playtrain data的话 大家肯定都是一个比较密密的状态 paper里也没有写 我也不会讲这个paper除了公开内容以外的一些东西 所以这块可能就会涉猎的少一些 你的罗链结构让我感觉到 其实我们最后看到的是K3的一个呈现 但其实它是有很多人的credit 它不只是KIMIK一家公司 对吧 这也是现在做frontier这些模型的一个有意思的地方 它要吸收很多之前其他人的工作 然后我们也把credit都给到大家 我们这篇讲解就是除了你能理解K3 也能理解它是怎么来的对吧 对是的 我觉得做一个公司比较科学的方式 如果你最后想把这个模型做好 你肯定是几百家之长 当然是如果说比如说你只想用自己的工作 那这样可能就是没有必要了 如果是基于这样的目的去做工作 [00:18:24] 那可能你就会错过一些别人做的比较好的工作 因为无论如何整个行业都是由大家集体推动的 所以我觉得这个也是K3一个比较好的一个点 其实我觉得包括它之前的一些paper也是这样的 我觉得比较客观或者比较真实的 把前任的一些工作用一个比较可靠的方式去引出来 不会说想办法去削弱之前一些人的贡献 我觉得这个其实是它做的也比较好的一个点 所以我们这次是从K3出发 然后其实串联起了 不管是十几篇论文也好 还是技术报告也好 还是比如说苏健林老师的博客也好 就是是有很多的那种 那我很期待 我们开始吧 好 K3从前面它的一个主要的卖点来说的话 它其实主打的是一些 我觉得从几个方面它有一个比较大的一个囊括 首先它受了它的一些结果 这个结果特别好 而且这些数都摆在这里 其实也没有太多可以解读的 然后为什么能达到这样的一个结果 然后K3主要claim的是三个维度的一个scaling [00:19:24] 然后当然我觉得最重要的还是说模型大小的一个scaling 就是它做到了一个2.8T这样的一个模型大小 而且它是一个比较有效的一个scaling的结果 什么叫无效呢 无效的scaling我今天就可以给你了 我晚上回去得起一个这个2.8T的模型ENIT 我跑个100B的token 然后我就可以放出来 这个显然是无效的 所以说这个scaling当然是要永远是建立在有效的基础上 K3就是在这个2.8T这个scal 做了一个有效的scaling 然后这个模型参数大小 包括模型的一个激活 它来到了100B左右这样的一个量级 其实在K3发布的时间点 其实是比国内开源模型的其他几家要大很多的这样一个情况的 然后它另一个扩展是在这模型上下文长度的这样一个扩展 然后在模型上下文长度的这样一个维度呢 它做到了1M这样的一个量级 然后1M的话它自然是可以获得更大的这个上下文的窗口 然后去解决更复杂的一个任务 所以说就是从模型总的来看的话 我觉得还是遵循一个第一系原理就是更大的模型 [00:20:25] 才有更大的一个智能上限 如果别的东西没有做太错的话 其实大家可以看到这个模型的参数大小 还是解决模型智能最本质的一个参数量 当然如果只看benchmark的话 你有无数种方式去达到一个对内或者对外一个满意的结果 但是从模型的能力本质上 模型的参数大条还是最有效的一个方式 而KMIK3是一个相当早期或者说相当成功的达到了这样的一个量级 对然后到这个模型结构章节 模型结构章节的话 KMIK3其实是综合了KMI整个团队 包括这个整个业界 然后过去一年以来 比较重要的一系列的创新 K2不一样 K2当时KMI的发力方向主要是这个模型scaling本身 或者说一些非模型架构的一些创新 所以说KMIK2当时主要沿用的就是Deepsig V3的一个结构 但是K3这块的话 它其实就跟K2大不一样了 KMIK3它本身引入了很多比较新的 或者说比较创新的一些设计元素 对包括对吧自己的也好别人的也好 有些比较创新的一些setting也好 [00:21:26] 或者说比较细节的一些调用也好 它其实这块做了很多对比较充足的一些准备 所以从观感上来看 其实跟K2的感觉是很不一样的 首先的话是hybrid attention hybrid attention我刚刚也讨论过一些 好的我们可以重新翻回头来 然后再从KMI本身它的一个写作的writing来去看起 然后这块的话我会先讲一下这个线性注意力的一个 在过去三四年以来的一个历史的发展状态 因为你如果直接读这个KMI Delta attention的话 你会发现它的这个公式相当复杂 而且说对不同的项然后具体是怎么来的 它具体承担什么样的一个作用 如果直接看这个公式的话 它会你会发现它特别特别长 比如说比经典的tention它其实是要复杂很多的 它其实每一项它背后都有一个历史性的一些因素 或者说大家从对整个模型结构探索 最后得到的这样的一个结果 所以说如果想了解这个KMI Delta attention 对这个最后是怎么设计出来的 我们还是有必要去探索之前的一些线性注意力 [00:22:27] 经过了怎样的一个发展阶段 然后让我们再回到这个ResNet 对这个其实是刚开始我们必不可少的一个 这个线性注意力的一个发展的阶段吧 因为刚开始这个线性注意力非常非常简单 我们就是个KV乘出来得到一个YG 然后把它加起来 所以刚开始的线性注意力 其实比RefNet还要更简单 然后RefNet在这个线性注意力的基础上呢 然后我们引入了一个衰减项 然后这个衰减是跟Token的位置是有关的 然后这样的话 就把这个Linear attention 从一个比较position invariant的这样的一个角度 从位置无关 然后不让它变上的一个位置有关 然后位置有关 最主要的方式呢 一个就是我们可以加Rope 另一个就是我们可以引入衰减项 因为无论如何 语言的特性它就是更近的位置 它有更高的一个权重 所以说如果我们在一个有限的上下文理下 达到更好的结果 刷减这项其实是必不可少的 对 所以说这块是这个线性注意力 比较前期的一个经验吧 然后这个刷减下 所有的工作基本上都保持住了 然后另一个主要的这个影响 就是Tanker Recon的这样的一个计算形式 [00:23:27] 对不对 因为如果我们只是这个做一些偏学术性的研究 或者说只是发paper的话 其实从这个Colonelized的一个 足够高的一个有效率 其实是大家不会从一个比较 刚开始就比较强调 一个是我们主要发现的 我们完全使用这个地规的这样的一个形式去计算 它其实特别满 甚至比就是在训练过程中 甚至直接要比这个 parallel repetition 就类似全注意力 这样的一个计算方式它还要满 但如果我们直接用这种parallel repetition 又感觉十分傻逼 因为我们在训练之后 相当于完全没有享受到这个线性注意力的收益 它跟全注意力的这个计算强度是一模一样的 甚至还要更高的 因为它可能有一些别的处理 或者说我们的这个Colonel写的写的没有flash 才是好 这些都是有可能的 所以说我们当时觉得 无论如何呢 我们都要找到一个比较可靠的一个计算 pattern 让它足够发挥GPU的能力的同时 然后享受到一个复杂度的一个加速 所以当时我们就做了这样的一个事情 然后retonet之后呢 有两个比较重要的一个节点在这 [00:24:28] 我觉得一个是mamba mamba当时是把这个位置无关的衰减 变成了这个位置有关的是一个衰减 然后接下来就是delta net delta net的话 当然这个概念不是松林去提的 当时是这个 是delta net是之前的一个工作 然后松林是在这个delta net的基础上呢 然后引入了就是开发了一个 拖乱东特瑞的其实就是一句话 就是如何能让这个delta net 转化为一个GPU可计算的一个 这个chunk recurrent这样的一个计算模式 对当时松林去做这方面工作的时候 我还稍微有点疑候 我说看上去好像就是delta net 不太可以并行啊 他说可以并行 并且他已经搞定了 所以说从这个GPU efficiency的角度 就是delta net主要是解决的是infra上的一个困难 而且这个解决方式 我觉得还是一个比较本质的一个方式 然后delta net刚刚出来的时候 我们当时尝试去解决 因为当时我们知道 这现行注意力 它在处理全上线文的这样的一个能力上 它其实是不如 对不如全注意力的 所以当时就有两个方案吧 第一个方案就是我直接认输 [00:25:28] 我就去认定 现行注意力是这个 不可能匹敌全注意力的 当然可能当时我是这种心态 我当时意识到 可能从这个 现行注意力的这个视角出发 是很难去匹敌全注意力的 我当然是这个想法 当然松林是另一个想法 他当然觉得 我还可以再努力吧 我们可以努力的去提升 这个现行注意力本身的一个 长下纹的一个容量 然后从而获得更好的一个阶段 然后delta net当时就是这样的一个目的 通过这种方式 我们可以获得比之前的这个 这个relta net和mamba更好的一个 长上下纹的一个容量的能力 本质上其实也就是在相同的这个 kv cache大小的情况下 就是从上把上提高了这个 现行注意力的一个上下纹的容量 当时delta net是没有做这个位置衰减的 当时从这个 从publicity或者说从这个benchmark上 它的结果不是特别好 所以说我觉得一个一个比较显然的事情 就是既然我们知道这个位置衰减这个事情 本身是可以帮助这个模型总的一个能力的 那我为什么不把这个模型衰减 然后和这个delta net这样一个 更高容量的linear谈认结合起来 [00:26:29] getydelta net正是这么做的 我们可以去结合delta rule 这样的一个更高的一个 线性注意力的计算容量 然后同时我们给它带来一个衰减 然后同时融合这两个 我们就可以得到一个更优的 线性注意力的一个表达形式 然后这里就可以看到 如果没有alpha t这项的话 它其实就是一个比较经典的delta net 然后引入衰减之后 我们就可以得到getydelta net这样的一个形式 然后大家就可以注意到 这个表达形式其实可以 其实已经比刚开始的线性注意力要复杂很多了 对因为如果把这项 如果把st-1后面的一个系数完全消掉的话 其实就是最经典的linear谈认 然后rest net和mama 却是把这项消掉得到一个结果 就是我对这个上一个时间点的历史状态 然后进行一个衰减 然后这样的话是之前的rest net和mama 这样的一个结果 然后delta net呢 它是引入了一个getydelta rule的这样的一个方案 然后写上地位形式的话 [00:27:30] 它其实就额外再增加了一下 然后这样的复杂度其实就慢慢的去叠加了上去 我们再回到kmini 它其实在这个getydelta net的基础上 又变了一个东西 然后大家可以去对比一下这个是怎么引入的 主要的区别它其实就在这个衰减项上 比如说在rest net 然后mama2和getydelta rule的情况下 当然了就是线性这个注意力是分head的 所以说一般的线性注意力也是分head的 但我们一般写的 但我们一般写公式的话 我们会考虑只有一个head的情况 所以说如果只有一个head的话 getydelta net也好 然后之前的工作也好 其实这个衰减项它其实是一个标量 所以它是一个标量 也就是说我整个head遵循的衰减技术是一致的 然后这样的好处是它在kernel上比较容易 就是写kernel比较方便 因为衰减项它本身想做一个比较好的一个 如果说如果把这个 你可以拆成更refin的形式的话 我们再去写kernel的话 它其实是一个不太好处理的一个像 这个是出于写kernel方面 [00:28:32] 然后从这个模型能力方面 当然我们毋庸疑问 就是我们把一个标量的衰减 然后变成channel-wise衰减 它严格的来说是能力更强的 然后kermi-delta-attention 它其实就是把这个 getydelta net的这个衰减项 然后从一个标量 然后变成了一个更fangrain control 这样的一个量 然后这样的话它就可以带来 就是每个channel 可以的衰减系数是不一样的 这样的话我们这样可以带来一个 严格更好的一个能力的上限 因为从公式上来讲 它是严格更好的 无论如何这个channel-wise的decay 它是可以退化到一个 比较均匀的decay的 这样一个严格更强的一个模型能力 它会带来一些更好的效果 当然了就是对于kermi-delta-attention 来说一个更强的模型能力 它其实是有一些代价的 它的代价就是 它写kernel会更麻烦一些 它的麻烦的点就在于说 我们不能说 我们作为一个这个decay蛋 我们其他部分可以用一个 比较方便的方式去做这个 去利用探测号来进行计算 如果是一个标量的衰减枪的话 它的处理会特别特别容易 它其实一个tile 就只有一个变量就完事了 [00:29:33] 但是如果把它从标量 变成一个channel-wise的话 它的处理难度就会增加很多 然后这样的一个处理难度 也会带来在kermi-k3里边 一个更细节的一个co-design的处理 这样的话 我们就来到了这个lower boundary的decay 就为什么有这个东西 两方面的原因 一方面我们可以认为的 从算法层面 我们希望它不要decay的太快 但是从paper本身而言的话 它其实是为了和kermi-k3 来进行一个co-design 原因在于说 就是我们想去处理更fine green的decay的话 我们需要在这个数值上 做一个比较巧妙的处理 也就是对于q和k而言 我们会做一个这个decay的倒数的一个变化 我可以举个例子 最简单的例子就是 就是-2可以表示为3-5 这个其实也跟rope的思想是比较一致的 rope其实在infra上一个特别方便的地方 就是它可以通过绝对位置变换 来去表示相对位置变换 所以如果在这个情况下 它整个的一个计算会容易很多 [00:30:33] 然后rope它的思路 其实就是用绝对位置来去表示相对位置 所以说对于衰减而言 它其实也可以用绝对位置来去表示相对位置 也就是说比如说我们有一个衰减项 它比如说它是一个alpha的平方 对吧 alpha的平方的这样的一个衰减项 当然这个衰减项可能是对吧 第0个token对第2个token的 或者说第100个token对102个token 所以说我们如果想用绝对位置的话 我们就会选择让q先做一个比较大的一个衰减 然后让k往上提升的一个比较大 比如也就是说 我让k做一个三四方的一个衰减的提升 然后让k做一个比如说五四方的一个反衰减 然后这样的话我通过这个乘法结合率 我们就可以得出和原来的地归 一个比较等价的形式 然后这样就带来一个问题 说对于kW delta Token来说的话 它会对QK 它有一边它会除一个很小的数 对乘一个很小的数可能没有关系 它无非就是dk到0 它并不会带来这个 当然我们也不希望它dk到0 但是从数值精度上来讲的话 我们希望让它控制在bf16的精度范围内 这样利用rope那种鞋对位置来表示相对位置编码的这样一个方式 [00:31:37] 它才是有效的 所以说为了让衰减在一定的chunk范围内 然后控制在bf16的 就在一个固定的chunk内部 让它控制在一定的chunk内部 让它控制在一定的精度范围内的话 我们是需要从数学上把它控制住的 比如说kimiliner它这块是一个16个token tile 我们就希望衰减在这16个token的range里面 不要超出bf16的这样的一个范围 当然bf16的精度范围 这个是我们已知的 我们可以通过bf16的精度范围 然后反解出来在16个token的区间内 然后我们最多可以衰减到多大的量 然后kimiliner它就大概选了这样的一个量 然后这块我们可以去证明说 就在16个token的tile里 我们是可以衰减像是不超出bf16dynamic range 这块的lower downbondy的decay 它更像是一种codesign 我们通过模型算法什么样的一些控制 然后让它获得在一定tile的内部 然后不要让它有数值方面的问题 这样的话整个kernalized的方式 会更加的去通畅 当然了如果不去限制 [00:32:37] kernal肯定也有自己的写法 当然了那种写法可能就会低效一些 所以说为了保证一个高效的实现 kimiliner采用了在一定的tile trunk内 然后控制它最大的一个西数衰减程度 就是衰减程度这样的一个方式 对然后kimi-delta attention大概就是这样的 其实拖到东瑞的也很简单 第一个就是我们kimi-delta attention 把GDN这样的一个计算方式 拓展了一下它的计算能力 然后为了拓展的计算能力 带来的一些额外的infra上的麻烦 然后他们在模型的表达范围内 采取了一些战指 然后让它满足chronolize的一个方式 最后得到了kimi-k3采用的最后的一个形式 ok下一个环节是gatey.mla 顾名思义它就是把两个 对把两块的模型结合了起来 mla可能大家都很熟悉了 对是dbskv2刚开始去用的 主要目的是 对主要目的是减少一些kcash的一个开销 然后mla的这个配置呢 后面主要是被这个dbskv3和kimi-k2 然后去采用的 当然dbskv4没有用 [00:33:38] 因为kimi-k2也用了 然后kimi的同学们认为呢 就是mla如果在这个全注意力 这样的一个scope内部 大家觉得至少还是一个可以接受的一个形式 或者说没有必要去搭动的一个形式 所以说这个k3还是采用了跟kr一样的 这样的一个形式 然后在这个mla的基础上呢 增加了一个gety的这样的一个操作 然后gety的tention呢 最早应该是签问团队刚开始去用的 对的 然后从签问这个团队的标题 也可以看出来 就gety的tention 当时主要是解决的哪些问题 比如说这个long linearity 然后gety的tention 可以带来额外的一个计算的一个强度 然后sparcity 和attention think free 然后这个东西可能并不是那么显然 这个就得具体看它的一个paper 但是whatever 我觉得delta的tention 大家最buy-in的一个点 就是它的一个训练稳定性 而且这个训练稳定性 它是一个 我觉得是一个被广泛验证过的 这样的一个形式 大家可以从前面这个训练图里 现在图里可以去看到 对于一个pre-trained run而言 [00:34:39] 我们还是希望它越远越好 从模型能力上如果不是最优 但也没有关系 因为模型的能力 其实本质上最主要的因素 是模型的参数大小 所以说好一点差一点 它都不如稳定性要重要 因为如果稳定性不好的话 它会带来很多麻烦的问题 甚至比较对比较大的问题 就是你整个run都迅崩了 然后你前面整个的trip point都废掉了 这个其实对于这个 对我觉得对于任何团队而言 都是不可以接受的 所以说如果说一个方法 能比较有效的去提升模型的稳定性 这个还是一个大家 比较愿意采用的一个技术吧 然后前面的get attention的这个 前面3应该是对 前面3应该是没有用 后来的这个 后来的前面next 包括前面3.5 3.6 应该都采用了这样的一个架构 虽然它会带来一定的这个额外的计算开销 但是它会对这个模型的稳定性 会带来特别大的一个好处 然后对 然后这个是对 之前这个前面团队的一个工作 前面是在这个gqa上引入的 [00:35:39] 对但这个设计它其实无论是你跟 这个东西是跟gqa或者说mla 它本身是一个正交的设计方式 所以说这个gqa把这块做了一个结合 就把gate attention的这样的一个稳定性的一个方式 引入到mla当中 然后这样的话它本身也不会破坏这个mla 本身的一个推理性质的同时 可以提升这个模型的一个训练稳定性 为什么v4没有再继续引用mla 对因为他们有别的东西了 你觉得mla在未来还会成为一个共识吗 因为我记得卢弗利之前跟我说过 他觉得在agent时代mla应该会被替代 觉得mla在未来会成为共识吗 我们先从技术上讲mla它本身就是mqa的一个 增加的一个形式 所以说mla其实本质上并没有带来新的东西 它只是一个更好的隧道 大家其实没有发现的一点就是 如果大家想把mla用好的话 [00:36:40] 它其实想达到相同的一个计算效果 它其实会增加更多的Tencent的计算 去弥补这方面的一个损失 所以说我个人认为mla主要拿到的收益 其实是可以被更好的gqa的参数设计 参数设计基本上是可以拿到绝大多数的收益 所以为什么deep seek没有继续引用mla 对因为mla这样的一个转化形式 因为deep seek v4它后面主要推sparse sparse跟mla它其实不是一个100%兼容的东西 尤其是在prefill阶段 而且他们其实是用了mla的等价的mqa形式 因为从数学上来讲mla它本质上就是一个大号的mqa 所以deep seek v4用的是一个大号的mqa 我觉得本质上区别也不是很大点 罗弗利当时是在vrflash里面采取的是mqa 他觉得mla对chat来说是一个优秀的模型结构 但是他觉得不那么适合agent的范式 mla在设计之初为了达到很好的访存和计算的比例 [00:37:40] 在当时的h系列芯片上实现极不浪费算力 又打破仿存瓶颈 是在这个架构下设计的 发现计算剩余的实在太多了 他觉得mpp能够更有效的能够利用起来 对这个其实是一个比较reasonable的一个点 就是mla在推理阶段 他的计算其实是大大浪费了 他的计算是远大于他实际的这个建幕能力的 对所以说对于计算而言的话 他这块是有一定的浪费 罗弗利可能主要讨论点就是 就是这种计算模式 他跟mtp的收益他不是正交的 甚至他可能是互相缓重的 因为mtp本质上就是用更多的token同时去计算 在memory bond的这样一个条件下 然后逐渐往提高compute bond的方向去推 所以说也对于mla和mtp的加速比会大大减小 我觉得他从来也没有是公式 他只是一个选择 ok但k3这边起码还选择继续沿用的是mla 我觉得k3是reasonable的 因为k2当时主要是followDeepseek [00:38:41] 他们当时的选择是先不做模型架构的创新 先把结果跑出来 对然后就是说 然后如果从k2到k3的话 我觉得对于一个从工程或者说从组织管理上 能跑的东西就不要动 如果mla它不是一个特别大的问题 可能就暂时不会动 但我觉得未来也不一定 我觉得这块是一个比较暂态的一个状态 当然mla也不是没有好处 所以说我觉得这个都快好 所以它是加强了mla的可控性 对的gator它主要是提升mla本身的训练稳定性 这块跟mla是正交的 就是任何做tension其实都可以用 好的我们现在讲到2.2对吧 对2.2就是tension tension residual 其实当时还挺火的 但是其实如果从follow attention residual 这样的一个研究脉络来讲的话 我反而会认为hyperconnection 我觉得是一个相当好的一个工作 对hyperconnection是很早以前 CID团队去提出的 对这块主要讨论的就是 在一个比较深度的模型当中的一个深层到浅层的一个连接方式 对吧 如果我们再仔细去考虑问题的话 [00:39:41] 对吧 因为它叫attention residual 对吧 这个本质上跟resnet 其实都有一个比较深刻的一个连接关系 resnet它本身解决的就是这个模型能力 在这个模型参数增长的情况下 它至少可以达到一个不退化的一个效果 包括从稳定性角度 它其实也是对货的 对它其实从无论是从模型稳定性和模型能力上 其实resnet本质上都会比之前的一些工作 有本质性的提升 不过这个大家都很熟悉了 然后大家其实没有注意到的是resnet 它其实是有两个版本的 它一个是CVPR的版本 然后一个是这个ICCV的版本 其实是在resnet那个时代 凯文就已经讨论过就是prelearnorm和postlearnorm 和训练稳定性的这样的一个关系了 然后其实这个其实也可以追溯到比如在BERT时代 就是BERT时代 它其实大家还是会更常用postlearnorm的 大家在BERT时代会觉得postlearnorm 它的结果可能会稍微好一些 但是在模型增大的效果 在模型逐渐增大的这个情况下 大家会发现postlearnorm 它有这个t度消失的问题 或者说有训练不够稳定的问题 [00:40:42] 所以大家后面就会逐渐的去采取prelearnorm 对这样的一个残差连接的手段 然后tentresresitual 它其实之前苏建林讨论过这个观点 就是tentresresitual它绝对不是prelearnorm 到另外一个learnorm摆放方式的一个区别 这样的话它其实这个风险是很大的 因为它会有 如果说你一旦触及了postlearnorm之前的问题的话 对整个大的run大家肯定是不敢上的 所以说tentresresitual它当时强调的就是它一定是prelearnorm一个超级 就是它至少是可以退化到prelearnorm 它是严格的是比prelearnorm更强的一个结果 然后这块主要就是简单讨论一下 recidual这条研究线 这之前大概是怎么来的 对然后hyperconnection我觉得这个工作是相当有意思的 其实我觉得无论是tipsic后来做的改进也好和cidual也好 本质上其实都是从这盘工作来的 它主要讨论的一个点就是我们在prelearnorm的基础上 如何去增加模型残杀的容量 [00:41:42] 从而去提升模型能力的一个表达能力 当然了我之前也跟hyperconnection一座的同学交流过 我觉得这个工作本身从技术上还是很好的 但是它一个最大的问题就是它paper写的太抽象了 不太容易读 hyperconnection我觉得本质上就可以说一句话 就是我们在recidual的这个分支上 去用比模型hidden state更大的一个容量 然后来去表示这个模型在这个模型推理深度上的一个状态 所以说如果我们有更大的容量 它一定是有更好的一个效果的 我觉得hyperconnection它其实我觉得从 我觉得从思想上是相当简直的 对但是这个paper可能相对复杂一点 所以说当时这个工作其实没有出圈 可能只是一个比较对大家做架构或者说技术层面的一些同学去聊 当然后来这个mhc可能就比hc本身要活了很多 当然我觉得最重要的原因还是当时mhc是deepcid的 我觉得可能没有别的原因 所以说在hyperconnection之后的话 就是大家会尝试去从模型本身的一个连接方式来讲去提升模型的能力 因为从hyperconnection包括alternational residual [00:42:44] 它一个比较好的点就是它对于推理来说基本是免费的 就是说对在模型的inference阶段 它其实几乎不会增加任何的推理开销 它就可以拿到更好的一个模型结果 这个其实是大家喜闻乐见的 因为如果一旦涉及到对吧 一旦涉及到我们通过更慢的一个实现也好 更慢的模型架构设计也好 取得模型更好的表片 那这块就带来一个自然的shade off 就是我为什么不能去扩更大的size 这样还简单一些 所以说一切比如说通过更慢的模型实现的去提升模型效果的话 其实都是会被fully question的 或者说甚至说对于一些保守的 或者说不是自己提的时候 可能大家就会愿意去用 对于这种模型设计 它可能在推理阶段是几乎免费的 这样的话大家上的时候没有什么压力 而且它其实是和这个模型参数本身的提升 它其实并不是一个中央的一个状态 对然后hyperconnection最下维度的话 其实还有一个比较绕不过的就是desnet desnet这个是一个更早的一个工作了 就是它是对它是黄高老师在那个resnet之后 它其实是一个连接方式 [00:43:44] desnet其实和attention residual 它其实在思想上一个是一个相当密切的一个方式 对只不过在desnet时代它其实是 因为residual它其实只是层和层之间的一个连接方式 但desnet它其实是就是在深层要去看这个所有浅层的状态 然后再把它聚合起来的这样的一个方式 只不过就是其实在desnet时代 因为那个时代其实没有attention 或者说大家也没有过度重视attention本身的一个 核安能力 所以desnet里边主要是一个大的linear 来去把这之前所有的这个 对之前所有的hynestead然后聚合到一起的 对然后到attention时代去的话 其实desnet它的那个对它那个时限其实本身是不快的 对因为它的中间对于这个连接方面的 它会带来一些大量的额外的计算 但是到了attention时代的话大家会去发现 就是我们可以把这个desnet里边一些比较highweight的部件 然后变成更lightweight的部件 然后这样的话就诞生了attention residual attention residual这样的一个工作 attention residual它最大的优势就是它其实比desnet 它是一个更对它其实一个更efficient的架口 [00:44:45] 我们可以通过一些这个更深层色的infra code design 对比如说用block attention的方式去捷偶掉这个模型的深度 对因为如果只是全注意力的话 它上层会跟底下所有层来去进行交互 对吧这个其实也是这个之前的一个比较大的问题 就是模型越深它这块的overhead其实越不可hold it 然后block attention的话在这块做了一个捷偶 所以说它整体一方面是attention它本身的计算比较lightweight 然后第二方面就是它捷偶的深度 所以最后总的看起来它其实就一个比较灵巧 但是一个能揭示的去提升模型能力这样的一个组件 然后这块它们对这块可以看一些这个skilling的一个结果 就block对block attention residual 它因为它结果的深度 它是严格来说表达能力肯定是不如付tent residual好的 对但是这块大家claim的点就是它其实并没有损失太多能力 而且对于baseline来说它是一个比较显著的一个状态 对然后tent residual这块应该主要就是上一个技术paper里讲的 然后k3这块应该没有做太多特殊的处理 对然后这块大概就是这样的一个情况 [00:45:46] 你刚才讲的这几个你觉得哪个创新性是最强的 其实我更喜欢densnet和khyperconnection 为什么 因为densnet它是一个相当早的工作 因为在那个时代其实大家考虑这个连接的问题 我觉得本质上tent residual考虑的问题 其实densnet都考虑到了 只不过当时没有attention而已 然后khyperconnection的话 其实它相当于是在transformer时代 重新把这个东西带了回来 然后让大家在这个连接方式上重新去讨论 如何有一个更强的连接方式 然后从而去提升模型的性能 我觉得后面的工作当然会有一些这个code design 或者说有一些模型稳定性的问题 但我觉得大的框架其实是之前的工作已经定好了 ok 然后internet MOE应该是年初 对因为答案他们一个团队去提出的 对我觉得这块我觉得一个比较大的一个 我觉得一个比较大的好处就是 包括大家如果熟悉这个deepcycv3的同学 其实都知道就是训练MOE 其实无论从这个模型的稳定性或者训练方式 包括从infra上 它其实就是一个很大的挑战的 然后最大的挑战就是这个MOE的 Altual Dispatch [00:46:46] 其实在EP的情况下 它的这个overhead是相当大的 也就是为了解决这个问题 然后我们不得不引入DPP这样一个 比较高优化的一个通信的通信 通信库的方式 从而去降低这个Altual的这样的一个开销 包括其实不同的Altual的 不同的MOE的设计架构方式 它不仅影响了模型架构本身 它甚至影响了底层不同的infra的一些设计选行 这个之后后面会在这个infra那块 会做一个更多的讨论 但是Latant MOE 它其实本质上的东西就在于说 我们是否可以把这个Altual Dispatch 这块的开销来去减小 因为Altual Dispatch这块的话 我们需要把这个Hidden State 分发到各个专家卡上 而且这个通信量 它是会随着这个Expert激活的数量 和这个模型Hidden State的大小 来去并行的去增长的 对然后Latant MOE它的思想 就是我们是否可以把这个 把通信量减少的同时 来去保持模型的这样的一个表达能力 然后Latant MOE的方式 就是我们把Dispatch的这样的一个Hidden State 减小它可能减少2倍 [00:47:47] 减少4倍这样的一个量 当然了如果我们直接去减少它的Hidden Dimension 它后面的模型的这个MOE的参数量 可能就会随着增长 为了去弥补这个Latant Dimension 减小的一个参数量的话 这样然后这里边就有两种方式 第一种方式就是提升 MFN Intermediate Dimension 就是通过提升MFN本身的一个参数量 然后把之前降的那部分弥补回来 这是一种方式 另一种方式就是 我们去进一步去把模型拆碎 这样的话我们去用 对我们去用更多的Expert和更多的激活 然后来去弥补这个参数量的这样的一个减少 然后最后其实我们可以看起来 当然在invita这个paper里 它其实结果是更好的 其实总的来说就是一句话 就是如果一个恰当设计的Latant MOE的一个Configuration 它其实是可以完全保持这个standard MOE的这样的一个结果的 也就是说我们可以在这个模型能力完全相懂 甚至还能好一点的一个context底下 然后来去减少模型的这个latent 去减少模型的一个通信开销 [00:48:48] 而且通信开销其实是在这个 在通信和在训练和这个推理中是不一样的 训练因为我们主要优化的是throughput 我们可以用一些这个overlap的手段 然后来去把通信这部分去弥补掉 对于inference latency来讲 尽管我们可以用一些手段来去掩盖 来去掩盖通信开销 但是这个时间它是避免不了的 因为它整体是在这个critical path上嘛 所以说就是对于模型推理的这个latency来说 通信开销它还是一个相当不可忽略的一个点 所以说就是其实从模型的这个efficiency上来讲 这个推理的收益其实是比训练的收益要大的 当然训练也有一定的收益 所以说如果说latent MOE不是一个trade off 就是我们不需要去三种号牺牲模型的这个表达能力 然后来去降低通信的话 它其实还是一个这个free launch 或者类似free launch的这样的一个结构 对所以说是这样的一个结构 对所以说Kymic K3其实是follow的这样的一个结构 当然了在latent MOE之上的话 还有一些比较细节的一个改进 然后针对这样的一个比较细节的改进呢 我们可以讨论一个比较经典的问题 [00:49:49] 就是说起来也很简单 就是两个矩阵连程 这是一个非常非常基本的单元 就两个矩阵连程 其实在模型表达能力上是free build 对吧 因为两个矩阵连程 严格的是可以是可以合便到一个的 但是优化性质上其实并不是这样的 就是两个矩阵连程 两个矩阵连程经常会出现这个模型训练不稳定的问题 所以说两个矩阵连程一般中间 就会用一些这个搭配一些问题的手段 然后来去弥补这样的一个事情 这个思想其实在这个MLA里也是出现过的 因为MLA本质上也是就是先做一个low projection的投影 然后再把它打回来 它其实本质上也是两个linear连程的一个方式 然后两个linear连程中间的话 一般会采取一个normalization的一个方式 然后把中间的hidden state控制住 从而提升模型整体训练的一个问题 所以这是tot around don't read 就是很简单 就是一般来说就是模型在模型架构的设计的当中 如果你不得不把两个矩阵连程拆开来起 而不是合便到一起的话 中间一定要加一个类似normalization的一个手段 然后这个思想其实在 对一个是在MLA里有个设计 然后其实这块的laten MOE其实也是类似道理 [00:50:50] 归根结底就是laten MOE 我是先把这个模型 通过一个模型的hidden state通过一个linear projection 把它压到一个DV的状态 然后我们在这个linear projection的基础上 然后来去进行购买的一些计算 然后当然了对于FFN来说 第一个计算当然也是一个linear projection 所以这块其实就会出现两颗linear projection 连程的情况 所以这块我们需要一个RMSNOM 来去控制它 OK 然后下边就是这个C2GLU 这个设计其实也是一个大家看起来可能 对没有那么直观的一个东西 然后这个东西其实也跟之前的一些设计 是有关系的 因为大家其实会发现 就是对于大模型训练来说的话 就FFN这块的这个MLP 它其实中间的hidden state 是一个特别容易一个activation explode 这样的一个状态 而且这个东西一个是跟优化器有关 另一个就是跟模型的精度有关 就在模型精度更低的情况下 中间的hidden state更容易出现outlier 然后为了解决这个问题 然后这部toss [00:51:50] 其实刚开始采用了一个特别简单的状态 就是把最简单的swee glue 就是没有邦迪的那块 直接通过一个clip 然后比如说我们设计一个clip的值 比如说5到10 然后我就把它clip到这样的一个程度 这样的话就是可以从数学上 比较严格的可以把它的上限控制住 然后clip它是一个比较粗暴的状态 然后你如果把hard clip变成soft clip 然后你就会比较自然得到tanch the agent 这样的一个算子 因为tanch the agent 它somehow就是一个soft clip 如果你指定一个下线指定的上级 它可以用一个比较平滑的方式 一个比较平滑的方式 然后它逼近你希望的一个摄影上级 所以从这个角度上来讲 我就可以理解为一个clip的升级板 但升级板具体在模型的表达能力上 有多大影响 我觉得这个是另一回事 而且肯定是需要具体的实验来去证明的 但whatever 我觉得soft clip 它还是一个比较安全的一个做法 从switglue开始 然后首先把一个比较自由的linear projection 然后改成了一个tanch the agent bondy的一个状态 然后另一块的话就是switch [00:52:50] 因为switchlo它前面就是一个linear的一个结果 然后再加一个switchglue的一个结果 这个switch我们又可以拆成这个sigmoid 和一个linear projection 当然这块它是一个共享位置的一个状态 所以c2glo相当于是你把我 把所有这个中间可能出现onbondy的一个缓解 然后把它通过一个tanch the agent 的上下界放缩 然后来去bond住 这样的话就可以把整个mlp中间的一个激活 得到一个严格的数学上界 然后这样可以用于保持模型的训练委内心 当然呢 这块我觉得可能还有一些别的concern 比如说我们发现 其实如果用mium的话 它其实是会更容易出现outlier的 你控制中间的激活值 总不是一个比较错的一个现象 当然如果我说mium更容易引来outlier 这个苏建林一定会反对 他肯定会说 对于任何油画器来说 它都一定会出现outlier 因为你从模型架构上是控制不了的 所以说如果想严格控制的方法 它一定是直接从模型架构下手 这种苏建林跟你观点不一样 这个他没有说 但我猜到他会这么说 对 因为这个其实之前在Kimi K2的mium clip里 [00:53:51] 也做过类似的考论 大家如果之前对Kimi K2或者mium light 大家如果记得的话 但当时就会说 就是因为用了mium油画器 所以QK logics会更容易去爆炸 所以mium light他们采用了一种 就是对于QK的一个比较特化的一个处理方式 然后来去压制模型的outlier 然后在那个时间点大家就问 说为什么我们之前 因为ADAM训练的不效价这个东西 然后为什么对吧 之前的QK logics都很稳 就不需要额外的处理 但是mium为什么要特殊处理 当然苏建林就是这么回复的 他就说从严格来说 ADAM也不是完全稳定的 然后当时DFTV3 可能somehow也有一些不稳定的现象 当然这个并没有影响模型最终的结果 他当时在对mium clip的观点就是 如果说在mium的训练里 有可能出现了一个sclow的现象 他严格来说就是容易出现的 只不过你可能出现的早晚问题 所以说为了严格的限制 这样模型的行为 还是从模型架构本身去做限制 是一个更本质的方案 他当时是这样一个观点 所以说这块他肯定也是相同的观点 就是我们为什么不直接 在architecture上做一些改变 然后让他整体把bondi都限制住 就完事了 也不需要去纠结更复杂的优化的细节 [00:54:52] 其实我觉得是一个道理 所以说我觉得他应该还会这么说 Mium是对于K2的一个引用 对吧 对对对 这块相比K2没有做太多的改进 Mium当时比较严重的问题 就是他其实控制不住 控制不住中间activation outlier 更早的一个版本 他是个更粗方吧 他当时连vdk都没有加 所以说moleit比较率先的 就是把vdk这样的一个因素 然后首先引入到 比较大规模的模型训练里 然后这样的话 其实在更长的run里边是可以保持的 另外就是在k2k2 他就是在vdk的命运技术上 额外搞了一个k2k的一个方式 然后其实这两个加起来是一个 对就是kimi团队在这个油画器上一个 对比较完整的工作 当然现在其实大家用mium的方式比较多了 但是大家解决的方式不太一样 比如说你用mla 你就没有办法去加qknom 因为qknom 它是严格可以限制的 就是qk这块的一个边界的嘛 所以说为了去适配mla和mium的一个结合 [00:55:52] 所以说当时kimik2引入了qkclip这样的一个操作 当然大家可以注意到比如说对吧 比如说dipsigv4 然后包括safone那些 他们应该都是用了mium 然后在mium的基础上 因为他们又都是用的这个会儿 没有用mla 所以直接用qknom 它其实是本质上是一个更简单的办法 就是尝试去控制 mium带来额外的outlier outlier在qk那块更容易出现的 它也一定会在mlp这块出现 相当于采取了不同的方式 就是qk那块通过clip也好 然后normalization也好 然后把它限制住 然后在底下mlp这块的话 当然用一些比较更lightweight的手段 然后kimi现在就是通过这个用 设计的一个几乎函数把它放得住 大概就是这样的一个思想 然后quantial balancing的话 这个没有发什么论文 是苏建林在他自己的博客里去讲的 然后quantial balancing的话 它主要是可以follow到 就是之前的loss free的routing的方式 它主要的控制方法就是它只通过一个bias 而不是通过一个偏整体的loss控制方式 来去解决模型expert的负载均衡的问题的 [00:56:54] 然后doss loss free大家比较奇怪的一个问题 就是它这样的一个bias的变量 因为这个bias的变量 它直接决定了每个token 它选哪些expert 但这个更新方式 somehow是有些ad hoc的 就是它采取了一个比较启发式的更新方案 来去做bias的更新 然后这块的话一个问题就是它这个东西 它其实没有一个比较严格的一个数学的一个收点标准 那一个就是它其实容易和这个主模型的更新 对大家一个感觉就是可能没有那么这个偶合 当然这个形式还是本身还是可以work的 对还不错的 就是在整体work不错的情况下的话 其实当时loss free有几个问题 可能是没有完全解决的 最主要的问题就是如果在使用loss free的时候 大家可能会采取就是模型最底下几层 一层或者三层 然后都把mwe去掉的一个方案 主要原因就在于说对loss free这样的一个控制方案 对于底层的模型来说它做work的不是很好 正是因为loss free它整体没有做整体的一个扣定 所以它可能会采取一些别的方式 然后来去弥补这个模型在大规模训练中碰到的一些问题 [00:57:54] 对然后quantial balancing 其实是主要是尝试用一个更principle的一个思想 然后来去解决模型推理的一个 模型moe负载稳定性这样的一个问题 它本身loss free的update的方式 它肯定是就是经过大量的调整之后 得到了一个work还不错的一个方案 所以它本质上也很简单 如果你某个专家的计划的多了 然后就把bias往下砍一点 如果每个计划的少了就往上加一点 然后之前的loss free是一个比较取发式的方案去做 对然后kimi团队用更principle的一个方案 就是我们能不能直接通过一个现归的方式 直接推导出来就是bias它应该是长什么样的 答案就是这个是可以被推出来的 而且推出来的具体的方式也跟之前的expert choice 有一定的关系 然后最后的话就是quantile bias 它经过一系列的推导 它最后就得到一个移步的一个形式 也就是说比如说我们对于一步 对于一个step内部的一个整体的激活 我们是可以求一个bias 然后这个bias它本身就是一个 它本身就是一个让模型可以负载均衡的 [00:58:55] 这样的一个方案 然后他博客里又写到了 为了去避免这个信息泄漏 也就是说我们不能让任一个token 然后来去获得其他token的一个信息 所以说这个bias并不会在这个当前step使用 而是会在下一步去使用 然后这个是中间的quantile balance 这样的一个细节 速电力博客里其实就要提到的一个优点就是 首先它其实它不需要调参数 因为loss free 它是有一个类似learning rate的一个更新的方式的 这样的话它其实少了一个参数 整体的看起来会更加principle一些 然后第二个优点就是它其实对于负载均衡balance 这样的一个能力 它其实是一个更优的一个能力 然后它这块的博客就会贴出一个图 对于第一层而言 就因为我其实我刚刚也提到 为了兼容这个model loss free balance 之前大家会把前一层搞成dance 不用MOA这样的方法 然后去把这个东西去规避掉 然后如果说对于这种QB这种方式的话 其实就没有必要去规避这样的一个问题了 其实它其实就可以直接把第一层变得balance 这个其实可以发现前底层用dance 它其实是一个 [00:59:55] 对它其实并不是一个ground数上 一定要去这么去做的一个方式 而是它其实在loss free的这样的contest底下 不得不去采用的一个方式 然后其实如果你不采用loss free 你直接就采用加辅助loss的方案 比如说千万MOA的工作 它其实就是采用直接求loss的方案 对第一层也会没有问题 所以说这块的话 它主要就是可以处理掉 就是之前loss free一些比较失效的一些情况 当然了这个博客里也提到 如果本来S3SJD就比较work的情况下 这个QB它也是比较work的 而且它博客里也可以证明 比较正常的情况 它其实是可以推出来说 这个QB如果我们不采用直接去均衡 而去采用一些t度更新的方案的话 它其实是可以和loss free 做到一个相当等价的数学形式 然后这块其实还有一个细节 是之前的博客里没有去提及的 简单来说就是我们为了去 在整个一个bash 也因为现在大家大猛行训练 一个bash会特别大 比如说4million可能都会比较小 可能到几十million这样的一个量级 就QB需要在几十million的token之间 恰讨取到在一个比例的位数 [01:00:55] 也就是说如果对于一个精确的计算的话 我们需要把所有token的 所有token的激活情况都存下来 其实这个是相当heavy的 甚至在工程上是不可能的 然后当时在博客里提出了一个方案 它采取的方案是每个GPU 都去做一个local的分位数计算 然后再把不同GPU的分位数计算 也不一定是不同GPU了 反正就是你得把一个大的bash切碎 然后在一个小的bash里 然后去求分位数 然后这个分位数最后再做一个pooling 对 然后kpingg3这个paper 它这个paper其实是有一些不太一样的一个变化 它并不是按token去切chunk的 当然也有可能是我理解错的 它其实是对这个模型的在直语切一个chunk 也就是说比如说对于sigma的介绍而言 它一定是0到1之间的 所以说我们就可以在0到1或者说-1到1 这样的一个区间范围内 然后切成n个桶 然后在这个桶里边 然后去进行histogram的一个统计 然后这样的一个统计值 这样的话它有个好处 它可以是一个常数范围 就是常数量 常数的这个存数大小的一个 [01:01:55] 就可以做的一个计算 而且它的这个计算代价 会比较普速的实现要高效很多 而且它可以比较好的去处理 就是在大规模的dpep的 这样的一个分布式的架构底下 是一个比较容易扩展的一个状态 然后这个其实是相当于k3 它后来放出来之前 在博客里没有去详细讨论的一个技术 这个是其实对QB的一个 比较必要的一个实现方式 规根结底就是9EU的实现 它基本上是不可行的 所以必须去用一些 比如工程上可行的方式 然后去把这个比较精确的解决出来 然后到2.4了 那个Vision这块 其实没啥好说的 它主要讨论的一个点 就是是否有必要 就用一个EU的Visionencoder 去做VITVisionencoder的一个数字画 用已有的VIT的话 当然它用已有的Visionencoder 比如说用Siglip2 这样也比较大规模训练的 一个Visionencoder 它的好处就是它 你缩短的会比较快 但是Kimi K3 它中间讨论的一个问题 就是如果说 直接用Siglip initialize的话 它的模型的不稳定性 会比直接NativeTrain 它是要来得大的 也不一定是模型不稳定性的 因为不稳定它是一个 [01:02:55] 比较相对甚至 它不是一个严格被定义的东西 只是大家可能会 一般会去看GradientNorm 这样的一个分布 然后中间有一些东西是大家比较 concern的 比如说它的尖辞多不多 然后甚至说它本身Norm大不大 这个团队会发现 如果说我们直接from scratch训练 可能会多用一些算力 但是至少第一个就是它的最后的结果 它是不会有损的 如果我们经过恰巧的训练 它不会带来更差的结果 甚至可能会带来差不多甚至更好的结果 对第二个它主要Claiming点 就是原模型会带来一个更好的兼容性 那就会体现在GradientNorm会更加稳定 我觉得其实可能有一个类似的观察 就是Sickleaf它其实是用ADAM来去训练的 之前大家其实也讨论过一个比较相关的话题 就是用ADAM训练的模型 是否能用MU去反定 然后反过来就用 用MU去训练的模型 是否用ADAM去可以是用ADAM去反定 当然最后的结论就是肯定是比较原生的方式 它肯定是最好的 当然用别的方式的话 如果想达到一样好 可能就得做一些处理 或者说它是有一些限制 所以说可能对于KimiK3而言 他们是希望去采用一个全MU的一个油画方式 [01:03:57] 这样的话对于模型整体的训练的稳定器也好 它的兼容器也好 是一个更优的状态 说到这里我们倒会去讲一下最早 线性注意力机制的问题吧 为什么K3它用的是纯线性注意力机制 它没有用任何的Sparts Attention 就是线性注意力 全注意力和Sparts Attention 你可以3选1和3选2 对 就是为什么不用Sparts Attention 我们就会带来一点 为什么要用的 用的会有什么好处 或者说会有什么问题 这个其实一方面是跟模型架构有关 另一方面其实也跟模型 它每带GPU硬件的feature有关 比如说Dipsick3.2那种 DipsickSparts 一个是3.2用的 一个是GLM5 也用了DipsickSparts Attention 这样一个架构 DipsickSparts其实到最后 在Decode里边其实加速是特别小的 原因就在于说 Sparts求Index这一步 它是相当昂贵的 而且在Blackwell的硬件的情况下 越先进的硬件 它其实这个overhead是越大的 甚至其实在Decode当中 这种Sparts Attention的一个方案 [01:04:58] 它其实甚至呢 跟这个Fore Attention 并不会带来一个显著的一个加速 为了解决这个问题的话 当时这个GLM团队做了一个工作 叫Index Cache 他当时的做法 就是把这个球解Index 就是球解哪一部分 哪些Token需要算Attention 这样的一个竞争操作 然后把不同层之间共享了起来 比如说每4层每8层 然后做一个共享 只要用这样的方法 它其实才可以比较有效的去减小 这个Sparts本身带来的开销 只有Sparts Attention 本身开销足够小的情况下 其实才能带来一些比较可观的 一个算法则上的一个手艺 然后Sparts Attention这块 其实我们也做了一些相关的东西 也大概是一个类似的截断 当然我们做的更极端了 当然我们做的更极端了 我们在优扣的价格上 直接去LibrarySparts Attention的话 因为我们之前的KB Cache 是Once的 所以我们当时采取的方案是 直接把Sparts Intex这部 也做成Once 也就是说我们把每层的Intex开销 直接分摊到所有层上 这样的话 其实开销就会特别特别小 这样的话 我们才能吃到Sparts Attention 本身的一个计算收益 对 然后我们再回到KBK3 为什么他不去采用 第一个就是我们认为说 [01:05:58] 每层都用Sparts 这样一个比较简易的方案 它其实在BlackWire上 它的收益是特别特别小的 而为了解决这个问题 无论是这个Index Cache的解法 和我们的解法 其实结论都一样 就是我们需要把多层的 这个Sparts的一个结果 然后来去跨层来进行复用 然后跨层的方式 其实比较简单的方式 就是相邻的层去跨 然后相邻的层去跨 然后相邻的层去跨层的话 其实对于Hybrid Attention 就对于线性注意力 和全注意力这样 interleave的方式的话 它其实并不是一个显然的 因为对于Hybrid Attention 对它不同复的Tension 它其实隔了很多个线性注意力的 所以说就是在隔很多层 线性注意力的情况下 就是这种Index Share是否有效 加速比是否足够高 这个其实是相当Question的 然后其实还有一个问题 就是Sparts的Tension 它基本上是没有办法 进行FromSquatch训练的 Sparts的Tension 大家现在一般采用的 都是Post Train 然后从Ford Attention 进行转化的一个方式 不排除KPK3 可能未来会把 已有的Ford Attention的部分 然后来去进行 Sparts的Tension转化 当然如果他们用了MLA的话 [01:06:58] 这个会更难一些 所以说我觉得主要就是两个原因 一个是想拿到实际加速比 就是其实对于 Hybrid Attention来说 是一个Non-Triple的东西 如果想拿实际加速比的话 可能需要做更多的事情 第二个事情就是 它跟Pretrain 它并不是一个比较坚容的状态 所以说这个其实 留一个接口 之后再做也行 我刚才讲的这些 不管是架构创建 还是训练 还是推理工程 你觉得它中间有哪些Trade-off 你有哪些趋射 我觉得Hybrid Tension 它主要的Trade-off 就是你要去调节 限制助力和全助力的比例 你肯定比例越大 限制助力比例越大 它肯定加速比较高 但是如果你想达到一个偏无损的 一个加速状态 一个比较无损的状态 同时想获得加速 然后3比1 就是一个比较 实验上就是一个比较work的方案 对 这块其实就是一个主要的Trade-off 它严格来说 它肯定大个率 是不会带来更强的表扰能力的 所以这块其实就是另一回事 它其实跟Hybrid Tension架构 它其实是另一条线的 只不过说 如果你坚持不用Hybrid Tension [01:08:00] 你可能就不得不采取一些别的方案 我听到这里的感受是 现在模型训练好像没有一个巨大的 所谓的范式创新 但是它把之前很多的工作都融合起来 然后再寻找一个可能的更有节 我不知道这种感受对不对 对 我觉得其实问题不大 我觉得不完全是基础的原因 是为什么 因为大家现在都叫传丛门 但什么是传丛门 这个其实是没有办法清晰定义的 这个哲学上还有一个对应的概念 就是泰修斯之船 就是你刚开始 2017年这个船刚开始行驶的时候 是传丛门 对 但是这个船刚开始是怎么拼起来的 它是Attention加recital 这些东西 或者说对这些东西拼起来 包括Stacklayer这种方式 它其实在Transformer之前 它其实也并不是一个全新的概念 所以说这个船对吧 刚建起来的时候 我们认为Transformer是个Milstone 但是这个船已经行驶了对吧 8年9年了 在这个船慢慢行驶的过程中 对吧 我们可能会把慢慢的 把某些部分换了 某些部分换了 然后其实我们现在看 [01:09:00] 到2026年 其实跟Transformer已经 我觉得像素已经很低很低了 你是否还把这个东西叫做Transformer 当然这个是哲学上的一个问题 但是其实从现在大家来看的话 大家还是会叫的 但是我觉得如果说历史的走向 如果有些不同的变化的话 可能也就不叫了 我们上面讲的这些 你觉得它总体来说是一个什么样的工作 我觉得这个东西很难定义 因为首先Taketing有的时候 它是一个偏综合性的工作 它严格来说 就是一般大家来 一般大家会把比较有创业性的单点突破 会专门拿出来去专门去做讨论 其实之前也考虑过 也之前也专门讨论过来 然后中间其实比较大的就是几点 第一个就是注意力怎么设计 这个是一个点 第二个就是M1这块 对吧 有没有一些更好的设计 然后第三个是优化器 然后第四个可能就是中间的一些连接方式 这个其实专门 这个其实比如说你放到这个 你放到Rusnet时代 其实这些单拿出来 它可能就是一个架构了 对对我觉得在Rusnet时代 它肯定是这样的 但是其实在Transformer的时代 它可能并不是这样的 但是你可能你把这个东西综合起来 [01:10:01] 它可能你最后再把它跑出来 它才有意义 因为之前大家做架构 比如说大家在这个ImageNet上跑 这个足够高了 它其实就是一个M1 但是大家在这个时代 你想把这个实际的东西跑出来 你的要做的东西就特别特别多了 你得做这个Skilling的验证 然后你得把这个各个工程的东西搞定 你得把Data搞定 把这些东西都搞定 然后你把这个Paper 或者说你把这个架构卖出来 大家才会白饮 当然我觉得从研究方面 我觉得我Personally 我是不会太去关注的 因为我觉得架构的验状 它是有一个 我觉得是有严格的标准的 或者说不需要把这些东西卡不来一起 但是我觉得从非技术角度 它现在是一个这样的状态 理解 所以上面是拼命这篇论文的一些亮点的突破 对吧 然后接下来还开始讲它的 预训练和后训练的工作 对我觉得架构方面相比于K2 至少不一样 也不一定叫创新 有些叫比较偏调调的部分 我觉得还是比之前大不一样的 你为什么K2到K3变化这么大 我觉得是个战略的问题 其实K2在那个时间点 他们也可以不一样 只不过他们当时主要的重心 [01:11:01] 是把模型跑出来 所以在K2到K3这个中间 他们有更多的时间 去做了很多的优化调整 我觉得主要是K2它本身是做的不错的 包括K2 大家可当时他们主要考虑的问题 比如说怎么把命运训练出来的 怎么有效的把模型skill上去 因为当时K2就是1 trillion 其实当时1 trillion的话 还是比之前的 比如说比Deepseek v3还是要大一些的 其实在那个时间 应该也是一个比较相当大的一个模型 所以当时他们解决的是这样的一个问题 先把base model整体的一个pipeline做稳 然后在稳的基础上的话 然后后来K3 然后再去追求一些更定义求精的一个优化 你从上面的这些亮点工作 这是最后的结果吗 你反推 你能看出这个团队的整体的状态 还是什么样的 我觉得看怎么去定义 对于不同团队定义是不一样的 如果只是KME的架构团队 或者是一训练团队 我觉得没什么变化 我觉得一直就是一个样 但是对于整体公司而言 还是有战略性的侧重的 我觉得侧重点就是K2 当时KME的团队主要的诉求 还是把base model这个东西做稳 [01:12:01] 就是先把能力做出来的结果 然后先不去考虑更高的Efficiency也好 更精益求精的创新也好 当然他们团队内部 内部是一直在做的 只不过看是你什么时候亮出来 就是研究工作是一个更长期的工作 他可能要看放在哪个模型里 跟他一起结合 对对对 好的 那接下来我们是预设呢 对接下来后面其实就是一些 对 因为Position和Post Train 首先Post Train 它是一个偏工程 或者说偏具体的场景的一个东西 这块可能就不会讲太多 因为他也没有写太多 然后Pretrain和Post Train 我觉得主要是一些经验性 或者说一些knowhow的东西 主要创新可能也是前面多一些 对 然后中间会有一些比较 我觉得比较有意思的可以讨论的点 我觉得我会专门拿出来去讨论 后面主要的风格会是这样的 然后我们就一个一个来 Skin in your law 我觉得一个比较值得讨论的一眼 就是用哪样的这个Learnivator的策略 因为Learnivator的策略的话 其实刚开始就是Mini CPM 当时那个Paper提出的WSD [01:13:01] Mini CPM之后对吧 CM3之前 我觉得几乎可能所有团队都会都在用的 WSD的一个优化器 因为这样的一个优化器 因为这样的一个优化器 我们可以去学习Mini CPM 当时他们是怎么去考虑这个问题 简单来说 就是WSD考虑的一个问题 就是如果我们如何能把这个Data Schedule 和Learned Schedule结合起来 首先Mini CPM刚开始讨论的问题就是 WSD然后和Costent Decay 是可以取得一个比较相近的结果 比如说我们从一个更高的学习率 到一个更低的学习率 中间怎么去调配 它对最后的结果其实是影响是没有那么大的 所以在这种情况下 Mini CPM的团队工作的认为 就是中间具体的DK的方式 对结果不是影响特别大的 既然具体DK的方式 对于最后的结果影响没有那么大 然后这块我们就可以跟Data Pipeline 一些联动的方案 因为在实际训练中 我们还是会发现的话 包括在这个图里 我们可以看到就是在DK阶段的话 这个模型Loss的衰减速度 还是比大的学习率稳步去跑 [01:14:02] 它的Learning Weight Loss的一个下降速度 还是会大很多的 所以说之前大家会认为 cool down这个阶段 它其实是模型学习最快的一个阶段 所以说Mini CFM当时采用的策略 就是既然cool down这个阶段 是模型学习最快的状态 那我们为什么不把更多的更好的数据 然后去放在cool down这个阶段 然后来去做训练 这样的话可能会取得比所有Data均匀分布 然后Learning Weight Schedule也均匀分布 然后可以取得一个更好的效果 然后这个是当时Mini CFM 包括WSD提出的这样的一个背景 我觉得这个还是挺有意思 我觉得一方面的话 它讨论了一个non-travel的问题 就是为什么我们要采取不同的Learning Weight Decay的方式 然后Learning Weight Decay 一个是为什么要这么去做 对吧 另一个就是它DK的不同阶段 它具体承担什么样的一个raw 然后他们利用不同Learning Weight Decay阶段的一个行为 然后跟Data的具体的策略 然后来去结合 这样最后可以取得一个更好的结果 然后Kimi K3这块的话 [01:15:02] 其实他们讨论了一个不太一样的事情 就是我们为什么 他们为什么不去用WSD的这样一个结果 然后这个其实在WSD之后的一些paper里 也是可以去讨论到的 因为WSD它除了可以用更好的Data Schedule 它还有一个额外的好处 就是因为前面的Learning Weight 它其实是不变化的 既然它不去变化 就是它跟你整体要训练的flops和token量是无关的 因为它是无关的 所以说我们可以更自由的去 在这个模型训练的过程中 去选取我们最后实际的config 比如说我们刚开始可能预定的是要跑实际token 但如果我们跑实际token 跑到中间的话 比如说这个训练策略改变了 或者说公司的策略改变了 或者说我们要更早的发板或者更晚发板 然后WSD这样的一个优化器 我们就可以更自由的在中间来进行切换 而不用在刚开始 就把整个模型要训的token量定死 然后它其实是这样的一个好处 但是它其实带来的一个问题没有讨论 [01:16:04] 就是我们虽然可以去任意的去选择 你实际要跑的token数 但是你实际的learn weight 是和你要跑的token数是有关系的 比如说你要设61-4 61-4作为一个比较稳定的schedule 你跑10t可能61-4是最优的 你跑20t可能就是31-4是最优的 所以说从最优的角度考虑 对任意去扩展token数 它可能并没有大家想的那么有效 然后这块KimiK3的paper 其实就讨论这个问题 就是说WSD它实际的schedule 它的调节的难度 其实和VTK是一样的 而且它可能并不一定的 并不一定好去调整 就任意去选取最后训练的token量 这个事情也不一定只有WSD才能做到 其实用别的方式也是可以做到的 这个paper里可以写到 就是这些原因 其实他们可以选择一个更简单的方案 然后Consign Decay它的方案就是 它其实更好调 就它只有两个变量 一个就是你要跑多少token [01:17:05] 然后你要一个就是你的 maximal learning weight 具体是多少 但是你如果WSD的话 它就其实就会多一个变量 就是你要DK的这个比例具体是多少 所以说从调整的角度来讲的话 Consign Decay是一个更容易去调整的一个方案 所以说KimiK3他们在paper里就写到 如果说他们是因为发现 Consign Decay它是更好的去能找到一个 hyper parameter setting的话 他们最后会采取一些 也可以算是一个比较经典的一个 Learn rate Decay的方式 而且这个其实是大家都用 就是WSD的情况下 一个不太一样的setting 然后一个是基于一个不太一样的 Learn rate schedule的策略 然后当然了 Kimi团队被对比了从K2到K3 然后整体的一个scaling efficiency 首先K3比K2大了很多 也从1T左右到了2.8T 总参数就是从1T到2.8T 大了不到3倍吧 然后激活量是从32.6B到1.04B 对它其实是比3倍要更多的 它其实从模型参数上毫无疑问 它是比KimiK2强很多的一个模型 然后中间它有一些别的一些config [01:18:06] 当然这个主要是上面表的一个总结 最后他们团队给出了一个scaling load这样的一个结果 K3比K2最后的在scaling efficiency上 是2.5倍的这样一个量 对吧 但是它从对 对于一个简单的dance model 它的scaling efficiency 是一个比较经典讨论的问题 它之前很多OpenAI的scaling load Centrilla的scaling load 包括一些比较新的scaling load 其实都讨论过这样的一个问题 当然这块其实比较注意的一点 就是大家其实也问过说 KimiK2K3的这样的一个scaling behavior 是不是固定data的 我记得他们的回答是应该不是 而Paper的意义 应该也没有直接写是不是 当然也可以理解 K3和K2它用的data 肯定不可能是一样的 所以我觉得这块大概的域 应该是有一个不一样的data recipe 整体的scaling efficiency 它其实已经是综合了模型架构 也综合了一个模型的recipe training recipe 然后再叠加上模型的数据策略 之后总的一个结果 然后总的结构作为一个大的 一个综合的一个结果 是比K2的要高了很多的 OK 然后接下来是长上下文 长上下文的话 [01:19:07] 因为K3是一个原生去支持 E1命令长上下文的一个模型 然后这块其实比较有意思的点 就是位置编码如何去选取 我们从刚开始比较传统的 transformer的架构来去做的话 大家都会用rope来去做位置编码 但是如果用rope的话 它在长文扩展的时候 它有个问题就是rope的具体的一个参数 是需要做调整的 如果不做调整的话 rope直接去扩长文 就会显得没有那么有效 然后这个其实是rope时代 大家一个经典的做法 当然说如果现在 如果你还是用一个全注意力 或者说如果你不引入线性注意力的话 这个策略不会有太大的改变 也就是说你还是得去 在不同的长度的setting 来调节不同rope的参数 但是这个事情在混合模型里 是可以改变的 最早是cowhere团队的一个工作 主要讲了这样的一个因素 他们的结论也很简单 简单来说就是因为hybrid attention 排布方式 对于linear attention来说 它已经引入了这样的一个位置信息 [01:20:08] 无论说你用rope也好 rope加斯雷尼window也好 linear attention也好 就是在线性注意力的这样的一个阶段 其实位置信息是已经被引入到的 所以说如果在这个setting下 就是在hybrid attention的setting下 如果我们可以把这个for attention 从rope改成nope 也就是说在全注意力的情况下 把位置编码去掉 它其实是可以带来一个更好 一个是可以带来更好的一个模型的表现 第二个就是它在这个 长上下纹是更容易扩展的 也就是说nope 它是在模型扩长的情况下 不需要调整任何模型价格的参数 就可以达到一个长上下纹的这样的一个效果 这个效果无疑是很优雅的 因为我们会觉得 模型架构的参数选择 当然是跟这个具体的长度是没有关系的 也没有任何的理论去支持出来 就是我们具体 我们为什么要去不同的长度recipe 然后来去采取不一样的参数 然后这种架构 其实就可以有效的避免了这一点 一个是刚开始我比较早的看到 然后可能看到第二天我就去浮现了一下 因为我当然看到就觉得特别有道理 然后我第二天浮现了一下 然后也很work [01:21:08] 我当然觉得肯定在混合注意力的一个里边 比较好的一个方式 对我在会议里边还审道理片 当时我直接给了一个strong accept 我感觉我这几年可能也都没有给过几个strong accept 因为我觉得这个确实是一个很有效 也是一个很优雅的解决方案 然后当然这个也可以讨论一个 大家之前理解错误的一个问题 就是ROPE它本质上它带来的是recency bias 就是ROPE它work最有限的点 就是对它对short context的建模能力是特别有效的 但是它其实对长文来说是没有帮助的 甚至是有负面影响的 对于某一些舆论观点会认为是ROPE引入了长文的表现 这个其实是错误的 就是ROPE它并不带来任何的长文能力 它甚至是损害长文能力 所以说KBK3会把ROPE在长上海门的复尔腾认这块直接下掉 然后直接下掉之后就会 一个是如果你直接测外推 直接测外推它都会好很多 如果用ROPE的话 你扩插度你需要调参数 如果你调了参数你不去训练 它那个结果其实是很差的 所以说如果有NOPE你不用调参数 [01:22:08] 它的外推效果也很好 然后长文的这个效果也没有任何问题 甚至还要更好 它其实是一个在混合注意力的一个 KONDUST是一个相当优美的解决方案 所以说KBK3也用了这样的一个解决方案 然后POST TRAINING的话 首先其实可以讨论的一个问题就是 低季度训练应该在什么阶段去引入 然后这个其实大家采取的策略是不太一样的 就比如说Deepseq V3 他们是刚开始是原生FP8来去训练的 然后Deepseq V4 他们就直接用W4A8来去做原生训练的 但是KB这块采取的策略不太一样 他们是首先用高精度去训练 然后在SFT阶段 然后再把低精度的QAT引入进来的 这样至少我就有两点折的讨论 第一个就是从项目而言 就抛开技术角度 从整个项目的管理而言 大规模的训练采取更高精度 肯定是一个更保险的方案 对不对 因为它无论如何也不会错 主要如果用高精度训练 在大规模的Skilling中带来了其他问题的话 我觉得这个是一个相当不可控的一个因素 而且这个东西更大规模的训练 [01:23:10] 是很难提前被充分验证的特别精确的 我觉得第一点就是从项目管理的角度的一个优势 第二个就是从技术角度对吧 我们是否有必要 从刚开始就用低精度训练 起码从我的实验而言 应该也是没有必要的 然后KIMIK可能他们发现也是没有必要的 也就是说对于低精度推力而言 而言本身就是从from scratch刚开始就引入 并不会带来任何模型能力的一个提升 也就是说你WC18你在什么时候引入 只要你过了一定量的训练 它最后的结果可能都差不多 所以在SFT阶段引入是一个更保险 然后在技术上也不会带来额外损失的一个方式 对然后RL这块的话 因为RL其实也是对 因为KIMIK刚开始 它其实对RL这块是一个比较充分的一个 因为他们其实从很早以前就比较重视RL这块 所以说从KIMIK1.5到K2.5 他们其实一直在做一些比较持续的创新 然后其实在K3这边也会对比较充分的引入进来 然后这些其实都是一些比较对比较成熟的一些方案了 这块就不太展开去讨论了 [01:24:10] 然后4.1.3的话 这块可以讨论一下OPT OPT刚开始也是董老师团队这边比较早去讨论的一个方式 就是艾演员院的对 对 然后B.ROM这个是郁贤做的 郁贤去年也是清华特奖 这个是他在董老师在艾演员院这边去做的 然后其实OPT从刚开始 就是刚开始大家用起来和其实和后面大家实际在工程中用的方式不太一样 这个其实可以讨论一下 就是OPT刚开始的Motivation是什么 后来大家又是怎么做的 当时OPT讨论的contest是蒸馏 蒸馏有两种 一个是黑盒蒸馏 黑盒蒸馏就是大家现在比较采取的方式 就拿一个API 然后我们不知道模型内部的状态 我们也拿不到这个模型推理的logit 对于这个外界来说 这个模型它完全只是一个黑盒 我们只能拿到它的这个输入和输出 然后这个叫黑盒蒸馏 然后白盒蒸馏的话就是另一种蒸馏方式 我们可以获取到这个模型本身 然后我们也可以任意的去拿到这个模型推理的过程中 我们想得到的任何的一个状态 然后在这个场景下 [01:25:11] 就我们如何去做蒸馏 然后我们是否可以再基于比黑盒蒸馏更好的一个表现 然后mini-lm 当时采取的方式就是反其他而行之 因为之前大家采取的方案就是让模型 就让titter去生成答案 然后然后再把这个生成答案用sft的 用forwardkd的方式 把它引入到student的模型里 然后mini-lm是反过来做的 也就是让学生去生成答案 然后让titter做一个美部的一个纠正 然后直观来讲的话其实就两种 一个是老师讲课 老师讲课 然后你把老师讲课的结果学进来 然后第二个就是你自己去做答案 自己去做题 自己去写中间推理过程 然后老师会把你中间推理哪里做的不对 然后给你指出来 然后告诉你怎么去做 这个叫reverse-kl 然后reverse-kl 然后后来这个Thinking Machine Lab另一个名字 就叫on policy distillation 就是大家会意识到这个是一个比较有效的一个 从蒸馏的角度是一个比较有效的方式 就是说从我们不直接去学习模型的答案 而是在student的自己的推理过程中 [01:26:11] 让教师模型逐步的去verify 或者说去纠正学生模型的这样的一个推理的方式 然后这个范式刚开始其实是为了蒸馏来去使用的 无论是你做白盒的一些实验型的时候 包括说从公司的角度 你可以有一个pro的版本 可以有个flash的版本 然后flash的版本 你可以用OPD的方式 然后来去蒸馏更大的模型的这样的一个结果 然后从而去获得更好的一个表现 你如果from scratch训练一个flash的模型 你可以比flash的模型 获得一个更好的表现 从而在比较便宜的模型这档 然后获得一个更长的竞争力 这个是OPD刚开始的一个motivation 但是其实后来大家更常用的一个方式 不是去做蒸馏 原因在于其实原因在于 如果你想做蒸馏的话 你至少得有一个大模型 然后你再去训练一个小模型 对 如果你自己训练自己的模型而言 但是如果说你想去蒸馏 比如说蒸馏一些黑盒的模型 这套方案是完全不合用的 从公司或者说从这个项目策略上来讲 [01:27:11] 如果我们不去基于一个大模型 然后来去训练一个更快更小的一个小模型 因为现在大家都不是这个setting 大家都一般都是搞一个旗舰模型 然后就完事了 然后来去它作为inference服务 然后在这个场景下的话 就不存在大刀小蒸馏的这样的一个行为了 然后大家逐渐去采用的蒸馏的方式 就是自己蒸馏自己 然后为什么要自己蒸馏自己呢 我觉得还是两部分 一个是非技术层面的一个是技术层面 我觉得从非技术层面的原因的话 我觉得这个技术可以让整个post train team的管理 变得更加简单 有post train核板 它其实是一个比较highway的一个东西 因为post train它跟post train不一样 post train我只要把数据合起来 然后一块去干就完事了 但大家一般post train的话 会用一些更复杂 或者一些更先进的一些训练策略 而且这些策略可能会不太容易训练场 可能会如果再直接去做核板的话 可能会有一些难度 所以说基于项目管理策略的话 unpolicy distillation 它其实就是一个比较好的策略 能把整个post train的team的管理变得简化一些 然后从技术角度的话 [01:28:11] 比如说大家训RL 它一般有不同的策略 比如说你训Math 它可能就是个verifiable reward 然后如果你有些preference的一些需求 你可能就会有一些reward model来去做 然后如果你再想扩展RL别的能力 你可能每个能力对于RL来说 它的reward 它都是一个独特的reward 然后你如果想把所有的模型的所有的能力 都搞到一块 因为post train一般大家都会专项突破 然后你想把直接专项模型的不同的reward 直接拿进来一朝会 它其实是比preference的难度要大的 我也不是说完全不可能 还是有可能的 但是OPD的话它就会变得很简单 我们可以把不同的reward model 或者说不同的RL范式 然后简化成不同的模型 然后简化成不同的模型 这个事情就容易很多了 因为对于RL scale 或者说对于data 它是一个高度移构的一个状态 但是对于模型来说它是一个高度同构的状态 因为现在我们也不会为了不同的任务 去专门设计不同的模型架构 如果模型都长这样的话 我们再做一个multi-t-shirt的一个核板 这个就会容易很多 不过这个也不是K3首先去用的 [01:29:11] 这个是一个大家现在比较 wide accepted的一个做法 我印象的应该小米 这个GLM应该大家现在都是这么去做的 对然后qualization刚刚讲过来 然后draft model这块 其实我觉得还是挺有意思的 这块还是可以额外去有一些很延伸的工作的 对因为我觉得这块K3 它目前优化的不是很完善 之前小米他们推出了一个 能达到一个1000TPS的一个方案 那个主要是用了两个技术 一个就是太阳亮团队 然后他们做的一个可以高度融合 不同阶段的一个算子 然后这样的话 其实它可以获得比传统的这个 这个VLM推理方式强很多的这样的一个推理效率 然后这个可能达到三四百TPS 然后小米是个基于太阳亮团队的一个结果 然后再加上那个基于太阳 RT的一个结果 然后再加上那个DFLASH这个投机推理 带来的额外的加速比 最后能带来一个比原模型强很多的一个 对强很多的这样的一个推理速度 然后这个其实主要的服务是对于一些成本 可以付出更高的成本 但是想拿到更强的一个推理速度的这一波用户去做的 因为它本质上如果说你 [01:30:12] 是为了整体的throughput服务的话 这个其实它的收益会强很多 但是如果你是小bash size 但是大的throughput 这套方案是会强很多的 然后这样的话 就是刨开Tile RT那方面的贡献 然后最后就落到了如何去做更好的MTP 或者说用做更好的Draft Model 然后这块的话有一些有力量的工作 然后刚开始Ego3和MTP Ego3和MTP 它其实它主要的方法就是因为刚开始 Speculative Decoding提出的时候 大家还是用一个没有关系的小模型 然后来去Speculative比较大的模型 然后这样的话它其实有一个问题 就是你无法充分的去利用 大模型中间的一些hidden state 如果说你可以利用大模型中间的hidden state的话 你其实就可以把小模型做的更小 或者说你在相同的参数底下 然后你的接触率做的更高 最后可以带来总的更强的一个推理效率 然后MTP和Ego3 然后它其实都是这样的一个思想 当然MTP如果从from scratch的话 它还有一些别的好处 然后Deflash的话 它其实会更有意思一些 [01:31:12] 对,因为它联系了传统的Language Model 和训练比较火的DeflationLanguage Model 这两条脉络 然后通过Deflash这条线结合了起来 对,因为DeflationLanguage Model 刚开始提出的时候 大家主要的claim就是 DeflationLanguage Model 在单用户或者说batch size 比较小的情况下 可以获得比这个 可以获得比传统的Language Model 快很多的这样的一个推理效率 对,但是DeflationLanguage Model 之前最大有两个问题 对吧,第一个问题 就是它如果from scratch 它的训练效率不够高 它的整体的结果 很难和传统的AR的Language Model 想去匹敌 然后第二个问题 就是它只能打throughput 它只能打小batch size的throughput 但是如果是多用户 最后追求总的throughput的一个场景 它其实DeflationLanguage Model 并没有优势 所以DeflationLanguage Model 当时主要统一了这两者 就试图去利用DeflationLanguage Model 更快的一个推理方式 然后进一步去优化 这个MTP 或者DraftModel 这块的一个加速比 最后可以得到一个更优的 [01:32:12] 总的一个单用户的throughput 当然了就是MTP 这块其实是 之前我跟陈简 就是Deflash那个同学也交流过 他当然提了一个点是 对于整个模型是很重要的 即使我们用Deflash这种更先进的DraftModel的策略 它跟预训练的关系仍然是很大的 也就是说对于DraftModel来说 它是需要利用大模型的一定的推理能力的基础上 然后再去使用DraftModel进一步的去扩大 也就是说对于MTP来说 MTP是需要给 就是在Pretrain阶段 需要给MTP提供一个接口 然后这个接口 会对下游的DraftModel的提升会特别帮助 然后这部分其实是需要在Pretrain阶段就引入的 然后当然了DraftModel也是需要做一些反推理 它是需要做一些自己特化的处理的 比如说我们可以用一个KLLoss 然后来去替代比较传统的NAS token Prediction的Loss 这样的话 我可以在原Model Verify的过程中 它可以对得更齐 这样的话可以进一步去提升DraftModel接收的一个效率 [01:33:12] 对这块它我觉得之后还会有一些更深层次的工作 我猜哈 因为这个肯定不是对于MTP的一个重点 然后Homer这个RL task的话 它是一个比较specific 对于不同的任务来说 它有不同的具体的一些策略 我觉得这块的话只要看原文就好了 对然后接下来的一大块就是Infra Infra这块的话 首先现在其实对于模型架构的设计来说 关键的设计 它是需要和Infra进行一些co-design的 一个是co-design 然后一个就是模型架构本身 它会影响整体的Infra-squash它本身的一个设计 然后这块包括跟Dipsk 这一系列的Infra它是有一些设计上的区别 这块我觉得也是一个比较有意思的一个点 然后首先就是KDA KDA之前在前面其实已经讨论过了 因为我们如果想去追求更高的一个chunk的效率 然后我们是需要对KDA的刷减系数 做出一定的限制的 这样的话我们可以用一个更好的kernel的设计形式 然后来去带来更强的一个kernel level的一个效率 然后这块其实多的一个点就是KDA的CP [01:34:12] KDA的CP是一个 我觉得这个LinearTencent的CP 其实是一个可以简单讨论一下的一个点 因为比如说对于sliding window 或者说对于ForeTencent而言 其实CP它其实从概念上是相当容易的 因为比如说你对于ForeTencent来说 比如说现在有些比较经典的算法 比如说你可以用RainTencent 或者说用ZegZegTencent 因为Tencent它本身的这个计算模式是够简单的 而且它很多地方是省不了的 我至少会得把这个跨GPU的所有的kp cache 都拿到一个GPU上然后来去做计算 我在这块是一个相对来说比较简单的一个概念 但是对于LinearTencent的CP而言 它的概念其实是一个更复杂的 然后这个大的框架 其实我们还是可以回到最经典的一个chunkwise recurrent 就chunkwise recurrent 首先我们都同意说 chunkwise recurrent 对于LinearTencent来说是一个必备的算法 然后对于一个正常的单机的一个 不开CP的一个训练场景来说 chunk recurrent它其实就有两部分 一个就是你可以拆成 比如说比较小的16tile或者64tile的一个chunk 然后chunk之间 然后使用这个degrade的方式去计算 然后chunk内部的话 [01:35:12] 可以用一些比较parallel的方式去计算 然后kta也是这么做的 然后kta的那个decade的限制 主要是解决这个chunk内部的一个 可以用parallel计算的一些高效性 然后这样的话 其实对于单机的LinearTencent来说 就是一个chunk内部用并行的方式去计算 然后chunk之间用串行的方式去计算 这样的一个计算的python 但是对于CP来说 我们就需要讨论它的一个LinearTencent 比较有意思的一个范式 就是它这个chunk本身是可以任意去拆分的 也就是说不同的chunk的数字 就比如说你想512个token一个chunk 或者说8k token一个chunk 它在数学上是完全等价的 这个就跟早年一些比较拼借式的方案 比如说有一些工作会尝试 这个chunk之间都要用LinearTencent chunk内部用4Tencent 如果用这种策略的话 它的这个chunk的大小 就跟你具体的模型的这个architecture design 是有关的了 但是纯LinearTencent其实是无关的 既然是无关的话 我们就可以对这个chunk的层次 [01:36:12] 做出一个比较任意的处理 比如说对于单机来说 它chunk是一步去拆分的 我们就16tile去拆分 然后16tile内部 用一个并行的方式去计算 但是它其实并没有限制说 你chunk只能拆一次 它的思想就是 比如说我有一个1million 特别长的一个chunk 然后我们可以拆成8k 放一张卡 8k放一张卡 这样的话我们就构建了一个 以大chunk为单元 然后不同这pu之间 然后采取低轨计算 这样的一个chunk的拆分方式 然后我们拿到8k的这样的一个 拆分方式之后 我们可以在内部 进一步去拆分 最后在linear tension的时候 我们没有任何的限制说 一个chunk中间是如何去计算 因为对于一个比较小的chunk而言 parallel是一个比较有的实现 但是如果我们拆chunk足够大的话 我们可以采取chunk 套chunk的方式 然后来去进行计算 也就是说对于linear tension的cp而言的话 我们是做一个层次性的chunk 我们首先是在不同机器上做一个chunk 然后在一个机器内的话 我们再在kernel来过然后做一个chunk 然后通过这样一个双层chunk的形式 然后组成一个对于linear tension [01:37:13] 一个比较大的cp 然后这个能够主要还是就来源于说 就是chunk linear tension的chunk 可以任意拆分的一个特性 然后这样的话可以带来 就是linear tension的一个cp的一个方案 然后这个其实是对于 对于这个forter tension不太一样的一个处理方式 这个是可以讨论一下大家 然后接下来是 对上面这个这个是cp 或者说kernel来斯的一个infra的方案 然后接下来的话 其实就会讨论就是从这个分布式训练的一个角度 然后我们如何去优化它的分布式的这样的一个方案 然后这块的话我们后面就可以发现 其实它跟dipsigr方案是稍微有些区别的 然后这个区别是主要是来源于不同moe的一个架构的一个方式 然后首先的话5.2.1这部分 kimi团队带来了一个GDPP进一步延伸的一个EP的一个计算方案 然后他们的主要的claim的一点就是对于传统的EP 因为我们现在都用DropplusEP DropplusEP就是对于每一个token而言 我选哪个专家它是不受整体的一个约束的 就是我想选哪个选哪个 然后这样带来一个方案 我们汇总起来之后会发现不同的专家 它的负载是不一样的 然后既然它是不一样的 [01:38:14] 它就会带来一些问题 第一个问题就是对于EP而言 因为每个GPU它分到的token数不一样 token数不一样的话 它就会带来它的整体的执行时间不一样 然后执行时间如果一旦不一样 它就会互相等 互相等就会浪费这个模型的 会浪费GPU的算力 这是第一个问题 第二个问题就是如果我们不同的卡上的 它的token数是不确定的 然后对于GPU的通信来说 它会额外多一个阶段 就是我们首先是需要告诉所有GPU 就是你要接受多少token 它再把这个token发过去 所以基于这两个阶段的话 传统的EP它严格来说 当然不是一个最优的方案的 如果完全为了Infra 它最优的方案就是这个Dijok的EP 也就是说我每个token 然后要去受到全局的一个影响 然后受到一个全局的影响的情况下 我们可以通过一系列的一个 allocate的方式 从模型的角度 让每个expert都受到完全均匀的一个token 然后通过模型的方式 然后让它达到完全的balance 完全理想的情况其实就是这样的 所以说如果在Infra的层面完全均衡 完全均衡 然后是一个最优的方法 [01:39:14] 从Infra的策略就是我们努力把Infra 从非最优的岛上一个最优 然后同时保持模型的能力是不下降的 因为如果drop token的话 大家现在都不会用 因为它对于模型损失 对模型能力损失还是相当明显的 然后这个 然后木音P它就采取了一个 我觉得是一个比较高端的一个方案 它把模型的EP的方式 变成了一个更动态的一个方式 就是它是可以计算出 比如说之前的一个经验的方案 比如说我有128个专家 然后如果我们EP8的话 可能每张卡放16个专家的话 它是一个比较静态的一个方式 然后木音EP的话 它采取的是一个动态性的方式 就是它有一些冗余的专家 然后通过额外冗余的专家的话 然后它从数学上是可以证明说 我存在一个策略 可以使得我们只需要增加一个小比例的 荣誉专家就可以保证token数的完全对齐 我感觉像是一个比较经典的数学结构与算法的一个问题 这个是可以证明到的 然后他们可以证明到这一点的话 它就可以得到一个结论 就是我们通过少量的荣誉专家 就可以达到所有卡上的均衡的这样的一个效果 [01:40:15] 然后具体如何去达到 他们采取了一个online planning的方式 然后这样的话 我们去提前去规划 哪些卡应该有哪些荣誉专家 然后在这种情况下可以达到不同的 对不同卡上 从token数的一个完全的均衡 当然即使说你从卡的角度是均衡的 它并不代表专家层面是均衡的 因为这个算法它只是保证了所有每张卡 每张卡的它的所有的token数是一定的 但是它并不保证每个专家是一定的 因为一张卡里有多个专家 如果说你还想保证每个专家的都是一定的 那就没有办法了 那你就只能采取有损的一个策略去优化 这个可能如果大家是不希望的话 这个上线可能就卡到这里 所以说我们在两个中间可以采取 可以找一些更优的一个处理方式 这块是KIMI团队带来的一个比较有意思的一个创新 接下来就是这块 就memorate efficient training 我觉得这块比较有意思 首先他们带来了一个从软件工程的层面 比较简单的一个方案 就是我们可以去更细力度的去控制 每个部件应该去采取activation [01:41:16] 还是去采取offloading的一个策略 然后这块不一样的一点就是 KIMI K3它采取了大规模的offloading 对把中间计算得到一个结果offloading到CPU上 然后这个其实是一个non-trivial的一个东西 因为理论上如果想满足offloading 不拖慢这个模型的训练 它是有一定的条件的 你得保证这个CPU和GPU之间的通信 它满足的某个不等式 这样你才有完全用计算overlap 这个通信的一个可能 然后为了达到可以做offloading的话 然后KIMI K3它把所有可以offloading的东西 都用FP8去存 这样它可以省一倍 省一倍它可能才能从一个边际 然后跨到另一个边际 然后跨到另一个边际 然后具体这个边际怎么算 这个就跟具体的卡 具体的环境 集群环境也跟具体的模型config是有关系的 然后后面的话它一方面 它们是需要去优化 oternary residual 它本身的一个infra的关系的 这个其实在oternary residual的paper里 其实也讨论过 然后我觉得PP这块 其实它我觉得一个是PP 一个是通信的overlap的手段 这个其实跟DevSec是不太一样的一个方案 [01:42:16] 因为首先比如说 从DevSecv3的角度而言 它采取了两个不太一样的 至少是non-trival的一个方式 一个就是比较细力度的moe角度的overlap moe角度的overlap 就是因为首先就是moe中间有两个通信 有两个通信 它一个是dispatch 一个是combine 然后这两个通信 它是overhead是比较大的 其实在blackwell上 它其实又不太一样 但是无论如何 它是一个比较大的开销 然后DevSecv3的话 它一个是在moe的overlap这块 它会拆的特别细 然后具体的方式 它就是会把moe上一个batch的moe的forward 还有backward和下一个moe的forward 把它俩融合起来 然后通过重排序计算的一个先后顺序 从而达到把所有大的dispatch和comband的计算 然后comband的dispatch和comband的通信都藏起来 然后想达到这点的话 其实是需要特别精细 或者也特别复杂的一些软件工程上的一些优化的 这个其实在microtron core里边也讨论过这样的类似一个事情 [01:43:17] 因为这个事情如果想做的足够好的话 我们需要把所有的forward和backward的计算 从原子计算的层面就拆开 然后手工进行重新排布 我觉得这个还是有一定的难度的 然后另一个就是DevSecv3采用的dupe的策略 也就是为了去缓解pv的气泡和不同的activity 不均匀的方式 然后他们去采取了dupe的一个pipeline的排布方式 然后当然后面除了dupe 还有个dupev 他们达到的效果是一样的 对它从逻辑上会更简单一些 对它从逻辑上会更简单一些 起码从公开的他们写到的里边 Kimik3是没有采取采用这两个优化方式的 他们采用的其实是一些别的方式 然后第一个就是如何去隐藏通信 这个就跟实际的模型架构的选新有关系 因为Kimik3它采用了Latent MOE 因为Latent MOE它本身是极大的降低了通信开销的 所以说它在整个的计算开销里边 它其实是减小了特别多的 因为它的通信开销减小了特别多 所以其实如果想把它overlap掉 就会变得容易很多 就是我们没有必要再去跟 [01:44:19] 另一个batch的计算来去做overlap 我们可以采取一个batch内部更简单的overlap手段 就可以把通信很好的隐藏掉 然后Kimik3它具体采用的方式 是把这个MOE的前向后向的通信 跟sharedexpert的计算 overlap在一起 因为sharedexpert现在折押多数都有 而且sharedexpert它是有一定的计算量的 然后正是因为通信的开销减小了 所以说它才能被sharedexpert 一个比较简单的方式去overlap掉 但是如果你用传统的MOE 它的通信开销就会特别大 特别大的话你用sharedexpert去overlap 就很难overlap掉 所以说如果你sharedexpertoverlap不掉的话 你就必须把另一个batch拿进来 这样你才能完美的把通信都隐藏掉 我用不一样的MOE的架构 然后带来了不一样的overlap的一个策略 然后这个策略它带来一个好处 就是推理的critical path latency 它是免费的 然后从训练架构上的话 就是我们因为通信量更小了 我们就可以采取更简单的一个策略 然后来去排布通信的一个气泡 [01:45:22] 然后其实还有一个另一个问题 就是我们即使通过更复杂的方法 去完美的把这个通信去藏掉 它其实也不是完全无损的 因为即使是完美的去通信和计算隐藏 计算也会相对的去慢一些 它不是完全可以无损的 然后针对这个问题 DPEP也做了类似的优化 DPEP的优化方式就是用 一个足够少的SIM的占用 来去获得更大的一个整体的通信的throughput 从而才能让这块的overlap跑得更快 所以说这块是一个很不一样的一个设计方式 然后另一个设计方式就是PP的处理 其实是不太一样的 因为如果用dupepe或者用dupepeV 这样的一个PP的一个排布方式的话 它其实不同对不同PPRank之间 它相对还是一个比较对称的一个状态 如果你用单向的PP的话 它其实就不太对称 然后不太对称的话 就两种解决方式 第一种就是让它变得对称 第二个的方法 其实就是KIMI这个paper里讨论到的 我们可以把不均衡的方式然后transfer掉 因为比较朴素的PP的话 比如说前面的PPRank [01:46:22] 它会进入的更早 它会积累的bash就会更多 它的activation的压力就会越大 然后KIMI3采用的方式是 它把memory占用比较大的一些PPRank 然后直接让它存到比较小的一个PPRank 然后通过这种也是比较lightweight的方式 然后去推避了更复杂的dupepe的一个设计方式 然后在后面的话其实就是mium的一些优化 因为mium它是需要全矩阵去做牛顿朔尔斯迭代的 所以说如果用传统的adam 因为adam相当于是你是把所有参数都摊平 然后之后再去切的 然后因为adam是element-wise优化 所以你怎么切 它都不会影响模型的一个优化的一个结果 但是对于mium来说它是有影响的 因为我在某个rank上 我是需要把一个矩阵所有的参数都去保存下来的 所以说这块的话需要做一些处理 才能让mium比较好的去在optimizer这个角度去切起来 对然后dormaty这个infra也是一个比较有意思的一个点 因为其实从infra的角度 就是纯的language model 它其实是以 当然大家想把它优化的足够好的 [01:47:22] 也是需要相当多的effort 这刚刚也讨论了很多 但是其实对于dormaty而言 你每引入dormaty的一项功能 它的infra难度其实都是直线提升的 这块的问题就是如何去把vacenecola做好 vacenecola做好的话 这块它提出两个问题 一个就是我们对于现在的这个vacenecola的话 大家是会对这个vacenecola做一定的压缩的 比如说你这个vacenecola最后输入到这个大模型里边的话 它可能是8k token 但是你输入之前它可能是32k token 也就是说vacenecola接入模型的过程中 它其实是有做一个压缩的 但是这个压缩在这个vacenecola内部是没有做的 所以说它在vacenecola内部计算的时候它就会更长 所以为了解决更长的一个问题 可能你如果对金典对于模型主干不需要开CP的话 你可能就对于vacenecola它可能就需要开CP 所以说这块它是需要做一些额外的infra的一个处理 然后PP这个就更有意思了 PP这个大家其实注意到一个问题就是 我们做这个VL native training的时候 VL的token它其实只是有一个比例的 [01:48:23] 比如说你对于某些 对于某些卡来说它是一个纯文本的一个状态 然后你对于另一张卡它可能是一个全视觉的一个 VL的这个比例相当大的一个状态 如果是这种情况的话 你还是会出现一个对不同卡不均匀的一个现象 然后这个现象它不仅会影响DP 它PP也是会去影响的 因为PP的话我们首先是要保证不同PP之间 它是一个比较均匀的一个状态 这样它的流水线才能打得足够满 不然的话如果我们在这里引入了一个新的vacenecola 第一个PP它就它的这个计算强度就会显著去增强 它就会破坏整体这个流水线的一个打满的一个状态 然后为了去规避这个行为 KIMIK3这块采用的一个方式 就是把PP不去放在这个PP的刚开头 它是会放在中间或者尾巴上 然后所以在前面的PP 对在前面的这个vacenecola 或者说比较浅层的language model做的过程中 中间的PP它是闲置的 它就会把中间闲置这部分利用上 提前把这个vacenecola 后面的一些步骤提前算出来 然后通过这种方式去规避掉这个 [01:49:23] 第一个PP带来的足够大的一个气泡 然后这个是一个在PP的层面 需要做的一个优化 它这边论文真的写得好详细 是的 就是这些细节的东西 其实是需要去处理的 就如果你不处理的话 就是你写出来 大家就觉得这个事情肯定也没有问题 可以去这么做 然后有一些没有写的部分 大家就会去追求 如果有些团队的这个阻人密度 没有那么足够说 我自己就能把这个事情搞定了 大家有一部分就会沉迷一小道消息 大家就会私下一个打听 这些东西到底是怎么处理的 如果你写出来这个事情 其实就对 大家就不需要去找小道消息了 因为如果它写出来在复线难吗 我觉得Infra上的事情 本质上没有什么难的 因为它本身就是个高度确定性的东西 我觉得所有一部分的事情 都本质上它是个确定性的东西 但是你如果想自己提出来的话 它就对你本身分析Profeeling的方式 或者说对于你本身的一个组织密度 或者说就是你的团队氛围 就是有比较高的一个要求 但是你如果整个Infra的团队比较好 你还是可以自己搞出来的 [01:50:23] 但是你如果不行的话 你就会尝试去follow一些 一些比较好的一些工程事件的practice 但如果这个事情都搞不定 我觉得就可能就不太应该了 前面主要是 就Infra大家主要就翻三部分 一个是pre-train pre-train的话 前面主要是讨论的一些 大规模分布式的情况下 一些比较复杂的一些优化方式 然后后面的话 一个就是后面的话 两部分 一个就有rl 然后还有一个就是inference 然后rl的话 因为它本身就是设计大量的inference 所以在这两个中间 其实是有一些overlap的 然后rl它本身一个对不太一样的点 就是它需要对大规模sandbox 会有一些比较细的一个要求 但这个其实就算是一个更工程的一个东西了 这块的话 它其实就是一些比较细的处理 或者去处理不同的sandbox 对于rl的task来说 你每一个task 它可能都对应一个它自己的docker 所以说就是如何去管理大规模docker 其实是这块比较麻烦的一个问题 然后上面这块的话 我觉得这个kimi k3 比较有意思 就是它会时不时给你蹦出来一些 比较有意思的东西 对我觉得这块也比较有意思的东西 [01:51:24] 但是也不一定是刚才就是它提的了 这块可以省一个gradient buffer 对这块相当于是一个比较tricky的一个东西 因为对于一个完善的rl来说 它有好几部分的model 比如说你至少有一个种model 然后你还有一个reference model 然后你一种model 它还有对应的一个gradient和optimizer 当然如果你还想做reward model的话 它还会再多一个model 然后其实这块的话 它就会多特别特别多的model 然后就有kimi k3 就这块这样的一个比较有意思的事情 就是它不同model之间 因为你放一个model 它对于GPTO来说 它还是很大的一个memory 所以说它这块相当于是 是把两部分memory就拖到一块了 就对于reference model而言 然后他们发现 它可以跟gradient buffer来去合起来 因为首先的reference model 它是没有梯度的 然后在你求objective的过程中 你是没有gradient的 等你有了gradient之后 然后你可能这个reference model 就不会去用了 所以说它这块用了一个gradient buffer reviews for non-policy model for forwarding 然后这块是一个对 比较有意思的一个东西 然后上下来我就感觉 [01:52:24] 是一些比较常规的处理方式了 然后我觉得influence 目前不会有太多的一个东西 因为主体的 inference optimization 它其实是VLM 或者S这样这些的 专门讨论的一些内容 然后这块它其实讲的就是 对于KIMIK3架构 它所带来的增量 就是在现代的推理引擎中 是如何去处理的 然后首先就是 首先就是会带来 也就是Linear Tension 它在现代的 Inference Engine里 它有一个麻烦 它有一个麻烦就是 它prefix cache 它是一个比较麻烦的一个点 因为对于Four Tension来说 它相当于是 于是每个位置 它都有一个cache 所以说你可以任意 就是你下一个位置的cache 它一定是上一个cache的 一个简单的一个增量 所以说在这种情况下 就是prefix cache 会得简单很多 但是对于Linear Tension来说的话 它会有一些 它会有一个比较麻烦的特性 就是Linear Tension 它每一步 它是需要 它是会在原来 上一步的 这个cache的基础上 它是做一个复写的 也就是说 对于每一步而言 它的这个prefix state 它其实都是不一样的 [01:53:24] 所以说如果我们 把每一步都存起来 那其实Linear Tension 的好处就完全没有了 但是你如果完全不存的话 你就完全没有办法 去享受到这个prefix cache 所带来的好处 对 然后这块 这块的话就是对 现在目前对于 Linear Tension 它的一个采用的策略 就是按照block去切 就是我每个block去做一个 去做一个这个prefix caching 然后同样的话 我们还需要 另一个Linear Tension的点 就是VLM这样的一个 配置KV 它的一个实现方式 从工程上 或者从概念上 它最简单的一个 分布方式 它是不考虑层和层之间的 意志性的 所以说其实从去年还是前年 就是如果想直接 在这个VLM里 去引入混合架构的话 它在Infra上 并不是一个容易的事情 而且因为现在 Inference Engine 越来越heavy了 如果简单的一些改法的话 会把整个Inference Engine 搞得特别的乱 当然现在Inference Engine 可能都有一些 比较先进的管理方式了 但这个就是需要去 透露处理一下 一个就是 一个就是把不同的 Tension pattern去结合起来 对 因为对于VLM来说 是按配置管理的 但是对于Linear Tension [01:54:24] 或者Slideman的话 它才是不能按照 配置管理的 因为它并不存在一个 长久的一个 对于Tokenvisor而言 的一个 Carrie Cache的一个产生方式 这个本身对于 VLM的设计来说 它其实是需要做一些 尽量性的处理的 然后我觉得后面 就是一些 就是适配性的一些优化 因为Decoding的优化 它其实跟prefill 或者说跟training 不太一样 所以说这块的话 就对于每个环节 都需要做一些额外的 一些chronless的一个配置 但我觉得这块应该 对我觉得这块 都是可以去做的 而且对 我觉得应该是一个 确定性比较高的一个事情 然后后面就是Evaluation 我觉得Evaluation 没啥好讲的 就是好呗 特别好 就是在每个环节都好 然后后面主要就是这样的一个状态 然后应该就没啥了 觉得K3让你最impressive的地方是哪里啊? 个人而言吧 我觉得impressive的一点 就是他们把这个激活搞得特别特别大 就是足足有100比0 比我预期的还是要大一些的 这个依赖的什么能力呢? 这个不依赖任何能力 就是你具体定计多少激活 这个本身它不是一个技术性的东西 [01:55:24] 就看你想到达到什么阶段的一个效果 我觉得K3它还是比较有破裂 就是在已有的开源模型这个赖的基础上 他们要提升一个数量级 所以我刚刚就说 他们比上一代的激活其实是多了三倍多的 我觉得这个决定是一个非技术性的一个决定 但是这个是要一定的策略的 因为杨志明喜欢说有概率的非共识 你觉得在K3上能看到它们的什么样的 different bets或者说创新 我觉得也没啥 因为有价值的技术创新 他们都单写了一个paper了 所以这个K3刚出来的时候 我主要就surprise这个size 别的我都不合我预期的 就是你刚才给大家也展示了好多他们历史的paper 其实中间就已经发出来对吧 但是它把它优化到了一个更大的模型上 对我其实的一个观点就是 科学研究是不存在节约性的提升的 只是说大家习惯把这个技术的 渐进去提升的某些节点 会成为一个milestone 我其实一直这么认为的 技术永远是慢慢去提升 然后可靠这个公司里的所有人 下面一个所有人 包括整个业界的同学一块去推动的 [01:56:25] 所以我觉得从这个角度没有什么milestone 有人说Kimi的研究方式相对比较科学 你觉得这个你认同吗?怎么解释? 首先我是认可的 但具体认可的方式的话 我觉得首先 我觉得这个主要是来源于 他们内部的一些管理方式吧 当然的有些公开大家都知道的 就是Kimi 其实公开里边大家认可的 最强调这个模型内科的一个团队 就Kimi他们一直尝试去让这个pre-training 变得更加的科学 比如说让不同的行为的trace 可以一些更可靠的方式去获取到 然后让比如说模型的不稳定性 或者说模型collapse的一个现象 可以更明确的一个去归因 所以他们其实一直去强调这个 模型内科的这样的一个case 我觉得这个其实是他们科学化的一个体现吧 我觉得这个其实是没有任何问题的 我觉得科学对应的就是不科学嘛 就是什么是不科学的 我觉得这个事情就是讨论清楚 大家就知道什么是科学的 什么是不科学的 我觉得不科学的方式就是 如果从整体项目的角度 [01:57:25] 你想去推一个东西 你想证明某个东西是有效的 我觉得这个东西不存在任何疑问 因为学术创新或者说 你从学术论文的管理的角度 我觉得这个大家都是有明确标准的 你得有明确的abulation 你得有足够的变量的控制 你得用更科学的方式去说明 你这个东西是有效的 我觉得这个大家都是认可的 然后为什么不科学 不科学就是基于某些 基于某些利益需求 然后把科学的方式都干掉了 这就是不科学 不特指任何技术 我一直强调的就是 我觉得KIMI这个团队非常团结 然后非常的能把劲往一处使 如果大家是这样的 你的判断方式自然而然就是科学 因为最近也是V4发布的时间 K3和V4 你觉得它们的区别是什么 能不能做一些对比 我觉得不同层面 我觉得从模型定位也好 然后从刚刚咱们比较详细的讨论 在Infra上的一些区别 然后从模型角度层面的话 我觉得目前区别还是比较大的 我觉得完全不是一个东西 我觉得其实比较好的一个case 就是Deep Seek现在出了两档 一档是1.2T的 然后另一个是一个更好的size 然后Deep Seek [01:58:25] 我觉得目前还是更强调一个性价比的 就是它们其实Flash的模型 做的还是挺好的 但KIMI我觉得它们目前主要的经理 还是尝试去提升开源模型的 一个能力的上显 而不是去考虑模型的 也不是完全不考虑 至少说你模型的性价比 不是一个最首要的一个考虑条件 当然也可以看到 现在K3的API相当贵 比别的模型贵多了 照这个趋势发展下去 KIMI和Deep Seek会分化吗 我觉得技术层外的东西 只要大家不笨 都是知道什么是好 什么是不好 我觉得组织团队的走向 和取决于人的选择 我觉得就是这么简单 我觉得技术上这个东西 不存在太多debate的 好就是好不好就是不好 这个是有明确的客观标准的 但是对于组织而言 对于人而言 这个是比较模糊的 你觉得K3相比之前的所有模型来说 不一样在哪里 它有架构创新 它创新性更强了 我觉得两方面 我觉得从技术层面来说的话 我们可以讨论很多很多 就是它中间的有一些对吧 有一些创新也好 有些推育也好 这个对于技术同学而言 是可以去讨论的 但这个东西是不是成为里程碑 [01:59:25] 它是个非技术的问题 所以说它最大的变样 是你最后的一个能力 对 Deep Seek V3 我觉得比如说它那些 比如RE这些东西 我觉得这就是简单才华 我觉得最大的问题就是 它其实是国内第一个 对吧 对 对 对 因为在K3之前 可能最大的就是千倍72B 这个其实是从模型size上一个比较大的飞跃 因为有size它才有智能 所以说K3 你把激活多了三倍 把模型也快大三倍 它就是下一个来步 我觉得这个就没有任何问题 它核心是size 有效的skate 对 对 这是个完全是一个靠团队来去做起来的东西 因为你把模型增大 最简单 如果吹飞来看 我就把这个模型 把几个数字调大一点 我就可以达到一个更大size 但这个不解决任何问题 从技术上来讲 它不是一个太大的一个创新 因为你扩大模型size 它本身不是创新 你把这个东西做work 它中间采用创新 我觉得新团队现在再去重做一个模型 还有时间窗口或者机会吗 [02:00:26] 我觉得如果这个团队足够好 这个团队的氛围足够好 然后单v作战能力足够强 是有机会的 但这个条件我觉得大概率是不存在的 所以说后面的创新事情也就不存在 为什么不存在 因为好的人其实已经进去了 还是这么说 我觉得好的人和好的组织文化想达成 我觉得是有历史的局限的 就是你不是想达成就能达成的 断尾这个事情真的是有点虚 很难去描述它 我觉得也不虚 我觉得就取决于这个leader的test 或者说leader的性格 是绝大多数影响到整个团队的氛围 我觉得Timmy有一个特点是 所有人好像都不怕杨志林吧 对啊为什么要怕呢 有道理你就 谁有道理谁说了算吧 对啊还是一个非常集体的一个工作 它不是一个个人的工作 它不依赖于个人英雄主义 是的 你觉得未来的模型的发展方向 你有没有什么预测 比如说半年之后 一年之后 [02:01:26] 模型size毫无疑问还会继续扩大 我说一下我的判断 我的判断比较暴论 我的暴论就是 就是大模型可能没有台本人的上线 后边都是一些改样性的进行进步 然后它会做到一个什么样的水平呢 做多大size对应的是什么样的性能呢 我觉得这个重要的就是 大家去定义什么能力去定义决定 只要大家能定义一个能力 就能去达到 因为大家之前定义的方式 比如说就是墙coding Area的coding 这些东西是清晰定义出来 然后大家就可以去做到 这个取决于大家怎么去定义这能力 或者说从商业化角度 大家注重什么能力 只要它能清晰定义这个任务本身 它的能力就能够达成 我觉得如果是纯Language的应该没有太大问题 它能达到所谓的AGI吗 我觉得AGI最大的问题就是它没有被Well-Defined 所以只要能够定义它就能达到 后面就是一系列的优化工作 当然如果说你定义AGI的话是巨生 是真实物理世界交互 我觉得这个事情肯定还是GAP是更大的 但是如果你还是在Language Model的Scope里讨论问题 我觉得问题不大 [02:02:27] 你觉得它最后会是一个多大的模型呢 还是说它是无限大 无限网上叠上去 我觉得这个事情肯定是不可能的 因为首先就是 预讯量的数据量 包括说我们已知的 人类 我觉得从说圈来讲 人类互联网上能集结到的所有的信息量 这个是有限的 这个事情是不可能无限提升的 基于这个case来讲 从数据理论上 你想吃掉一个足够大的数据量 你模型不可能是无限的 没有必要是无限的 所以说这个能带来一个更宽的棒子 然后这个宽的棒子可能上下会更好 然后更窄的棒子就是在什么情况下 就是我们对于模型 具体在任务上的一个感知 可能会没有那么充分 然后这个是一个更窄的一个棒子 或者说如果未来有更难的任务 它必须有更大的size 那可能就会推华的更宽在那个棒子里 对 但是我无论如何不可能是无限的 你觉得它会最后有多大 这个模型 现在是6到2.8 以后呢 必然的肯定还是有更大的 所以如果想完全迈是必然的 肯定还是可以再大一些 [02:03:27] 但是更大的话 这个就不确定了 你现在为什么去探索世界模型了 我觉得这个主要是一个personal的一个东西 因为我觉得这个大模型不存在太大的 太大的改良空间改进空间 没有大的突破的话 就没有大的这个credit 所以说我觉得对于个人来说 可能从职业上来讲 不是一个能做出太大的一个贡献的一个领域 我是一个唯有底范的问题 这玩意的问题更大 但我觉得至少是一个新的东西 请不吝点赞 订阅 转发 打赏支持明镜与点点栏目