微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 一个模型,循环四次:Elastic Latent Recurrence如何让AI模型既快又聪明

一个模型,循环四次:Elastic Latent Recurrence如何让AI模型既快又聪明

2026-11-11 14:48
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-11-11 14:48 • 科技行者

你有没有遇到过这样的纠结:买手机的时候,到底该买性能强但贵的旗舰版,还是买够用就好的标准版?

大模型的世界里,也有一个一模一样的纠结。你要么部署一个小模型,响应快但笨一点;要么部署一个大模型,聪明但慢且贵。鱼和熊掌,好像天生不可兼得。

但有一类模型一直想打破这个魔咒,它们叫循环语言模型,思路是:别造两个模型,造一个会"反复琢磨"的模型。遇到简单问题,想一遍就给答案;遇到难题,多想几遍再回答。同一个模型,脑子转的圈数不同,输出质量也不同。

这个想法听起来很美好,对吧?但这篇来自NVIDIA的论文一开篇就戳破了一个大家心照不宣的尴尬事实:这类模型如果只思考一轮,表现通常惨不忍睹,明显比不上一个同样大小、但老老实实只有一层结构的普通模型。

以Huginn模型为例,它设计成平均要循环32次才能发挥实力,可如果你偷懒只让它转一圈,它在ARC-Easy这个测试上的得分是34.9分,而一个结构相近的普通模型能拿到46.4分,整整差了11.5分,这是在砸了800亿级别token训练之后的结果。另一个模型Parcae也是类似情况,循环一次时成绩比普通模型还差,循环八次才反超。

研究者们给这个现象起了个很形象的名字,叫"单循环税"(one-loop tax)。意思是,只要你用这种循环模型,哪怕你此刻只想让它转一圈省点算力,你也得先为它交一笔"智商税"。既然如此,那还不如直接去用一个专门训练好的、不循环的普通模型,反而更划算。

这就是本文要解决的核心问题:能不能造一个循环模型,让它循环一次时和普通模型打平,循环越多次,就越聪明,不用交那笔税?

答案是能,论文给出的方案叫做Elastic Latent Recurrence,简称ELR,一种弹性潜在循环的训练配方。

为什么循环一次会那么差

要理解ELR怎么解决问题,得先搞清楚循环模型的"先天缺陷"出在哪。

传统的循环语言模型把网络分成三部分:输入块、循环块、输出块。

输入块*:负责把原始文字转换成模型能处理的内部表示,相当于"预处理"

循环块*:模型的核心部分,会被反复执行多次,每次输出都会影响下一次的计算

输出块*:把循环后的结果转换成最终的文字输出

循环块每多转一圈,就相当于给模型多加了一层"虚拟的深度"。打个比方,如果循环块本身有24层,那转两圈相当于凭空多出24层楼,模型变得更"深"了,理论上应该更聪明。

但问题出在循环块内部是怎么更新状态的。多数现有模型的做法很粗暴:每循环一次,就直接用新算出来的结果,把旧状态整个替换掉。这就好比你每次重新审视一份方案时,不是在原方案基础上修修补补,而是直接把整份方案扔了重写一遍。

如果只循环一次,这种"推倒重来"式的更新方式还没来得及体现出优势,模型的参数和行为模式就已经被这种训练方式"带偏"了,导致它在循环一次时的表现远不如那些从一开始就被设计成"只跑一次"的普通模型。

ELR的三个关键设计

ELR找到了三个具体的改动点,解决了"单循环税"的问题。

第一招:带刹车的状态更新

ELR不再是粗暴地"推倒重来",而是设计了一种叫做自适应增量更新(adaptive-delta update)的机制。

简单说,每次循环产生一个新的候选状态后,模型不会直接采用它,而是学习一个"步长",决定要往新状态挪动多远。这个步长是逐词、逐通道单独学出来的,意味着模型可以对不同的信息采取不同的谨慎程度,有些地方大步迈进,有些地方小心翼翼。

这就像你在修改一篇文章的时候,不是把全文删了重写,而是读到某句觉得别扭的地方,斟酌着改几个词,改多还是改少,取决于这句话到底有多大问题。如果不这样做,而是像很多模型那样每次都整体重写,那么第一次"重写"产生的版本,可能比你原本没动过的稿子还差,因为修改机制根本没有机会学会"该改多少"这件事,它只学会了"全部推翻"。

