news 2026/10/28 19:08:21

【CS336】lecture9 scaling law|缩放定律|数据缩放|数据配比|数据重复

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【CS336】lecture9 scaling law|缩放定律|数据缩放|数据配比|数据重复

引入


进入第九讲 scaling law,缩放定律。开始就是个很实际的问题,如果给你一个万卡集群,你打算怎么训练?


训练模型中一个比较难办的事情是超参数的选择,以前的做法很笨,真的去大模型训练上手动测试超参数。而现在缩放定律告诉我们,可以在小模型上测试超参数,总结规律,再拓展到大模型上

例如左侧这张著名的图,我们可以把计算量和验证集loss取对数坐标轴,拟合出一条直线作为下界,不同颜色的所有模型的数据,都在这条线上方,这条线可以帮助我们预测,当我们拓展模型规模,模型的loss以什么速度下降。

历史研究


1989年就有人研究过,模型误差与样本量的关系。第一个公式,不等号左侧是模型误差,右侧是一个关于样本量m的函数,随着m增大而变小,也就是说样本量增大,模型误差的上界会逐渐变小。

当然这只是一个宽松的理论上界,实际的下降速度可能更低。不过即使是这个宽松上界也展示了类似缩放定律的结论


最早的严格意义上的缩放定律研究诞生于1993年,研究的是训练数据的缩放定律。在一个朴素的多层感知机上,当我们增大数据量,验证集loss逐渐下降并收敛于某个值。训练loss逐渐上升,并收敛于同一个值,注意这里的训练loss,指的是训练时对于某一组数据,迭代了足够多的轮数,训练loss收敛了,取这个值作为这个数据规模的训练loss

如右图,其中的实线部分是实际数据点的拟合,后面的虚线部分是根据拟合曲线预测的结果。这是符合一般直觉的,随着训练样本的增加,模型的真实能力,也就是验证集上的表现,应该会逐渐变好,具体表现是loss逐渐下降,最终受限于模型本身架构和数据的限制,收敛到某个水平,表现为loss收敛到某个值。

然后这个收敛值和训练loss的收敛值是相同的,因为训练集够大的话,训练集足够泛化,模型在训练集和验证集上的表现自然会差不多。


2001年的这个论文更进一步,比较了朴素贝叶斯,感知机在内的四种机器学习算法,随着数据拓展的准确率,发现当数据小时,几种模型表现有较大差异,但当数据规模足够大时,集中模型都能达到0.9甚至0.95的准确率

这引导大家思考一个问题:比起研究模型算法,拓展数据规模是不是更重要的,大力出奇迹,数据够大什么架构都能很强。这一思想就是后来opanai,谷歌敢于训练超大参数模型的原因。


更进一步,这篇2012的研究开始用多种曲线尝试拟合模型表现-数据规模曲线,可以发现拟合的比较好的是指数类和幂律类。其中幂律类,其实就是后来最常见的缩放定律的形式。


2017年已经针对特定的模型,根据实验拟合出来一个缩放公式了
loss=41.2m−0.36+0.39 loss=41.2m^{-0.36}+0.39loss=41.2m−0.36+0.39

这就是前面提到的幂律形式,所谓幂律就是xax^axa,自变量是x,a是定值的形式。然后加上一些系数。注意这里接近一条直线,是因为对坐标做了对数处理

log⁡(loss−0.39)=log⁡41.2m−0.36\log (loss-0.39)=\log 41.2m^{-0.36}log(loss−0.39)=log41.2m−0.36
log⁡(loss−0.39)=−0.36(log⁡m+log⁡41.2)\log (loss-0.39)=-0.36(\log m+\log 41.2)log(loss−0.39)=−0.36(logm+log41.2)

把含loss,m的对数项看成主元,这就是一个直线了

根据左侧两个实际数据,这篇文章提出了最右侧的这个假设,在数据规模比较小时,loss较大且几乎不变,因为数据太少了训不出来,数据较大时,loss较小且几乎不变,因为已经达到了这个算法或者数据的极限(数据中不可避免的有一些噪声)。在中间部分,应该呈现左侧这两个曲线的规律,当数据规模按一定比例拓展时,loss也应该获得可预测的下降,如果取对数坐标轴,应该表现为loss线性下降

这篇文章最后的展望部分,提出来一些在现在看来非常超前的结论。

  • 模型能力会涌现,考虑上一页的右图,在数据量不够大,未进入幂律区之前,模型loss一直居高不下,当进入幂律区后模型能力会快速提升,看起来就像涌现
  • 缩放定律可以帮我们预测,想训练出一个水平的大模型,需要多少算力
  • 速度与精度的权衡。使用量化技术舍弃一些精度,换来更快的训练速度,更少的显存占用,进而可以训练更大的模型,精度更低,但参数量更大的模型性能会实现反超

缩放定律正式提出


