第10回 LLM 的进化——扩展定律、涌现与混合专家

大船不靠一时力,慢慢加桨渡长风。
堆高未必凭蛮劲,算得其法自从容。

上回我们照了“内部镜子”:看交通流(注意力)、看内功(表示)、做对照实验。
本回要讲更大的命题:
为什么大模型常常是“越大越灵”?为什么到某个规模会突然像“开窍”(涌现)?又为何江湖里会出现一种叫“混合专家(MoE)”的省钱大法?

看官放心,本回不端出一锅复杂推导,只用高二能懂的直觉,把三件事讲通:

  • 扩展定律:误差像幂律一样下降
  • 涌现:连续变化为何看起来像突然跳变
  • MoE:用“分工”换“容量”,用“少算”换“更大”

一、扩展定律:像“减半不够用”,更像“按比例变好”

许多同学初听“扩展定律”,会以为是:

我把参数翻倍,效果就线性变好。

不对。更常见的经验是“幂律”:
把某些资源(参数、数据、算力)按比例增加,损失(loss)会按一个更缓慢的比例下降。

这件事在语言模型里被系统整理成“Scaling Laws”,经典工作给出了大量实验支撑:模型性能与模型规模、数据规模、计算预算之间呈现近似的幂律关系。1

你不必记具体指数,只要记一个重要现实:

收益会变慢,但往往不会立刻归零。

因此工业界的直觉变成一句话:
只要数据、优化、工程跟得上,“再大一点”常常仍有提升。


二、算力怎么分:Chinchilla 的一句狠话

江湖里还有一句更狠的判断:
很多模型不是“不够大”,而是“没喂够”。

这类结论在后来被“算力最优训练(compute-optimal)”更明确地讲出来:
在固定训练算力下,参数多不一定最优,训练 token 的数量同样关键;很多当时的模型其实偏“参数大、数据少”,也就是“欠训练”。2

你可以把它想成练武:

  • 你买了一把更重的剑(参数更大)
  • 但只练了三天(token 太少)

剑是好剑,人没练到位。

所以“扩展定律”不是单押“变大”,而是押“配方”:
模型大小、训练 token、训练步数、学习率调度、数据质量要一起算账。


三、涌现:为什么连续曲线看起来像突然开窍

“涌现”这个词很容易把人带偏,好像模型突然有了灵魂。
更朴素的理解是:

  1. 能力往往是连续变强的
  2. 但我们用的评测是“过线才算会”

于是连续变化在“过线的那一刻”看起来就像跳变。

举个高二能懂的类比:
你跑 1000 米,配速一点点提高是连续的;
但老师只看“是否跑进 4 分钟”,那就变成“突然达标”。

所以面对涌现,你要学会问三句更靠谱的问题:

  • 这是指标的阈值效应,还是能力真的发生了质变?
  • 训练数据里是否存在“某类题型”在小模型里学不会,大模型才学得会?
  • 我换一种更细的连续指标,涌现还像跳变吗?

这三问能救你免于“神秘化”。


四、为什么“更大”常常更聪明:容量与组合

把涌现放在一边,规模变大确实带来两类实利:

  1. 容量变大:可容纳更多模式、更多知识碎片
  2. 组合变强:能把已学到的碎片组合成新的解法

第09回的“照妖镜”在这里就派上用场:
当你看到模型开始稳定学会某类推理,不妨用对照实验检验它是否真的抓住了关键证据,而不是碰巧猜中。


五、MoE:用“分工”把城扩大,但不让你天天付全城房租

现在讲本回最江湖、也最工程的武功:混合专家(Mixture of Experts, MoE)。

直觉一句话:
让模型“看题派人”。

把一个大模型拆成很多“专家”(子网络),再用一个“门控”(router/gate)决定这次输入该调用哪几个专家。

这样有个好处:

  • 总参数可以非常大(城很大)
  • 每次只激活少量专家(实际算的房租很少)