实验证明,这种有刹车、有步长控制的更新方式,是唯一一种能在循环一次时打平普通模型的更新规则,而且在每一个循环次数上,表现都是最好的。

第二招:训练时把不同循环次数"混"在一起算

第二个关键问题是训练策略。

如果你训练循环模型的方式是,每一步训练都随机选一个循环次数,比如这一步用2次,下一步用5次,表面上看起来模型见过了各种循环深度,但论文发现这样依然不能保证模型循环一次时表现够好,哪怕你让循环一次的情况出现的概率高达三分之一。

论文采用的做法叫做混合深度训练中的单循环排名覆盖(one-loop rank overrides)。

训练时会用到很多台机器并行计算(这些机器在论文里叫作数据并行的"ranks")。ELR做的事情是,强制固定比例的机器,在每一步训练里,始终只循环一次,而不管其他机器这一步选了几次循环。这样一来,循环一次的梯度和循环多次的梯度,会被放进同一次参数更新里,一起被平均、一起生效。

这个设计的巧妙之处在于,它让"学会循环一次该怎么表现"和"学会循环多次该怎么表现"这两件事,不是分开发生在不同的训练步骤里,而是被强制绑定在同一次参数更新中共同优化。

想象一个班级要准备期末考试,考试分两种难度。如果老师每次只布置一种难度的作业,今天全班做简单题,明天全班做难题,那么学生做简单题的手感和做难题的手感会分别独立进步,彼此很难相互促进。但如果老师每次布置作业,都要求一部分学生做简单题,一部分学生做难题,然后两边的答案一起批改、一起讲评,学生就会在同一轮反馈里,同时锚定"简单题该怎么答才对"和"难题多花点力气该怎么答才对"这两套标准,不会出现顾此失彼的情况。

实验数据很直观:不加这种覆盖机制,循环一次的损失比普通基准模型高出0.0225;而当固定15%的机器只循环一次(使得循环一次出现的概率约为三分之一)时,循环一次的表现终于反超了基准模型。

第三招:告诉模型"你现在转到第几圈了,总共要转几圈"

第三个改进是给每一次循环加上明确的"身份标识",论文称之为循环条件调制(loop-conditioned modulation)。

没有这个设计的时候,循环块在每一次循环里执行的是完全相同的函数,模型压根不知道自己是第几次循环,也不知道这次任务总共要循环几次。论文的做法是,把"当前是第几圈"和"总共打算循环几圈"这两个信息编码成一个向量,注入到每一层的计算里,让每一次循环的行为可以根据这些信息做出微调。

这就好比一个厨师炒菜,如果完全不知道客人点的是快餐还是精致料理,他每道工序都只能按同一套标准流程走,无法根据场合调整火候和用料精细度。但如果厨师事先知道"这是第几道工序,总共要做几道工序才能上桌",他就能在不同阶段调整策略,第一步下重料打底,后面几步精细调味收尾,整体效果会比一套流程走到底要好得多。

这个设计巧妙的地方还在于初始化方式:所有负责调制的参数一开始全部设成零。这意味着刚接入这套机制的那一刻,模型的行为和没加这套机制之前完全一样,数学上可以严格证明,初始状态下模型的输出分毫不差地等同于原来那个循环一次的模型。之后随着训练推进,这些参数才慢慢学会往更合适的方向偏移。

这个"零初始化"的设计思路和另一个关键省钱技巧联系在了一起。

延后开练:省下大半训练成本

循环模型有个显而易见的代价:如果每次训练都要循环好几遍,那训练时的计算量自然也要跟着翻倍。

论文算了一笔账:如果从头到尾都用混合深度训练,总训练计算量大概是普通模型的1.79倍。这笔账不便宜。

于是论文想出一个办法:前四分之三的训练时间,老老实实只循环一次训练,等训练快结束的最后四分之一,才切换到混合深度模式,并且正是在这个切换节点,把前面说的循环条件调制功能接入进来,初始权重全部为零。