OpenAI 的 Kaplan 等人于 2020 年发表的 Scaling Laws for Neural Language Models,正式总结了缩放定律。并且提出了三个维度的缩放定律:计算量,数据集大小,参数量。这三个维度增大时,模型Loss的下降曲线都可以拟合成一个幂律曲线,也就是上方三个图

在模型能力上,这篇文章也提出了模型能力可以涌现,也就是模型在规模提升过了某一个临界点后,能力快速上升,在这之前则上升很慢。这和loss的缩放定律结合起来告诉我们,扩大规模可以获得稳定的loss收益,loss跨过某个门槛后模型能力会有飞跃式的进步

数据缩放


来具体分析上面提到的三个维度的缩放,对于数据集维度,满足一个严格的幂律关系,也就是取对数后,Loss和数据集大小呈一个直线


前面那只是个实验拟合曲线,但这为什么是对的?

考虑一个简单的实验,我们在一个正态分布里采样N次,得到的均方差,也就是实际均值和理想均值作差,再作平方,再除以数据量N,这个统计量,
E=σ2/n E=\sigma^2/nE=σ2/n

对他取对数
log⁡E=−log⁡n+2log⁡σ \log E=-\log n+2\log \sigmalogE=−logn+2logσ
以log⁡n,log⁡E\log n,\log Elogn,logE为横轴,纵轴,这仍然是个幂律曲线!

模型训练中计算Loss的操作,其实和在正态分布上采样N次是等价的。一个样本前向传播,计算出一个Loss,就类似于做了一次采样,最后整体Loss往往就是把每个样本的Loss取均值,这得到的总Loss,可以视为对模型这个分布的一个均方差采样,那么它也应该服从和正态分布的均方差类似的形式,都是幂律关系


当然还有一些神秘问题,比如理论上,幂律公式的斜率应该是-1,但实际上往往绝对值很小,只有0.3甚至不到0.1。这是为什么目前还没有定论。可能的原因是数据本身有噪声,模型架构有缺陷


对此的解释又用了一个神秘小数学例子,在一个二维平面上采样N个点,真实的坐标是(x,f(x))(x,f(x))(x,f(x)),但采样有正态噪声,实际是yi=f(xi)+N(0,1)y_i=f(x_i)+N(0,1)yi​=f(xi​)+N(0,1)。最终对于这个问题,误差应该是n−1/2n^{-1/2}n−1/2级别的。

这是二维的情况,更一般的,如果数据有d维,那么误差应该是n−1/dn^{-1/d}n−1/d级别的,也就是缩放定律的幂律形式,斜率和数据维度有关。然后语言模型研究的语言,显然是一个内在维度很高的高维数据,所以d很大,幂律的斜率1/d1/d1/d很小


对此有些更深入的研究,尝试拟合数据维度和幂律曲线斜率的关系,如图横轴是数据维度,纵轴是幂律曲线的斜率,认为可以拟合成一条直线,斜率是1或1/2

这个研究不太严谨的地方在于,虽然幂律曲线的斜率是实验跑出来的,但数据维度实际上是估计出来的,所以这个估计到底准不准很难说。

数据配比和数据重复


另一个比较有意义的东西是,训练数据中不同来源的数据如何配比?

目前的做法是

  • 在小模型上通过实验不同配比,来找到最优配比
  • 决定是否重复使用数据,在数据不够时,对于高质量数据可以适当重复使用
  • 综合考虑数据质量和重复比例


具体来说,使用了不同配比的数据,看起来并不影响幂律曲线的斜率,而是影响截距,也就是起跑线,用了差的数据配比会一直落后,如左图,就是三种数据配比的幂律曲线

具体来说,右图研究了不同数据配比的截距,发现在0.5最优是最好的。呈现一个U型曲线,也就是某种数据,如果全是它,或者完全没有它都是不好的,数据多样性很重要

更进一步的具体研究,首先回顾了测试不同step和不同模型大小的缩放定律,记为1,2。然后又这里表示他们研究的是3,尝试不同的数据混合配比。

如最右侧的图,如果数据配比有两个维度,分别测试这两个维度的不同组合,得到loss,可以拟合出一个三维曲面图,这就是数据配比的缩放定律,沿着这个图我们可以预测不同数据配比的效果。

这个研究的难点在于,自变量是数据配比,可以有很多维度,需要大量的点才能拟合,比如这里只是一个二维的,想拟合一个三维曲面都需要大量数据。比前面的几个缩放定律,自变量只有一个维度要难很多。

并且,在小模型上测出来的数据缩放,在大模型上不一定依然成立


另一种暴力点的做法是,把潜在的数据配比都在小模型上试一遍,然后小模型上最优的配比大概率就是大模型上最优的。

如图横轴是测试的小模型参数量和大模型参数量的比值,纵轴是决策正确率,也就是小模型上最优配比在大模型上仍然是最优的概率。

