第10回 LLM 的进化——扩展定律、涌现与混合专家
大船不靠一时力,慢慢加桨渡长风。
堆高未必凭蛮劲,算得其法自从容。
上回我们照了“内部镜子”:看交通流(注意力)、看内功(表示)、做对照实验。
本回要讲更大的命题:
为什么大模型常常是“越大越灵”?为什么到某个规模会突然像“开窍”(涌现)?又为何江湖里会出现一种叫“混合专家(MoE)”的省钱大法?
看官放心,本回不端出一锅复杂推导,只用高二能懂的直觉,把三件事讲通:
- 扩展定律:误差像幂律一样下降
- 涌现:连续变化为何看起来像突然跳变
- MoE:用“分工”换“容量”,用“少算”换“更大”
一、扩展定律:像“减半不够用”,更像“按比例变好”
许多同学初听“扩展定律”,会以为是:
我把参数翻倍,效果就线性变好。
不对。更常见的经验是“幂律”:
把某些资源(参数、数据、算力)按比例增加,损失(loss)会按一个更缓慢的比例下降。
这件事在语言模型里被系统整理成“Scaling Laws”,经典工作给出了大量实验支撑:模型性能与模型规模、数据规模、计算预算之间呈现近似的幂律关系。1
你不必记具体指数,只要记一个重要现实:
收益会变慢,但往往不会立刻归零。
因此工业界的直觉变成一句话:
只要数据、优化、工程跟得上,“再大一点”常常仍有提升。
二、算力怎么分:Chinchilla 的一句狠话
江湖里还有一句更狠的判断:
很多模型不是“不够大”,而是“没喂够”。
这类结论在后来被“算力最优训练(compute-optimal)”更明确地讲出来:
在固定训练算力下,参数多不一定最优,训练 token 的数量同样关键;很多当时的模型其实偏“参数大、数据少”,也就是“欠训练”。2
你可以把它想成练武:
- 你买了一把更重的剑(参数更大)
- 但只练了三天(token 太少)
剑是好剑,人没练到位。
所以“扩展定律”不是单押“变大”,而是押“配方”:
模型大小、训练 token、训练步数、学习率调度、数据质量要一起算账。
三、涌现:为什么连续曲线看起来像突然开窍
“涌现”这个词很容易把人带偏,好像模型突然有了灵魂。
更朴素的理解是:
- 能力往往是连续变强的
- 但我们用的评测是“过线才算会”
于是连续变化在“过线的那一刻”看起来就像跳变。
举个高二能懂的类比:
你跑 1000 米,配速一点点提高是连续的;
但老师只看“是否跑进 4 分钟”,那就变成“突然达标”。
所以面对涌现,你要学会问三句更靠谱的问题:
- 这是指标的阈值效应,还是能力真的发生了质变?
- 训练数据里是否存在“某类题型”在小模型里学不会,大模型才学得会?
- 我换一种更细的连续指标,涌现还像跳变吗?
这三问能救你免于“神秘化”。
四、为什么“更大”常常更聪明:容量与组合
把涌现放在一边,规模变大确实带来两类实利:
- 容量变大:可容纳更多模式、更多知识碎片
- 组合变强:能把已学到的碎片组合成新的解法
第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 的门控是可学习的,专家是神经网络层;但“分工 + 路由”这条筋骨不变。
七、小结:本回把“规模账”算清,下回进强化学习
本回你应带走三句话:
- 扩展定律像幂律:收益变慢但往往不立刻归零
- 涌现常有阈值效应:连续提升被“过线指标”看成跳变
- 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
-
Kaplan, J., et al. Scaling Laws for Neural Language Models arXiv:2001.08361(2020-01)https://arxiv.org/abs/2001.08361 ↩ ↩2
-
Hoffmann, J., et al. Training Compute-Optimal Large Language Models arXiv:2203.15556(2022-03)https://arxiv.org/abs/2203.15556 ↩ ↩2
-
Vavre, A., et al. Llama 3 Meets MoE: Efficient Upcycling arXiv:2412.09952(2024-12)https://arxiv.org/abs/2412.09952 ↩ ↩2