所以 MoE 常被描述为“容量大,但计算开销不按总参数线性增长”。

当然,江湖没有白给的武功,MoE 的代价也很现实:

  • 路由不稳:门控一乱,训练就抖
  • 负载不均:有的专家忙死,有的专家闲着
  • 通信成本:多卡并行时,专家分布带来额外通信

这也是为什么很多团队会研究“如何把稠密模型高效改造成 MoE”,而不是从零训练一个 MoE。
例如 2024 年末有工作讨论从 Llama 3-8B 这样的稠密 checkpoint 出发做“upcycling”,用很少的额外预训练计算,把它变成 top-2 的 MoE,并报告了训练效率与基准提升等结果。3

你此处不必记它的具体提升数字,只需把工程思想记牢:
MoE 是省钱的扩城法,但要付管理费(路由与稳定性)。


六、极简代码:用“分工”理解 MoE(可运行)

下面用纯 Python 做一个最小“MoE 路由”玩具:
我们有 3 个专家(函数),门控规则是“根据输入的符号特征选专家”。

它不是神经网络,但能把 MoE 的骨法说明白:每次只用一两个专家。

def expert_0(x):
    return f"E0: {x.lower()}"


def expert_1(x):
    return f"E1: {x.upper()}"


def expert_2(x):
    return f"E2: {x[::-1]}"


def gate(x):
    if any("0" <= ch <= "9" for ch in x):
        return [2]
    if any("A" <= ch <= "Z" for ch in x):
        return [1]
    return [0]


def moe(x):
    experts = [expert_0, expert_1, expert_2]
    chosen = gate(x)
    outs = [experts[i](x) for i in chosen]
    return " | ".join(outs)


if __name__ == "__main__":
    for s in ["Hello", "hello", "abc123"]:
        print(s, "->", moe(s))

你看到的就是 MoE 的基本精神:
输入不同,走不同专家;总专家很多,但每次只点几个人干活。

真实 MoE 的门控是可学习的,专家是神经网络层;但“分工 + 路由”这条筋骨不变。


七、小结:本回把“规模账”算清,下回进强化学习

本回你应带走三句话:

  1. 扩展定律像幂律:收益变慢但往往不立刻归零
  2. 涌现常有阈值效应:连续提升被“过线指标”看成跳变
  3. MoE 是省钱扩城:总参数变大,但每次只激活少数专家

下一回(第11回)我们要回到第二篇的地基:强化学习。
因为你会发现,2024–2026 的“慢思考”与“测试时计算”,很多都离不开“奖励、搜索、试错”这些老武功的现代化改写。

欲知后事如何,且听下回分解。


幻觉核查

  • 扩展定律引用核对:arXiv:2001.08361 可核验作者与提交时间。1
  • Chinchilla 计算最优引用核对:arXiv:2203.15556 可核验摘要与提交时间。2
  • Llama 3 upcycling MoE 引用核对:arXiv:2412.09952 可核验提交时间与摘要描述。3

逻辑审计

  • 与第09回衔接:第09回给出“看内部要做对照”,本回把对照用于解释“涌现真假”。
  • 与第11回衔接:第10回解释“规模与算力如何换能力”,第11回将解释“奖励与试错如何换策略”,共同构成第二篇的入口。
  • 难度控制:只使用“比例”“阈值”“分工”等直觉概念,不引入复杂推导与高等统计。

引用与溯源

Footnotes

  1. Kaplan, J., et al. Scaling Laws for Neural Language Models arXiv:2001.08361(2020-01)https://arxiv.org/abs/2001.08361 2

  2. Hoffmann, J., et al. Training Compute-Optimal Large Language Models arXiv:2203.15556(2022-03)https://arxiv.org/abs/2203.15556 2

  3. Vavre, A., et al. Llama 3 Meets MoE: Efficient Upcycling arXiv:2412.09952(2024-12)https://arxiv.org/abs/2412.09952 2