可以发现这张图中数据点可以拟合成一条直线,在横轴接近1时,纵轴也接近1,表示小模型的大小接近大模型了,准确率也接近100%

在小模型大小是大模型10%左右时,预测准确率也很高了,大概有80%。这说明用小模型实验数据配比,再拓展到大模型是是可行的。这样并不需要大量实验,拟合出数据配比缩放定律的曲面,可以通过在小模型上的表现简单地预测在大模型上的表现


数据重复也有一些规律,比如这里横轴是一直重复一个数据集,得到的总数据量,或者说重复的轮数,这里一轮是12B,48B就是4轮。纵轴是Loss

其中实线是实际数据,虚线是无重复数据的理想情况。可以发现在前四轮重复中,实现虚线比较接近,也就是重复使用数据的loss下降情况和使用新数据差不多。在4轮后重复数据的效果则开始快速变差


这里拟合出一个公式,RD是重复轮数,RD*是轮数上界,D’是等价数据量,UD是被用来重复的数据集大小。这说明当重复次数增加,等效数据确实会增加,但是有一个上界,且重复轮数越多边际效益越低。后面这个1−e−x/d1-e^{-x/d}1−e−x/d项是经典的编辑效益递减,收敛于一个上界的曲线


比如我们用几何画板画一下就能看出来,这是一个上界为0,单增,斜率逐渐减小的曲线

基于上面边际效益递减的结论。可以画一个这个图,纵轴是模型参数量,横轴是训练到收敛需要的token量。纯黑的线是如果重复数据的效果等于使用全新数据,实际上也就是使用全新数据的实验。从黑色渐变到红色再到白色的,是一直重复一组数据的数据点。可以发现对于重复数据的情况斜率更低,这意味着当模型参数增大相同比例,也就是y坐标变大时,x坐标变大的更多,需要训练更多轮数才能收敛。

在规模有限的情况下,也就是token+模型之和是个定值,也就是图中的蓝色虚线上,如果重复数据的效果等价于新数据,交点在黄色五角星,实际情况下,重复数据想训练到收敛需要更多轮数,交点在红色五角星,并且红色的loss比黄色更小!

这说明当计算规模有限时,可以减小模型规模,减小模型参数量,使用重复数据,增加训练轮数,可以达到更低的收敛loss。这也不失为另一条路径,尤其是在优质数据可能即将耗尽的情况下,我们不得不重复使用有限数据。


另一点是缩放定律只是个上界,可以做到更优。比如这里红色是标准的缩放定律,紫色是训练中使用正则化减少过拟合,可以发现整体loss曲线更低。而黄色曲线使用模型集成(一般就是训练多个模型再融合)还要更低。


如果手头有很多数据,具体的选择也要看算力,如图四种不同颜色曲线是不断增加低质量数据集,数据集越少的曲线,使用的数据集质量越高。当算力增加也就是训练轮数变多,观察他们的loss曲线。

可以发现算力少时,最高质量的数据集,也就是绿色的,只含E数据的loss曲线最低。在中等算力大部分时候是蓝色,使用E+D的最低。高算力是红色,使用E+D+C最低。

这启示我们数据集的选择要看算力,如果算力充足可以选大量数据集,可以包含一些低质量数据。如果算力不足优先使用高质量数据。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 19:07:31

嵌入式5 - GPIO工作模式2

一.通用开漏输出1.核心思想:去掉P-MOS管,让P-MOS管永远关闭。2. (1)向输出数据寄存器写1,最终表示N-MOS断开。(2)向输出数据寄存器写0,表示N-MOS管闭合。二.高阻抗状态高阻抗状态就是…

作者头像 李华
网站建设 2026/10/28 19:05:20

08-02-优化-LINQ与函数式编程的GC代价

LINQ 与函数式编程的 GC 代价篇章:08-性能优化篇 | 阅读时间:约 45 分钟 | 前置知识:了解 C# LINQ 基本语法一、引言LINQ(Language Integrated Query)为 C# 带来了优雅的函数式查询语法,极大提升了代码的表…

作者头像 李华
网站建设 2026/10/28 19:02:27

C++11设计模式实战:从单例到CRTP的完整实现

一、引言 设计模式是面向对象设计中反复出现的问题的通用解决方案。C++ 作为一门支持多范式、强调零开销抽象的语言,设计模式在其中的落地方式与 Java、C# 有明显差异:C++ 有模板、RAII、值语义、移动语义、编译期多态等特性,很多模式可以用更轻量的方式实现,甚至可以在编…

作者头像 李华
网站建设 2026/10/28 19:01:02

智能从来不是工具,是结构:Copilot 救不了组织

WGA 在 2026 年 10 月发布的一份组织设计报告里引过一项覆盖 5179 名客服的研究:AI 辅助让人均处理量涨了 14%,新手和低技能员工涨了 34%。WGA 据此判断,工作流、排队、升级路径与汇报线,四样一样没碰。 人更快了,组织…

作者头像 李华