![]()
极简二次模型,还原 LLM 预训练的本质。
作者丨幸丽娟
编辑丨岑 峰
当大模型预训练还在靠一堆“炼丹术”般的启发式规则苦苦调参时,哈佛大学计算机科学系 Gordon McKay 教授 、Kempner 研究所联合主任 Sham Kakade 抛出了一项反直觉的研究:一个简单到离谱的二次模型,就能精准预测大语言模型在动态预训练中的绝大部分优化效果。
他在 ICML 2026 的特邀演讲《How Far Can Quadratics Take Us ? Lessons for LLM Pretraining》中,系统呈现并论证这个二次模型到底有多强大:
从推导任意时间学习的最优策略、精确算出临界批量大小与动态最优学习率,到揭示动量的真实作用边界……所有这些,都可以在这个朴素、清晰的二次框架下完成。
为什么一个如此简单的模型能做到这一切?答案指向了同样朴素的泰勒定理(Taylor's Theorem)。Sham Kakade 直接在真实大规模神经网络的不同 checkpoint 上做泰勒展开,构建出对应的二次模型,然后在这个二次模型上继续训练,把损失轨迹与真实网络逐点对比。
结果惊人:在 LLM 预训练的关键窗口内,两条曲线近乎完全重合。也就是说,泰勒展开中那些被忽略的高阶项,在这个区间里几乎没有任何贡献。这就意味着,真实网络的预训练动态,在关键路径上本身就是近似二次的。
正因如此,这个看似简单的二次模型,才能在任意时间学习、批量大小缩放、动量调优等一系列核心问题上,给出既精准又可验证的预测。它不是去拟合训练数据,而是直接还原了预训练的本质。
以下是 Sham Kakade 在 ICML 2026 大会上发表的演讲精编稿,AI科技评论基于原英文演讲内容进行了不改原意的翻译编辑:
(注:本文包含大量基于真实高维张量、泰勒展开与动力学方程的底层推演,字数超过 10,000 字。建议预留 20 分钟沉浸式阅读,或先行收藏)
01
预训练范式为何不会消亡?
今天我要跟大家聊一聊基础模型训练。现在,大语言模型需要大量的资源来训练,包括算力、资金和时间。坦率地说,我认为大模型预训练(Pretraining)这一范式在短期内不会消亡。
![]()
首先,很大程度上是因为我们拥有的基座模型,对所有下游任务都极其重要。其次,持续学习(Continual Learning)极度困难,而且我确实认为,目前阻力最小的路径就是,当出现新数据时,直接对模型进行重新训练。不过,这个内部循环(Inner Loop)的形态可能会随时间变化,有大量证据指向这一点。
“预训练”是我们构建基础模型的基本范式,我们的核心目标,便是在计算效率、数据利用率以及训练速度上将其推向极致,这就是本次演讲的主题:理解我们用于基础模型训练的一些优化原理。
![]()
我们可能对其中一些非常基础的问题尤其感兴趣:比如如何判定模型训练的最优停止时机?如何确定所需的数据总规模?能否设计出一种无需事先设定停止时间、能够持续训练的方法?如何选取最优的批量大小(Batch Size)?就串行运行时间(Serial Runtime)而言,能将训练速度推向多快?动量(Momentum)如何在大规模分布式训练中发挥作用?
这一系列问题都非常基础,而我将进一步论证,一个极其简单的模型,如何能为我们提供一些相当深刻的洞见和思考。
我们首先着眼于一个特定的简化模型,探索其能力极限,并依次探讨任意时间学习(Anytime Learning)、批量大小缩放(Batch Size Scaling)、动量(Momentum)等问题;随后,我们将转向一些新的研究工作,讨论这些做法为何有效,以及用泰勒定理(Taylor's Theorem)进行验证。
这里的方法论是:与其试图去构建一个复杂的模型,因为当我们分析它并将其与实践对照时,真实的动力学远比这个复杂模型要强得多,那不如我们反过来,尝试在一个可以精确分析的极简模型探索能力极限,然后看看:这个带有强分析的简单模型,是否能给我们带来任何洞见?
02
极简二次模型,蕴含的动态分析哲学
我们首先从一个特定的二次模型(Quadratic Model)开始聊。为什么?因为我们处理的平滑损失函数(Smooth Loss Functions)在局部都是二次的,而优化本质上就是在求解一系列局部二次问题。我们将尝试精确求解一个全局二次模型,并看看这对训练实践有什么启示。
我们的目标不是给出模型的上界,而是真正对正在发生的事情进行近乎精确的分析。这个模型就是线性回归(Linear Regression)——它看起来朴素简单,却具有丰富的学习动态结构,能揭示很多对实践有指导意义的信息。
![]()
模型设定:这是一个在线模型。每个时间步我们观察一个样本 x_t,服从均值为零、协方差矩阵为 H 的正态分布;目标 y_t 由 x_t 的线性函数加上独立噪声构成。我们的目标是最小化超额风险(Excess Risk)——R(w) 。
为此,我们采用平方损失(Square Loss),希望通过最小化 w 来降低损失,w 就是参数估计值与最优估计值在 H 范数(H-norm)下的差值。
在线 SGD 更新规则,计算当前样本下平方损失关于参数 w 的梯度,然后以学习率(Learning Rate)ηt 为步长,沿着负梯度方向更新参数,这就是标准的随机梯度下降(SGD)更新。
我们的目标不仅是运行算法,更是精确理解这个随机过程的完整动力学(Exact Dynamics)。为此,我们需要同时追踪两个关键统计量:均值(Mean)和协方差矩阵(Covariance Matrix)。
![]()
为了理解这里的动态,我们需要掌握该过程的均值以及协方差矩阵的演化。
均值动态:我们对 SGD 更新方程两边同时减去w∗,将更新改写为关于误差的递推形式。代入目标 y_t = x_t^T w + 噪声 后,更新规则呈现为:
w_{t+1} - w* = (I - η x_t x_t^T)(w_t - w*) - η ε_t x_t
其中前面第一项是乘性噪声(Multiplicative Noise),因为误差被乘以了一个随机量 x_t;后面第二项是加性噪声(Additive Noise)。
取期望后,加性噪声消失,乘性噪声简化为 (I - ηH),均值递推为:
E[w_{t+1} - w*] = (I - ηH) E[w_t - w*]
这意味着均值动态与全批量梯度下降完全一致,只要学习率不太大,就会呈现收缩现象。
协方差动态:这里才是 SGD 与梯度下降真正不同的地方。为了完整理解这个过程,我们必须追踪完整的协方差矩阵:
Σ_t = E[(w_t - w*)(w_t - w*)^T]
![]()
我们对误差递推方程取外积(即乘以自身的转置),展开各项,然后取期望,得到协方差矩阵的递推表达式。其中出现了关键项——四阶矩(Fourth Moment): E[x_t x_t^T Σ_t x_t x_t^T](详见上图标红公式)。
在高斯假设下,四阶矩可用伊辛-维克定理(Isserlis' Theorem / Wick's Theorem) 化简,得到 H Σ_t H 和 tr(HΣ_t) · H 两项,其中 tr(HΣ_t) 恰恰就是超额风险。代入协方差更新规则后,得到一个规模庞大但形式简洁的递推式。
有效噪声结构:合并同类项后,有效噪声由两部分组成:
噪声底限(Noise Floor):η²σ²H,源于标签噪声,无法消除;
自生噪声(Self-generated Noise):η²E[R(w_t)]H,基于当前误差,随收敛而消失。
这意味着:噪声沿着曲率方向分布,而非各向同性。在训练早期误差大时,自生噪声也强;随着模型收敛,它逐渐减弱。
总结来说,这个看似简单的动态系统包含一个均值递推(与梯度下降一致)和一个协方差递推(庞大但形式简洁)。其形式虽简洁,耦合关系却使得分析变得复杂。过去十年中,大量工作试图精确理解这一过程,而我们正是站在这个基础上向前推进。
![]()
在某种意义上,我们先将这个二次模型视为一个"稻草人模型"(Straw Man)——看看它的预测是否经得起实践的检验,或者我们能否推翻它。接下来,我们将通过一系列简短研究(Vignettes) 来探讨它在若干实际问题上的表现。
03
二次模型对哪些预训练优化问题有指导作用?
▎任意时间学习问题:算出“不设停止时间”的最优跑法
第一个问题,是关于任意时间学习(Anytime Learning)的一个非常基础的问题。这是与一群非常出色的合作者共同完成的工作,其中 Alex Meterez 也在现场,大家可以向他提问。
![]()
现在我们来看大语言模型预训练(LLM Pretraining)场景下的任意时间学习问题。图中展示了多条不同的学习曲线,横轴为已处理的 Token 数量,纵轴为验证损失(Validation Loss)。每条曲线对应不同的 Chinchilla 倍数,例如 32 倍(32×)对应的模型规模大约是 1.5 亿参数,在图中以深黑色曲线表示,其损失沿训练过程的变化一目了然。我们可以看到每条曲线的形态都不同。
![]()
这里的关键在于计算效率(Compute Efficiency)——即训练模型所消耗的浮点运算量(FLOPs)。如果我们在训练中途取一个中间检查点(Intermediate Checkpoint),那么对于该时刻对应的 Token 数而言,这个模型的性能是非常差的。举个例子:假设我们在训练一个 2 倍 Chinchilla 规模的模型,如果在 1 倍 Chinchilla 的位置提前停止,并评估其损失,会发现它远不如从一开始就为 1 倍 Chinchilla 直接训练的模型。
造成这一现象的原因在于,我们采用了余弦衰减(Cosine Decay)作为学习率调度(Learning Rate Schedule),而该调度是基于预设的停止时间来设定的。这意味着,虽然模型在预设的停止点能达到一个较低的损失值,但在中途的任意时间点,其损失表现都比较差。更糟糕的是,如果我们后续获得了更多数据,想要继续训练,我们就卡住了,因为学习率已经衰减到了零。那我们该如何解决这个问题?
因此,关于随时学习(Anytime Learning),一个很自然的问题便是:如果我们能在训练过程中获得更多数据,是否可以在继续训练的同时不损失计算效率?
同样重要的是,当我们花费数月时间训练一个模型时,我们希望能随时取出一个中间检查点(Intermediate Checkpoint),并准确评估其在当前时刻的真实表现。然而在现有框架下,如果我们中途取出这样一个检查点,其损失往往很差,并不能反映我们在该时间点实际能达到的最佳性能。那么,我们该如何为一个未知的“停止时间”(Stopping Time)来设计训练策略呢?
![]()
我们的目标是什么?我们设定了一个相当严格的条件:能否在不预先知道停止时间的情况下,始终匹配一条特定的包络线(Envelope)?所谓余弦包络线,就是在余弦衰减调度下,对于任意给定的停止时间,我们所能达到的最佳损失轨迹。图中我已将这些最佳点连成一条包络线。我们希望找到一个单一的训练过程,能够在每一个时间点上都与这条包络线相匹配。
这是一个非常强的要求,但也具有明确的现实意义:如果我们获得了更多数据,就可以继续训练而无需重新开始;同时,在训练过程中,我们可以随时评估模型,并确信在那一刻它的表现是接近最优的。然而正如你所见,当前的实际轨迹与包络线之间存在巨大的差距。所以,问题已经很清晰了:我们要去匹配那条包络线。
显然,现实中的模型非常复杂——它是一个 Transformer,以某种复杂的方式被训练。但我们不妨回到我们的“玩具模型”,也就是二次模型,问一问:在这个模型里,我们对这个问题有什么认识?这个问题在那里是否更容易解决?
![]()
第一个结论是:即使在简单的二次模型中,任意时间学习本质上也是困难的,即使在二维中也很难。 我们有一个非常简单的下界(Lower Bound),它针对特定的学习率设定,但我认为它能给出正确的直觉——对于任何多项式衰减的学习率调度,基本上都不存在一个真正的随时学习方案。也就是说,如果你希望模型在任意时间点都达到最优,在很多时间点上,你总会与最优结果差出一个条件数(Condition Number)的因子。
直观上可以这样理解:在一维情形下,正确的衰减方式是 1/√t;但在二维情形下,存在两个不同的时间尺度,你希望学习率同时按这两个尺度衰减,但这是不可能的。在高维中,这种复杂性只会进一步加剧。
从大量已有工作中我们知道,在有限维度中,任意时间学习的最优速率为 dσ²/n,而达到这一速率的最简单方法可能是使用恒定学习率加平均,这是一个能在任意时间点都达到最优速率的方案。如果我们不使用平均,我们也知道,在预先知道停止时间的情况下,可以得到接近最优的结果。但关键在于,无论有限维还是无限维,我们在没有平均的情况下要达到最优,都严重依赖于知道停止时间。
这就是表格中第一列所展示的内容:当知道停止时间时,方案并不是任意时间方案;没有平均时我们可以接近最优;但如果我们加入平均,恒定学习率加平均在无限维中同样适用——只是情况更加微妙。我们可以进一步扩展这一视角,表明基于过程的特定衰减条件,1/√t 加上平均同样可以实现随时最优。所以这个问题相当微妙。
我不打算深入技术细节,但核心结论是:即使在这样一个简单的“玩具模型”中,我们也能得到相当丰富的答案。 我们看到,在没有平均的情况下很难做到任意时间最优;在知道停止时间的情况下我们可以接近最优;同时,我们也找到了一个候选的任意时间最优过程。
![]()
当然,这只是一个非常简单的二次模型,那么平均(Averaging)的方法,为什么能在如此复杂的神经网络中起作用呢?我们能否用 1/t 这样的衰减策略来替代余弦衰减?能否真正匹配那条包络线?我们认真对待了这些问题,并进行了尝试。
我认为一个重要的背景是:人们在实践中确实经常使用平均策略,但他们通常是在已知停止时间的情况下进行的。而我们进一步深究的问题是:在不预先知道停止时间的情况下,平均策略能否真正起作用,并匹配包络线?结果,它基本做到了。
图中红色星号标出的是余弦衰减曲线,该模型在 32 倍 Chinchilla 规模下训练,我们绘制了其对应的包络线。而恒定学习率加平均,以及 1/√t 加平均,均为单次运行(Single Run)的结果。这里我们评估的不是当前迭代点(Iterate),而是某个窗口内的移动平均(Running Average)。
具体而言,我们使用的是指数移动平均(EMA),本质上是对一段窗口内的迭代点进行平均。这一操作易于实现,且不带来显著的计算开销。更重要的是,它确实直接贴合在包络线上,而且这一贴合覆盖了长达 30 倍 Chinchilla 的范围。在论文中,我们将结果进一步放大,并展示了相应的后悔值(Regret)。
我认为这相当令人印象深刻:在 30 倍的范围内,在这样一个非凸问题上,它却实实在在地直接落在包络线上。值得注意的细节是,我们用于平均的窗口大约占整个训练运行的 5%。随着训练持续,窗口也随之拉长——如果窗口太短,效果会变差;如果太长,曲线则会向上弯曲。我们惊讶地发现,即便是这样一个较大的窗口,依然能产生稳健的平均效果。
我了解到,一些基础模型公司已经在使用某种形式的平均策略,但也有些公司并未采用。我认为,通过严格调优所有相关参数,我们实现的这个基准是相当扎实的,并且成功地匹配了包络线。这再次与简单的二次模型给出的预测一致。
论文中还提到了另一种相关方案,叫做“预热稳定衰减”(Warmup Stable Decay),它同样能命中包络线,但它并不算是真正的任意时间学习方案,因为它需要使用相当多的额外样本来重新训练。而我们的方案则不同——只是一个单一过程、一次运行,就贴合在包络线上。
![]()
因此,实践中的启示是:通过某种形式的尾部平均(Tail Averaging),我们确实能够在每一个Horizon上(至少在相当宽的范围上)匹配这条包络线。我认为这是一个相当可靠的实践结论,而且它与理论预测高度一致。它真正地告诉我们:我们不必在训练开始前就强行设定一个停止时间,因此,当后续获得更多数据时,我们可以无缝地继续训练。另一个有趣的发现是,这种平均策略似乎在约占 Token 总数 5% 的窗口上,也依旧有效。
▎批量大小与串行时间:精算“并行提速”的极限
下一个问题是:我们的训练任务什么时候停止?我们也有与许多才华横溢的合作者完成的一系列工作,我想特别强了一些更为年轻的成员。
![]()
这个问题本质上是:当我们按模型规模进行扩展时,批量大小(Batch Size)应该如何随之变化。在实践中,我们通常依赖一些可预测的缩放规律(Scaling Laws),例如损失如何随已处理的 Token数量或所投入的计算量而变化。那么,一个很自然的问题是:串行运行时间(Serial Runtime)——即训练任务从开始到完成所需的实际时间——是如何随模型规模和Token数量而扩展的?因为我们显然不希望训练任务持续数个月之久,我们希望能够尽快完成。因此,理解串行运行时间的缩放规律至关重要。
而这个问题实际上可以归结为另一个更基本的问题:临界批量大小(Critical Batch Size) 是如何随规模变化的。临界批量大小是并行化中最自然的一个概念——它决定了我们能够在多大程度上通过增加并行度来缩短串行运行时间。接下来,我将带领大家通过这张图来深入理解这个问题。
![]()
那么,问题来了:在不损失计算效率的前提下,我们究竟能将串行运行时间缩短到多短?这里的“计算效率”指的是,我们选定一个目标损失,达到该目标损失所需的总浮点运算量(Total FLOPs),而我们希望在任务完成得更快的同时,不增加总浮点运算量。换句话说,在给定目标精度下,我们能多快完成任务?这本质上就是批量大小的缩放问题。
![]()
先看线性缩放区域(Linear Scaling Regime)。图中横轴表示批量大小,纵轴表示在该批量大小下达到特定目标损失所需的更新步数(Steps)。我们期望的理想情况是:批量大小翻倍时,步数减半。如果这一关系成立,那么总浮点运算量保持不变,而串行运行时间减半——因为我们可以利用并行化来加速。在线性缩放区域中,随着我们持续翻倍批量大小并相应减少步数,这一线性关系能在一定范围内保持成立。
然而,最终这条蓝色曲线会逐渐偏离完美的线性缩放区域。我们将临界批量大小(Critical Batch Size) 定义为曲线开始显著偏离(例如计算效率变差 20% 左右)时的批量大小。这是一个严格的标准,因为我们始终希望保持总浮点运算量不变。临界批量大小,本质上就是完美缩放关系失效的临界点。
那么,这里的关键问题是:临界批量大小如何随 Token 数量的增加而变化?又如何随模型规模的增大而变化? 随着我们不断增大模型规模、使用越来越多的训练数据,这些因素究竟会如何影响我们的串行运行时间?
我们如何回答这些问题?让我们回到我们的“玩具模型”——二次模型,看看它会给出什么样的预测。
![]()
我们尝试精确分析该模型的动态过程,并理解其含义。当我们将批量大小纳入模型时,修改精确动态并不复杂——忽略不等式(实际上它是只差一个常数),均值动态并不随批量大小变化,但有效方差(Effective Variance)会按因子 B 缩小。现在我们需要理解的是,当规模扩大时,如何刻画这些动态。需要特别强调的是,要真正精确理解这一过程,即使最终我们只关心损失值,我们也必须追踪误差在完整协方差矩阵中的传递——如果不追踪整个系统,就无法精确地得到结果。这就是我们的目标。
理论会怎么说?这个问题既微妙又有趣。我们先固定模型规模,问:临界批量大小如何随 Token 数的变化而缩放?
![]()
我们的预测是:在有限维设定下,随着 Token 数的增加,临界批量大小最终将趋于一个与 Token 数无关的常数。直觉是这样的:如果你在训练一开始就使用非常大的批量,实际上并没有什么好处——因为当参数离最优解还很远时,我们为什么要把梯度估计得那么精确呢?在远离最优解的区域,使用过大的批量只是在浪费样本。当然,如果完全不考虑计算效率,无限大的批量总是好的;但当我们关心计算效率时,如果随着样本数增加而不断增大批量大小,本质上就是在训练初期浪费了大量样本——因为那时候根本不需要那么精确的梯度。
然而,微妙之处在于,在无限维设定下,上述结论不再成立。我认为我们实际所处的实践区间更接近无限维设定,因为我们的模型规模通常与 Token 数同量级,甚至更大——这正是 Chinchilla 缩放规律所表明的。因此,在无限维设定下,根据谱(Spectrum)的具体条件,临界批量大小实际上会随 Token 数按某个小于 1 的幂次缩放。
直觉上可以从偏差-方差权衡(Bias-Variance Tradeoff) 来理解:对于更长的训练运行,实际上希望使用更大的批量大小。
在无限维情形下,当我们采用平均策略并设定学习率时,特定的偏差-方差权衡会使得:运行越长,你越倾向于使用更小的学习率。这主要归因于过程中复杂的乘性噪声结构。进一步说,由于这种偏差-方差权衡,在非常长的运行中,你实际上会把初始学习率设为停止时间的函数;类似地,你也希望把批量大小设为停止时间的函数。因此,这是一个具体的、可验证的预测:我们预期,至少在高维情形下,临界批量大小会随Token数的增加而缩放。
那么,我们对临界批量大小如何随模型规模缩放的预测是什么?这是模型规模缩放的问题。在这里,我们不完全依赖二次理论,而是借助一组关于平均场渐近(Mean Field Asymptotics) 的结果。这一系列工作表明,在特定的缩放条件下,当取某个平均场极限时,训练动态会收敛到一个定义良好的渐近极限——而该极限不是模型规模 d 的函数,因为随着我们缩放模型规模,极限行为本身并不依赖它。因此,平均场推理给出的结论是:临界批量大小不应该依赖于模型规模d。
当然,实际上我并不认为我们真的处于那种所有训练动态都收敛的平均场极限——但那也并非必要条件。看起来,某些标量量(而非完整的高维学习动态)可能在整体极限还未达到之前就已经进入了平台期,例如学习率迁移(Learning Rate Transfer) 现象似乎确实成立。从理论角度看,临界批量大小很可能在训练动态的整体极限到达之前,就已经稳定在某一个极限值附近,这似乎是合理的。
因此,从理论预测来看,我们的结论是:第一,临界批量大小与Token数之间存在强缩放关系——运行越长,你应当使用越大的批量;第二,临界批量大小与模型规模之间的缩放关系较弱。
![]()
另一个问题是:这些理论预测能否得到验证?显然,我们使用的是简化模型,但它给出了很强的量化预测。我们对此进行了实验。需要强调的是,这些实验都是经过精心调优的运行——因为每次运行我们都在为给定的模型规模和Token预算寻找最优的批量大小。
实践中常见的做法是,在 Chinchilla 缩放(即模型规模增长时,Token 数按约 20 倍模型规模同步增长)下,观察临界批量大小随模型规模的缩放。但在这种设置下,两个因素被混淆了:当模型规模增长时,Token数也在同时增长。因此,在 Chinchilla 缩放下,我们确实会看到临界批量大小随模型规模强烈增长,但这并不能区分出哪个因素才是真正的驱动因素。
因此,我们需要解耦这两个因素。首先,当我们固定模型规模,单独考察临界批量大小随 Token 数n的变化时,我们得到的指数与理论预测高度一致——即存在强依赖关系:固定模型规模,训练运行越长,临界批量大小随 Token 数的增长越显著。
接下来,我们做另一个方向的缩放:固定 Token 数,调大模型规模。我们再次进行细致的扫描实验,试图理解任务是否能更快完成——即考察临界批量大小随模型规模的缩放。结果再次与理论一致:临界批量大小对模型规模的依赖非常弱。因此,通过真正解耦这两个因素,实验结果与我们的预测吻合良好。
![]()
现在我们可以进入一个更细微的问题。基于对缩放规律的理解,我们的第一步是将长串行过程通过临界批量大小转化为更多的并行性和更低的串行运行时间。但如果我们正在采用学习率衰减调度,那么我们能否设计一种“批量提升(Batch Ramp)”策略——即不衰减学习率,而是通过某种方式在训练过程中逐步增大批量大小?我们能否用批量增大来替代学习率衰减,从而匹配原始衰减过程(例如余弦衰减)?再次,我们可以借助二次模型来理解其中的机制。
![]()
我们的目标是以实际相关的方式实现这一策略,因此我们希望为 Adam 设计批量提升方案。对于 SGD,已有一些相关的工作,我们可以给出一个清晰的结论:如果我们连续执行两步更新,学习率分别为 η 和 β,在特定的方差异分母占优的区域,我们可以通过将学习率加倍并将批量大小加倍,使得两步更新等价于一步更新。
而对于我们更关心的 Adam 设置,我们可以在归一化梯度(Normalized Gradient)设定下进行分析。结果表明,在特定的方差主导区域,该等价关系同样成立——我们可以在实践中验证这一点。其含义是:在该区域,我们应当将学习率乘以 √2,并将批量大小加倍。换句话说,在实践中,如果我们原本打算将 Adam 的学习率减半,那么我们应该改为将学习率除以 √2,同时将批量大小加倍。
通过这样做,我们可以在训练过程中更激进地增大批量大小,从而有效减少串行运行时间。我们的主张相当强——这些随机过程应当真正匹配,因此学习曲线应当是对齐的。我们在多种模型规模和不同批量大小的设置下都进行了验证。
我们的关键主张是:这些随机过程确实对齐了。我们按已见 token 数量来度量时间——我们关心的是加速墙钟时间(Wall-clock Time),而不同过程之间的匹配方式,正是按已见 token 数量来计时的。
Seesaw算法的核心操作是:每当原始调度将学习率乘以 √2 时,我们改为将学习率乘以 2,并将批量大小加倍。我们按 token 数重新调整时间轴,理论上这一过程应与原始余弦调度曲线对齐。如左图所示,在大尺度上两者几乎完全重合,与理论预测一致;即便放大观察,虽然能看到细微差距,但那是在极度放大的尺度下,两条曲线实际上几乎重叠在一起。
更有意思的是,如果看右图(以步数为横轴),我们通过这种批量提升(Batch Ramp),也就是我们提出的Seesaw Procedure,大约能提前 35% 完成训练。而这个 35% 实际上是理论上的最优值。因此,我们可以在不损失计算效率的前提下,通过增大批量大小,实现 35% 的串行运行时间节省——总浮点运算量保持不变,因为两条曲线在达到相同验证损失时,我们的方案加速了 35%。这与二次模型理论完全一致:当我们按已见 token 数计时时,两条曲线直接对齐。
![]()
基于上述分析,可以得到三个结论:
实践中我们为串行运行时间建立的缩放规律,应当真正解耦 token 数量和模型规模——这与理论一致;
临界批量大小强烈依赖于 token 预算,而对模型规模的依赖非常弱;
对于 Adam,我们提出了批量提升过程,可以在余弦衰减下匹配训练动态,并实现 35% 的串行运行时间提升,做到曲线对齐。
到目前为止,我们看到的是理论曲线与实际曲线直接对齐,而非松散的上下界关系——这些学习曲线是实实在在地吻合在一起的。
▎动量:必须同时调优动量与批量大小
最后一个讨论,是关于动量(Momentum)。
![]()
动量在实践中到底给我们带来了什么?它是我们为数不多的能真正加速优化的工具之一,在各类场景下都广泛有效。但在这种随机设定下,它究竟带来了什么好处?我们该如何随批量大小调优它?它如何帮助我们提高计算效率?我们可以再次求助于二次模型,看看它给出什么答案,然后到实践中去验证。
![]()
我们想理解动量如何影响计算效率(达到给定精度所需的总浮点运算量)和串行运行时间,在确定性情况下,我们有非常漂亮的理论结果:重球算法(Heavy Ball Algorithm,Polyak) 和 内斯特罗夫加速算法(Nesterov's Acceleration) 能够将串行运行时间提升 √κ 倍,其中 κ 是条件数(Condition Number),即最大与最小特征值之比。这是一个非常优美的结果,伴随着许多优雅的证明。
然而,对于 SGD,当批量大小为 1 时,早期结果表明这种加速实际上不再成立。你可以证明,重球和内斯特罗夫在批量大小为 1 时,在计算效率上没有任何提升。这有点令人失望,因为动量是我们为数不多的加速工具之一,而实践中人们却一直在使用它。为什么批量大小为 1 时如此微妙?
关键在于,这是一个不依赖于加性噪声 σ² 的结果——实际上这里 σ²=0,它适用于一致线性系统(Consistent Linear System)。加速失效的根本原因,正是由于那种特殊的乘性噪声结构所导致的耦合动态。这正是我们严重依赖“玩具模型”动态的地方,它给出了一个强烈的预测:动量至少在批量大小为 1 时,不能提升计算效率。
不过,有一些工作(包括我自己参与的)研究过一种双时间尺度算法(Two-timescale Algorithm),可以在小批量下获得提升,这里我就不展开了。
这就引出了一个关于缩放的问题:显然我们不想在实际中运行批量大小为 1。我们知道,当从批量大小 1 逐渐增大到全批量(Full Batch)时,我们可以问:加速效应何时会重新出现? 因为当批量大小趋于无穷时,它确实减少了所需的步数。但我们也关心随之而来的计算效率代价。因此,问题是:随着批量大小的增加,动量究竟会发生什么变化? 我们在“玩具模型”和实践中都问了这个问题。
我们得到了一个相当有趣的结论:
重球算法在任何批量大小下,计算效率都不优于 SGD——也就是说,它从不减少达到目标精度所需的总浮点运算量。但它确实能通过 κ 因子改善串行运行时间。这是正式的结论,详见论文;其本质是,动量允许你将临界批量大小(Critical Batch Size)增大κ倍,但总浮点运算量仍与 SGD 相同。
稍微令人失望的是,那些优雅的双时间尺度算法在增大批量大小时似乎也没有带来太多额外好处。如果你愿意串行运行很长时间,它们确实能在浮点运算量上带来一些显著提升;但对于这些双时间尺度算法,当你试图让任务更快完成时,最终又会回到没有它们时的状态——这有点令人失望。其中的细节较为微妙,具体可参考论文。
![]()
另一个问题是:理论虽然漂亮,但它能否经得起实践的验证?至少在合成实验中,结果是成立的。如上图所示,横轴是批量大小,纵轴是达到目标损失所需的步数,其中绿色曲线对应 SGD。我们发现,当调优几种不同的动量算法时,它们在给定的批量大小下所需的步数是相同的——至少在小批量区域如此。然而,动量算法将完美缩放(Perfect Scaling)的窗口推得更远了。
这意味着什么?我们获得了相同的浮点运算量(因为我们遵循完美缩放律:批量翻倍,步数减半),但我们将缩放窗口向外扩展了,从而改善了串行运行时间,而计算效率并未提升。我们目前只在合成实验中验证了这一结论。
Shallow Way 等人一篇很出色的早期实证论文表明,这一结论在神经网络中同样成立。他们确实运行了这些实验,并展示了与上述一致的趋势:SGD 和动量在计算效率上完全重合,但临界批量大小被向外推移了。因此,这与理论在神经网络、复杂非凸系统上的预测直接吻合:浮点运算量(FLOPs)没有提升,但确实改善了临界批量大小。
![]()
这里的关键结论是:当我们考虑动量并对其进行调优时,不应当在固定批量大小下调优动量,因为那样看不到任何提升。我们需要同时调优动量和批量大小,模型才能获得真正的改善。如果不这样做,你可能会觉得动量没什么用,但实际上,它对获得串行运行时间的提升至关重要。
因此,这是一个明确的结论,与简单的高斯二次模型完全一致。总之,将批量大小与动量一起调优,可以获得更优的串行运行时间。
04
为什么二次模型如此强大?
在剩下的时间里,我将讨论一项非常新的工作,希望几天后能发布在 arXiv 上。合作者还是之前那批,但这次新增了 Alex Damian,他在边缘稳定性(Edge Stability)方面做了很多优秀的工作。
![]()
现在很多人会说:“我们不想再考虑这些简单的二次模型了,它们对复杂模型能有什么启发?”
但我认为新一代研究者恰恰要认真对待泰勒定理(Taylor's Theorem),并真正深入挖掘。当 Alex 加入后,我们团队的想法更倾向于:“让我们直接展开泰勒定理,看看能否把常数都研究透,真正理解整个过程。”
![]()
我觉得这项工作相当深入,因为我们真正在追问一个核心问题:为什么二次模型在这里效果这么好?如前所述,一种理解是,优化本质上只是一系列局部回归(Local Regressions)。
但如果我们试图认真对待这个“局部回归”的观点,并将其扩展为全局模型呢?
我们的想法是:与其用 SGD 进行一系列局部线性化训练,不如直接采用泰勒定理,在某个 Checkpoint 展开,然后训练一个全局二次模型。
具体什么意思呢?如上图所示,黑色曲线是一个模型( 1.5 亿参数)的训练运行轨迹。我们在训练过程中取不同的检查点(Checkpoints),然后在每个 Checkpoint 处做泰勒展开,然后假设泰勒定理是精确成立的,并在该展开后的模型上进行训练。
现在我们有了一个二次模型,我们在它上面训练,然后问:在这个二次模型上训练是否与原始过程匹配?有两种方式可以做到这一点。
设 f_θ 是神经网络,它将输入映射到目标。我们对神经网络做线性化:
f_θ(x) = f_θ₀(x) + ∇f_θ₀(x)ᵀ(θ − θ₀)
有两种方式将其代入损失函数:
方法一:GaussNewton - Prox-linear 方法。直接将线性化后的神经网络代入损失函数。这样得到的模型在形式上类似于逻辑回归。
方法二:直接对损失函数做泰勒展开。不对网络本身做线性化,而是直接对损失函数L(θ) 在 θ₀处展开到二阶,得到包含梯度(一阶项)和 Hessian 矩阵(二阶项)的二次模型。
我们在不同 Checkpoint 进行泰勒展开训练。这相当于把泰勒模型这个“近似模型”当作真实模型,在这个近似模型上继续做优化训练——而不是像 SGD 那样,每步都回到原始网络去做一系列局部更新。我们想知道:如果我们在全局上求解这个近似二次模型,它的轨迹能否追踪原始训练过程?
结果相当惊人。我们比较两个过程:
过程一:取 θ₀,忽略线性化,像往常一样用余弦衰减训练——这就是黑色曲线;
过程二:在θ₀ 处,开始在线性化的模型上训练(两种方式之一)。
现在我们可以直接比较这两条损失曲线,看它们是否对齐。结果发现,它们在 30%到50% 的训练窗口内对齐得非常出色。具体来说,一旦超过大约 30% 的训练进度(如放大图所示),从每个 Checkpoint 开始的线性化模型训练都能匹配黑色曲线;虽然最终性能会逐渐偏离实际过程,但在 30% 到 50% 左右,它们几乎完全重合。
![]()
上图左侧所示:蓝色曲线代表 Gaussian 方法,红色曲线表示的是真实 Hessian 二次模型。在大约 50% 的位置,它们几乎重叠。在约占整个训练运行约20%的区间内,在非凸优化上训练的过程,其损失轨迹与在该区间内的二次模型训练几乎一致。
这个结果给了我们极大的支持,说明泰勒定理在训练动态的相当大范围内能提供有效的近似。这让我们非常惊讶——这种近似一致性竟然能保持这么久。这篇论文很快就会发布。
最后,我再用一个”彩蛋“来结束这个部分。它与训练动态不直接相关,但结果相当惊人。我们研究了大型神经网络的完整特征谱(Eigenspectrum)(上图右侧所示)。
以 1.5 亿参数的神经网络为例,如果我们想做主成分分析(PCA)并观察其完整的特征谱,面临的挑战是协方差矩阵规模高达 1.5 亿 × 1.5 亿,极其庞大。然而,数值线性代数方法,例如 Lanczos 求积法(Lanczos Quadrature),就能让计算完整的特征谱成为可能。我们在 Kempner 上进行了大规模计算,成功获得了完整的谱密度。
其中有一些有趣的发现:
谱密度大致呈现两个幂律(Power Laws):第一个幂律延伸至词汇表大小(Vocab Size)附近,在那里可以看到一个小的下降(图中垂直虚线标记处),之后则过渡到第二个幂律;
我们还比较了 Gauss-Newton 谱与 Hessian 谱,发现它们在词汇表维度之前高度一致,之后才开始出现分叉;
进一步分析特征向量的分布,发现它们呈现出明显的结构性分离。通过将特征向量投影到不同的网络模块——例如顶层线性层、注意力层等,我们发现,前词汇维度主要由网络的顶层所捕获,而超出该区域后,分布模式发生了显著变化。
更多细节敬请期待我们的论文。我认为这项研究令人印象深刻之处在于,我们直接借助数值量化的线性代数工具,去深入理解这些大规模网络底层结构的基本特征。
![]()
现在,我来做一下总结。我们始终坚持一个核心视角:预训练本质上是一系列短链式的局部回归(Local Regressions),而我们的目标是进一步追问——如果我们把它当作一个全局回归模型来理解,它能为我们带来什么样的洞见?
事实证明,它带来的并不仅仅是粗略的上界或松散的趋势,而是具体、可验证、可操作的预测,这些能直接指导我们应该如何设置缩放规律、如何设计训练策略。
我认为这项工作中最精彩的部分在于:这种极为简化的方法,到底能带我们走多远? 而我们得到的答案是十分明确的。
![]()
我想强调的是,对二次模型能力的论证并非是依赖一堆松散的数学上界或渐近趋势。我们所呈现的证据是直观的、肉眼可见的:在多个截然不同的场景下,二次模型的理论预测与实际训练曲线都实现了直接重合。具体来说:
任意时间学习的结果直接贴合包络线;
SeeSaw 批量提升调度中,二次模型算出了学习率衰减与批量大小增长之间的精确等价关系,且 SeeSaw 的学习曲线与基准曲线精确对齐;
动量的问题上,二次模型给出了一个相当严格的结论:无论批量大小如何调整,重球算法在任何情况下都不能提升计算效率,这同样与理论预测完全吻合;
最后,在泰勒定理的验证中,我们对真实的大规模神经网络在不同检查点处做线性化处理,发现泰勒定理不是只在展开点附近有效,而是在相当宽的窗口内都能成立。
感谢各位的聆听。本次演讲的内容,是多年来与许多杰出合作者共同努力的成果。Alex Meterez将在本周五的研讨会上对更多技术细节进行报告,我届时也会进一步讨论关于完整特征谱的最新工作。如果想深入了解,欢迎参加研讨会。
一个人读论文太孤单,一群人刷顶会才好玩。
ICML 2026召开在即,我们正在召集一波含金量极高的 AI 研究者。群内主打实时论文跟踪与硬核技术探讨,拒绝灌水。
进群传送门:扫码进群或添加微信Vin_Vivid,备注:论文群 + 关注的 AI 方向。
![]()
搞科研/搞技术,信息差很重要。
来,一起快人一步!
![]()
上车,带你看遍全球 AI 顶会精华
可独家畅览:
专家演讲PPT
大会报告全文
热门论文解读
学术新星访谈
![]()
未经「AI科技评论」授权,严禁以任何方式在网页、论坛、社区进行转载!
公众号转载请先在「AI科技评论」后台留言取得授权,转载时需标注来源并插入本公众号名片。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.