训练一个万亿参数的AI模型之前,你得先算对一个数字

你可能没想过这样一个问题:训练一个几百亿参数的大模型,最贵的部分到底是什么?
不是买显卡,不是标注数据,而是试错。
想找到一个合适的学习率,工程师往往要把同一个模型用不同的学习率各跑一遍,看哪个效果最好。这个过程如果放在几亿参数的小模型上,代价还能承受。可一旦模型规模冲到千亿参数、训练数据冲到十万亿token这个量级,每一次"试一下"都是几百万美元的电费和几周的等待。你不可能像调收音机旋钮一样,拧一下试试,不行再拧一下。
这就是Kakao公司(对,就是那家做韩国国民聊天软件KakaoTalk的公司)和Upstage AI的研究者们在2026年这篇论文里要解决的问题。他们最后训出了一个总参数155B(1550亿)、激活参数17B(170亿)的混合专家大模型,而且是从零开始训练了10万亿token。更值得说道的是,他们几乎没有在这个巨大的目标模型上做任何学习率试错,却让整个训练过程稳如老狗,没有一次损失爆炸(loss spike)。
这是怎么做到的?
先搞清楚,为什么MoE模型的学习率问题特别棘手
这里要先讲清楚一个背景。
混合专家模型(Mixture-of-Experts,简称MoE):一种模型架构,把原本一个大而全的神经网络拆成很多个"专家"子网络,每次处理一个词的时候,只激活其中一小部分专家,而不是全部启动。
这么设计的好处很直白。假设你有一个全科医生和一个专家门诊系统,全科医生什么病都得懂一点,脑子里塞满了各种知识,看一个感冒也要动用全部脑力。专家门诊系统里可能有心内科、皮肤科、骨科几十个专家,但你挂号看感冒的时候只需要呼叫内科医生出诊,其他科室的专家全部闲置。这样一来,整个医院(模型)的知识储备(总参数量)可以做得非常庞大,但看一次病(推理一次)实际消耗的资源却很小。DeepSeek-V3、Qwen3、Kimi-K2.5这些当红的开源大模型,都在用这套思路。
问题来了。专家门诊系统比全科诊所多了一件事:分诊。你得决定这个病人该挂哪个科,这个决策过程本身也需要参数去学习,也就是所谓的"路由"机制。路由怎么设计、专家之间的负载怎么平衡,这些都是MoE模型独有的、密集模型不需要操心的超参数。超参数一多,需要搜索的空间就指数级膨胀,调参的难度和成本也跟着往上翻。
而在所有超参数里,学习率是那个最关键、也最难伺候的一个。学习率定高了,模型训练会震荡甚至直接崩掉;定低了,模型收敛得慢,浪费算力和时间。更麻烦的是,最优学习率这个数字,不是一个放之四海而皆准的常数,它会随着模型变大、训练数据变多而漂移。你在小模型上试出来的"最佳学习率",直接套用到大模型上,大概率是错的。
这就是论文标题里"Compute-Efficient"(计算高效)几个字背后真正的焦虑:模型越大,试错的代价越大,但传统的调参方法恰恰要求你在目标规模上反复试错。这是一个死循环。
μP:让小模型帮大模型探路
要打破这个死循环,研究者们借用了一个已经有些年头的思路,叫做Maximal Update Parameterization,简称μP(读作mu-P)。
μP(Maximal Update Parameterization):一种模型参数初始化和学习率设置的数学框架,它的效果是让不同宽度(比如隐藏层维度)的模型,共享同一个最优学习率。换句话说,你在一个很小的模型上找到的最佳学习率,理论上可以直接"零成本"地搬到一个宽得多的模型上使用,不需要重新搜索。
这套方法最早是给标准的密集模型设计的。它的数学原理这里不细说,但可以类比成这样一件事:假设你在设计一栋房子,房间越大,家具的摆放比例、灯光的强度、空调的功率都得按比例调整,否则房间会显得空旷或者闷热。μP做的事情,本质上是给"模型变宽"这件事定义了一套"按比例缩放"的规则,包括参数怎么初始化、学习率怎么根据网络的宽度打折扣。只要这套比例关系找对了,那么无论房子造多大,最舒适的那个"空调功率比例"都是同一个数字。
论文的第一个核心贡献,就是把这套μP规则,重新推导并落地到了MoE架构上,而且加了两个此前研究没怎么碰过的变量:多头潜在注意力(MLA)和Muon优化器。
MLA(Multi-head Latent Attention,多头潜在注意力):DeepSeek系列模型提出的一种注意力机制改进,核心是把原本占用大量显存的键值缓存(KV Cache)压缩到一个低维的"潜在空间"里,从而大幅降低推理时的显存开销,同时不怎么牺牲效果。
Muon优化器:一种较新的模型优化器,相比传统的AdamW,它在收敛速度上表现出明显优势,训练同样的效果所需要的步数更少。
研究者们做的实验很直接。他们先搭了一个很小的MoE基准模型,总参数0.6B(6亿)、激活参数0.3B(3亿),隐藏维度只有256,专家总数16个。然后把这个模型的宽度分别放大2倍、4倍、8倍,一路放到总参数30.7B、激活参数3.6B的规模,同时按比例增加专家总数(从16个一路扩到128个)和注意力头数。每个规模都跑1.3B token,扫描一批候选学习率,看哪个学习率能把训练损失压得最低。
如果不用μP,会发生什么?
论文里的图3给出了答案,而且答案相当扎眼。在标准参数化(论文里叫SP,也就是没有用μP这套缩放规则的普通设置)下,最优学习率会随着模型变宽而系统性地漂移。基础模型上表现最好的学习率,放到8倍宽的模型上就完全不是最优的了,损失曲线的最低点明明白白地偏移了位置。这意味着,如果没有μP,你在小模型上做的所有调参工作,对大模型来说基本白费。
而用了μP之后,四个不同宽度的模型(从0.6B一路到30.7B),损失曲线的最低点几乎重合在同一个学习率上。基础代理模型(论文里管这个最小的模型叫base proxy,也就是用来打前站探路的那个模型)找到的最优学习率,直接原封不动地用在8倍宽的模型上,依然是最优的。研究者们同时验证了密集模型(没有MoE结构)在同样条件下的表现,结论是一致的:μP在结合了MLA和Muon优化器的设定下依然成立。
这里有一个值得多说一句的设计细节。MoE模型在扩大规模时,通常有两条路可以走:一条是把每个专家做得更"宽",另一条是保持每个专家的大小不变,但增加专家的总数量(也就是提高"稀疏度")。论文选择的是第二条路,固定每个token激活的专家数量和每个专家内部的中间维度,只增加专家总数和主干网络的宽度。这么选是有现实考量的:如果一味把模型做宽,推理成本会跟着线性增长;但如果只增加专家总数、保持激活数不变,模型的"知识容量"能上去,可每次推理实际调用的参数量却几乎不变。这就像一家连锁餐厅决定扩张,与其把每家店都装修得更大更豪华(成本线性上升),不如多开几家分店、但每家店的服务员数量不变(顾客体验没变差,运营成本却没有跟着门店数量等比例暴涨)。
论文还特别提到一个工程上的取舍:故意在低稀疏度(专家总数少)的代理模型上做搜索,再把结果迁移到高稀疏度(专家总数多)的目标模型上。原因是专家总数太多的小模型,在实际硬件上跑起来效率很低,矩阵运算的"算术强度"不够,GPU很多时候在空转。用低稀疏度探路,既保证了搜索阶段的硬件效率,又不妨碍最终瞄准的是一个高稀疏度的目标模型。
学习率不只是要跨模型规模迁移,还得跨时间迁移
μP解决的是"模型变宽"这个维度上的迁移问题。但还有另一个更麻烦的维度没解决,训练的token数量。
一个模型训练10亿token和训练10万亿token,最优学习率是不一样的。前面提到的宽度迁移,只能保证"在同样的训练时长下,小模型和大模型共享最优学习率",但没法回答"训练时间拉长一万倍之后,这个最优学习率该怎么变"。
这就是论文的第二个核心贡献要解决的问题:如何用短时间、小规模的训练结果,预测长达10万亿token训练的最优学习率。
这里有个非常现实的困难。正常大模型训练用的学习率调度策略叫WSD(Warmup-Stable-Decay,预热-稳定-衰减),前期慢慢把学习率拉高,中期维持稳定,快训练完时再慢慢降下来。
WSD调度器(Warmup-Stable-Decay):一种学习率随训练进程变化的策略,分三个阶段:先"预热",学习率从很小的值逐渐爬升;然后进入"稳定"期,学习率保持不变,占据训练的大部分时间;最后进入"衰减"期,学习率逐渐降低到接近零,帮助模型收敛到更精细的状态。
问题是,你要想知道某个学习率训练到某个token数时效果最好,理论上得让它完整走完衰减阶段才能看到真实效果。但衰减阶段一旦开始,这次训练就相当于"用完了",你没法从半路上拿出一个中间结果当作"如果训练在这里提前结束会怎样"的答案,因为提前衰减会给损失估计带来偏差。这就好比你想知道一场马拉松跑到第30公里、第35公里、第40公里分别应该用什么配速最优,但真实的比赛只能冲刺一次终点,你没法把同一场比赛拆成好几场分别冲刺。
研究者们的解法很巧妙:干脆不做衰减,让代理模型一直保持在"稳定"阶段跑,然后对模型权重做指数移动平均(EMA)。
指数移动平均(EMA,Exponential Moving Average):一种给模型权重"做平滑"的技术。它不是直接使用某一步训练完的原始权重,而是把当前权重和过去若干步的权重加权平均,让参数变化更平滑、更少受到某一步训练波动的干扰。论文里设置的平滑系数α=0.6,意味着最近的更新权重更大,同时保留一部分历史信息。
这个操作巧妙在哪里?它相当于用"平滑"去模拟"衰减"的效果,论文里引用了此前的研究,证明在大批量训练的场景下,恒定学习率配合EMA的效果,和标准的余弦衰减训练效果相当。这样一来,同一次训练跑下来,你可以每隔一段token数就"抽取"一个EMA平滑后的检查点,相当于凭空得到了很多个"如果训练在这里提前结束"的高质量近似答案,而不需要真的把训练拆成很多次独立跑衰减阶段的实验。
论文里实际的做法是,每2B token更新一次EMA权重,每10B token抽取一个检查点用于分析。有了这些检查点,接下来要做的事情就很直白:在每个token规模下,用一批候选学习率分别跑出损失值,然后拟合一条开口向上的抛物线(学习率的对数值和损失之间的二次函数关系),抛物线最低点对应的学习率,就是这个token规模下的"最优学习率"。
有了不同token规模下各自的最优学习率之后,研究者们做了一件很直接的事:把这些点在对数-对数坐标系里画出来,拟合一条直线。这条直线就是从短期训练结果外推到长期训练结果的"桥梁"。
论文里给出的实证结果相当亮眼。他们用一个总参数10.8B、激活参数3.3B的代理模型(大概是最终目标模型四分之一宽度)训练了大约500B token,每10B token估计一次最优学习率,拿到手的数据点做线性回归,拟合优度R?高达0.95。这意味着,这条直线几乎完美地穿过了所有观测点,用它去外推10万亿token时的最优学习率3.85×10??,可信度相当高。
如果这套推断是错的会怎样?论文附录里专门做了一次"留一验证",拿255B到350B token区间的11个数据点去拟合直线,然后用这条线去预测462B到502B token区间的最优学习率,再和这些token规模下独立算出来的真实最优学习率做对比。结果显示,预测值和真实值之间的平均误差只有大约4.4%,比此前同类研究报告的外推误差要小得多。这相当于告诉你,这条外推直线不是碰巧画对了一次,而是在没见过的区间里依然靠谱。
这里要多提一句论文里特意撇清的一个变量,批量大小(batch size)。你可能会问,学习率之外,批量大小不也是个重要的超参数吗?为什么这篇论文不管它?研究者们的解释是,批量大小这个东西比较特殊,它不只是一个纯粹的建模选择,还牵扯到硬件吞吐效率,工程师往往会根据显卡配置直接调整批量大小来榨干GPU性能。而且学术界对"批量大小该怎么随规模变化"这件事本身就没有共识,有的研究认为它该跟着算力走,有的认为该跟着token预算走,互相打架。与其卷入这场争论,论文选择固定批量大小,专心把学习率这一个变量的迁移规律做扎实。这是个务实的取舍,少管一个变量,才能把另一个变量的结论做得更稳。
两步走:从"二维地毯式搜索"到"一维外推"
把前面两块拼起来,就是论文标题里"两步"框架的完整样子。
传统的做法是什么样?如果你既不知道模型该多宽最合适,又不知道学习率该随token数怎么变,最朴素的办法就是在"模型规模"和"token规模"这两个维度上同时做地毯式搜索,横着扫一遍宽度,竖着扫一遍训练时长,交叉点全部试一遍,才能拼凑出目标规模下大概率靠谱的超参数组合。这就是论文图1里画的"二维联合缩放",代价是两个维度的搜索空间是相乘的关系,规模越大,格子数越多,成本爆炸式增长。
论文提出的两步框架,本质上是把这两个维度"解耦"了。第一步靠μP解决模型宽度这个维度,不需要在不同宽度上分别搜索学习率,因为一旦μP成立,宽度维度上的搜索就直接被"免掉"了。第二步靠token维度的线性外推规律解决训练时长这个维度,只需要几个小规模代理模型的短程训练,就能预测极长训练下的最优学习率。原本的二维网格搜索,被拆解成了"一次性验证μP成立"加上"一维方向上的外推",成本量级完全不同。
论文里给出了具体的算力对比数字,相当直观。他们做了5次代理规模的训练,总计消耗64.8 ZFLOPs(十万亿亿次浮点运算)。如果换成传统的模型规模网格搜索,把宽度扩到1.5倍和2倍分别再搜一遍,需要额外多花240.3 ZFLOPs的算力,是原本代理训练成本的将近4倍。而最终真正拿去训练155B总参数、17B激活参数目标模型的总算力,大约是这几次代理实验总和的98倍。换句话说,如果按传统方法在目标规模附近做哪怕一次完整的二维网格搜索,那笔额外开销可能就相当于再造一次目标模型的训练成本,这在工程上是完全无法承受的。
真刀真枪:把方法用在自己的大模型上
理论说得再漂亮,最后还是要看这套方法能不能扛住真实世界的压力测试。
研究者们把这套两步框架,用在了自己从零开始训练的基础大模型上,总参数155B,激活参数17B,训练目标是10万亿token。他们先用一个总参数10.8B、激活参数3.3B的代理模型(大概是目标模型四分之一宽度)训练了约500B token,通过前面讲的EMA检查点方法估计不同token规模下的最优学习率,再线性外推到10万亿token,得到最终采用的学习率3.85×10??。
这个数字有没有经过任何在目标规模上的直接验证?论文很坦诚地承认没有,在155B这个规模上做完整的学习率扫描,需要的算力大到不现实。但间接证据摆在那里。整个10万亿token的训练损失曲线走得异常平稳,论文里的图6显示损失从大约1.75一路平滑下降到1.3左右,中间没有出现任何明显的损失飙升(loss spike),这在大模型训练圈子里是相当难得的成绩,很多大模型训练日志里都能看到损失突然爆表又慢慢恢复的"毛刺",那往往意味着学习率或者其他超参数没调对。
评测结果同样能说明问题。论文里用四个方向的基准测试考察了这个模型第一阶段训练完成后的水平:英语通用知识(MMLU、MMLU-Pro、BBH)、多语言理解(覆盖韩语、日语、越南语、中文的Global-MMLU)、数学(MATH、GSM8K)和代码(MBPP、HumanEval)。论文还把自己的模型和几个同等激活参数规模的开源MoE模型放在一起比较,包括dots.llm1、GLM-4.5-Air、Hunyuan-A13B和DeepSeek-V4-Flash,用统一的评测框架和"6ND"算力估算方法(N是激活参数量,D是训练token数)做横向对比。结果显示,他们的模型落在了"算力效率前沿"(Pareto frontier)上,用比dots.llm1和GLM-4.5-Air更低或相当的估算训练算力,拿到了更高的MMLU-Pro准确率。
值得一提的是,这个数据集在训练过程中还调整过配比。第一阶段起初是45%英语、12.5%数学与理工科、27.5%代码、15%多语言,训练到6万亿token的节点上,配比调整为22.5%英语、27.5%数学与理工科、25%代码、25%多语言,加大了此前占比偏低的领域的比重。这也从侧面说明,学习率外推的稳健性并不依赖于数据分布一成不变,即便训练中途换了"菜谱",损失曲线依然没有失控。
意外收获:专家路由在换数据集时会发生什么
论文附录里还藏着一个挺有意思的"副产品"发现,值得单独说一说。
完成第一阶段的大规模预训练之后,研究者们又用一个更小、质量更高的数据集做了第二阶段训练(这是大模型训练圈子里常见的做法,先在海量通用数据上打底,再用精挑细选的数据"抛光")。问题来了:换数据集的时候,MoE模型里负责"分诊"的专家路由机制会不会出问题?
MoE模型为了防止某些专家被闲置、某些专家被过度使用(这种失衡叫做负载不均衡),通常会引入一个可学习的偏置项(expert bias),持续跟踪每个专家最近被调用的频率,动态调整路由倾向,让整体负载趋于平衡。
专家偏置(expert bias):MoE模型里用来动态平衡各专家负载的一个可调节参数,如果某个专家最近被过度使用,偏置就会调低它被选中的概率,反之则调高,从而让"分诊"结果尽量均匀分布到所有专家身上。
研究者们试了三种设定:一种是延续第一阶段训练结束时的偏置值,并在第二阶段继续更新;一种是延续第一阶段的偏置值,但在第二阶段冻结不再更新;还有一种是干脆把偏置清零,也不更新。他们用一个叫MaxVio的指标衡量专家负载失衡的程度,数值越大,说明某些专家被过度使用的情况越严重。
结果显示,继续更新偏置的设定,负载最均衡;而如果冻结偏置不更新,用零初始化反而比延续第一阶段的偏置值更均衡。这暗示了一件事:第一阶段数据分布下学出来的"分诊经验",未必适合第二阶段换了口味的数据。这就像一个原本熟悉快餐店客流规律的调度员,突然被调去管理一家高端餐厅,他脑子里那套"周五晚上汉堡窗口最忙"的经验,在新环境里可能反而添乱。
但更让人意外的是,尽管三种设定下专家负载的均衡程度差异不小,最终的训练损失曲线却几乎完全重合。这说明专家偏置这个东西对模型最终效果的影响,比想象中要小得多,即便路由没那么均衡,也不代表模型会"学崩"。
研究者们后来又做了一层更细致的分析,去看专家的路由行为到底有没有"专业化"倾向,也就是说,同一个专家是不是更倾向于处理某一类特定内容(比如代码或者某种语言),而不是完全随机分诊。他们用三个指标交叉验证:整体负载不均衡程度(MaxVio)、专家选择和数据领域之间的"归一化互信息"(数值越高说明看专家选择能猜出多少领域信息)、以及不同领域路由分布之间的"詹森-香农散度"(数值越高说明不同领域被路由到的专家组合差异越大)。
结果相当有层次感。整体负载均衡程度在模型深度方向上比较稳定,只在浅到中层有局部波动;但专业化程度却随着层数加深持续上升,在最后几层的MoE层达到峰值。代码类内容在浅层就明显偏离"平均路由模式",而多语言内容一直到最后几层才突然出现强烈的专业化倾向。这告诉我们一件挺反直觉的事:一个MoE模型可以同时做到"整体负载均衡"和"内部高度专业化",这两者并不矛盾。均衡说的是每个专家被调用的总次数差不多,专业化说的是不同类型的内容会被系统性地导向不同的专家组合。就像一家管理良好的连锁餐厅,每家分店的营业额可能差不多(负载均衡),但靠近写字楼的分店主打快餐外卖,靠近学校的分店主打亲子套餐(内容专业化),两件事完全可以并存。
这套方法留下的空白
论文在结尾也很坦率地列出了几个还没解决的问题。
其一,目前的框架里,所有专家共享同一个学习率。但由于路由机制的"择优选择"(top-k routing)特性,不同专家实际接收到的token数量本来就参差不齐,有的专家很忙,有的很闲。这意味着不同专家实际感受到的"有效批量大小"和梯度噪声水平可能天差地别,理论上讲,每个专家或许应该配一个自己的学习率。但要把这个想法落地,得先搞清楚训练过程中路由模式是怎么演变的、数据配比又是怎么影响每个专家实际拿到的样本量的,工程复杂度不低,论文把这个方向留给了未来。
其二,论文里"扩大模型规模"这件事,本质上是把"变宽"和"变稀疏(专家数增多)"这两个维度绑在一起同时缩放的,并没有单独验证"只增加专家总数、不改变宽度"这条路径下μP是否依然成立。换句话说,稀疏度这个维度本身的迁移规律,还没有被彻底和宽度维度剥离开来做过干净的对照实验。
写在后面
读完这篇论文,最让我意外的其实是那个EMA代替衰减的设计。这是个挺聪明的绕开硬约束的办法,原本"必须完整跑完一次衰减才能拿到一个可信数据点"这条硬性限制,被EMA的平滑效果给巧妙地软化了,一次训练能凭空多出十几个近似的"提前结束点"。这种思路在其他需要反复模拟"如果提前结束会怎样"的场景里,应该也有借鉴价值,不只是学习率调参,任何需要用"截断的过程"去推断"完整的结果"的地方,或许都值得想想能不能用类似的平滑手法。
附录里那个专家路由的发现也挺让人意外。均衡负载和专业化路由居然可以互不干扰地同时存在,这多少打破了我原本以为的一种直觉,总觉得"专家越专业化"应该意味着"路由越不均衡"。但深层网络里发生的事情提醒你,这两件事其实衡量的是完全不同的维度,一个是"用得勤不勤",一个是"用得准不准"。
论文里没细说的一点是,如果代理模型和目标模型之间的架构差异更大(比如不只是宽度不同,连专家的内部结构、路由函数的设计都变了),这套外推方法还能不能这么稳。这大概是留给后来者继续验证的一道题。
Q&A
Q1:μP(Maximal Update Parameterization)到底解决了什么问题?
A:μP让不同宽度的模型能共享同一个最优学习率,你在小模型上找到的学习率,可以直接搬到宽得多的大模型上使用,不用重新搜索,大幅降低了调参成本。
Q2:这篇论文里的两步超参数迁移框架具体指什么?
A:第一步用μP解决模型宽度的迁移问题,第二步用小规模代理模型的短期训练结果,通过线性回归外推出长时间训练(比如10万亿token)下的最优学习率,把原本的二维网格搜索简化成一维外推。
Q3:这套方法最终应用在什么样的模型上,效果如何?
A:应用在一个总参数155B、激活参数17B的MoE基础模型上,训练了10万亿token,全程损失曲线平稳无爆炸,且在MMLU-Pro等评测上处于同规模开源模型的算力效率前沿。