这就好比你想培养一个既能快速处理简单任务、又能深度钻研复杂问题的员工。与其让他从入职第一天就同时兼顾两种工作模式搞得手忙脚乱,不如让他先踏踏实实把基本功练扎实,等基本功足够稳固了,再引入"有时候需要你多想几层"的新要求,而且一开始这个新要求的权重设成零,相当于告诉他"新规矩刚上线,先别改变你已经养成的习惯,等你慢慢适应了再说"。如果不这样分阶段,一上来就同时塞给他两套要求,很可能两头都学不扎实。

效果如何?以4B参数规模的模型为例,这种"延后混合"的训练方式,估计只比普通训练多花16%的计算量,而不是62%。更惊喜的是,这种延后训练出来的模型,最终表现甚至比从头到尾混合训练的模型还要好。

专家路由的复用:省去重复判断的功夫

对于用了混合专家结构(MoE)的大模型,混合专家模型*:一种模型结构,不是每次计算都动用全部参数,而是有一个"路由器"决定每个词该交给哪几个"专家"子网络处理,这样能在不增加太多计算量的前提下大幅扩充模型容量

循环模型还面临一个额外的开销:每循环一次,路由器都要重新给每个词判断一次该交给哪些专家处理。论文发现,虽然在循环第一次和第四次之间,整体上专家被选中的频率几乎没变(相似度高达0.978),但具体到每一个词,它在第四次循环时保留第一次所选专家的比例只有53%。

论文提出的解决方案叫跨循环路由复用(cross-loop route replay):只在第一次循环时让路由器做判断,后面几次循环直接沿用第一次的判断结果,不用每次都重新算一遍该交给哪些专家。

这就像一个餐厅点餐系统,如果每上一道菜都要重新问一遍顾客"您确定要这道菜吗",流程会被拖得很慢。既然顾客点餐那一刻的意愿已经代表了大部分信息,后续上菜直接按最初的点单执行就够了,没必要每道菜都重新确认一遍。当然,如果顾客是那种会在用餐过程中突然改主意的人,这种做法会损失一点灵活性,但换来的是整个流程快得多。

实际效果是,这样做让混合深度训练阶段的更新时间减少了11.7%,而模型在十项任务上的平均准确率几乎没有变化。

推理时的省钱办法:只留最后一圈的记忆

模型在实际对话生成时,还有一个内存消耗问题:传统做法是每循环一次,就要给每一层的注意力机制单独保留一份"记忆"(技术上叫KV缓存),循环次数越多,占用的内存也越大。

注意力KV缓存*:Transformer类模型在生成文字时,需要记住之前所有词对应的键值信息,用于计算当前词和历史词之间的关联程度,这份记忆会随着生成长度和模型层数增长而增长

论文提出了最后一圈KV缓存(last-loop KV caching)的做法:不管循环几次,始终只保留一份缓存,每次循环都直接覆盖掉上一次的内容,只留最后一次循环的记忆。

这就像你反复修改一份会议纪要,如果每次修改都单独存一个版本文件,文件夹很快就会被塞满。但如果你知道最终提交的只有最新版本,那不如每次修改都直接覆盖旧文件,只保留最新的那一份,这样省下的存储空间非常可观。如果非要保留每一轮修改的痕迹,空间占用会随着修改次数线性增长,但多数时候你并不需要那些中间版本。

效果验证:Koi-4B模型,循环一次打平同行,循环四次大幅超车

说了这么多设计思路,实际效果到底怎么样?

论文在两个规模的模型上做了验证:一个是40亿参数的稠密模型GDP-Hybrid-4B,训练了1万亿token;另一个是300亿总参数、30亿激活参数的混合专家模型GDP-Hybrid-30B-A3B,训练了3000亿token。

在GDP-Hybrid-4B上,循环一次时,ELR模型的十项任务平均分是65.13分,普通基准模型是65.65分,只差0.52分,几乎可以忽略不计。而循环四次之后,ELR模型涨到了72.38分,比循环一次时整整提升了7.25分。

在GDP-Hybrid-30B-A3B上,循环一次时ELR反而以66.08分略微超过基准模型的65.04分,循环四次后进一步涨到70.83到70.90分左右(取决于是否用了路由复用技术),提升了4.75分左右。

有意思的是,提升并不是均匀分布在每一次循环上的。大部分收益发生在第一次额外循环,也就是从1次变成2次的时候。GDP-Hybrid-4B这个模型,光是循环两次和三次就分别拿到了全部提升的79%和96%,后面循环第四次带来的边际收益越来越小。这背后的原因其实也好理解,训练过程中,循环次数越深的那几次,出现在训练样本里的概率本来就越低,模型自然没法把那几圈的功力打磨得和前几圈一样扎实。

论文还把这套完整配方应用到了一个真正经过后训练、面向实际使用场景的模型上,叫做Koi-4B。这个模型在Artificial Analysis Intelligence Index(一个综合衡量模型智能水平的评测指标体系)上的表现相当亮眼:循环一次时估分18分,和同样是4B参数规模的Qwen3.5-4B打平;循环两次跳到26分,已经超过了9B参数的Qwen3.5-9B;循环四次达到29分,逼近参数量是它9倍左右的Qwen3.6-35B-A3B模型。

更妙的是,循环次数增加之后,模型给出的回答反而变短了。循环四次相比循环一次,平均输出的token数量减少了32.7%。这说明模型学会了用更深的"内部思考"去替代那些冗长的、写在外面的思维链文字,想得更深,但说得更少更准。

写在后面

读这篇论文的过程中,最触动我的其实不是ELR本身的技术细节,而是论文开篇提出的那个问题的框架方式。它没有去问"循环模型能不能比普通模型更强",而是换了个角度问"循环模型能不能至少不比普通模型差"。这是两个完全不同难度的问题,前者是在挑战上限,后者是在守住下限,而这篇论文选择先把下限的问题彻底解决干净。

这种思路其实挺值得玩味的。很多技术创新急于证明自己"更强",却忽略了一个更朴素的前提:如果连"不比现有方案差"这件事都做不到,那"更强"的承诺就缺了地基。论文里那句"一个模型如果要为循环交税,那还不如另外单独训练一个不循环的模型",点破的正是这个朴素的道理:弹性和灵活性,如果是以牺牲最基础场景的表现为代价换来的,那这种灵活性本身就值得怀疑。

还有一个细节让我反复琢磨:零初始化这个技巧,本质上是在给模型的"进化"设置一个安全起点,新功能接入的那一刻,世界和昨天一模一样,之后才慢慢长出新的能力。这种渐进式、可回退的设计思路,其实不只适用于机器学习模型,任何系统的迭代升级,可能都值得参考这种"先保证零风险接入,再慢慢释放新能力"的节奏。

论文最后也坦诚地留了几个没解决的问题,比如为什么收益会在循环两次之后迅速衰减,比如循环条件调制为什么没能完全追平那些针对单一循环次数专门训练的模型。这些留白挺真实的,技术研究很少有一篇论文能把所有问题都关上,往往是解决了一个关键矛盾,又打开了几扇新的门。

一个模型,能不能同时是性价比之王和性能猛兽?这篇论文给出的答案是:至少在"思考几圈"这件事上,鱼和熊掌,好像真的可以兼得。

Q&A

Q1:Elastic Latent Recurrence是什么?

A:Elastic Latent Recurrence(ELR)是NVIDIA团队提出的一种训练循环语言模型的方法,能让同一个模型在只循环一次时达到和普通非循环模型相当的表现,而循环次数越多,模型表现越好,解决了传统循环模型"循环一次时表现明显变差"的问题。

Q2:什么是单循环税,为什么循环模型会有这个问题?

A:单循环税指的是传统循环语言模型只运行一次循环时,表现明显弱于同等规模的普通模型,这是因为这类模型训练时的状态更新机制(通常是直接替换旧状态)没有为单次循环场景做优化,导致想要省算力只跑一圈时反而要付出额外的性能代价。

Q3:Koi-4B模型循环次数增加后速度会变慢很多吗?

A:会变慢一些,但没有想象中多。因为循环次数增加后模型给出的回答反而更短,论文数据显示循环四次时输出token数比循环一次减少了32.7%,一定程度上抵消了每次循环增加的计算耗时。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-