如今,想要训练出一个高性能的大语言模型(LLM),究竟需要什么?
在已发表的研究论文中,这件事似乎看起来相当简单:合理的架构设计、精心筛选的数据集,以及充足的计算资源。论文结果往往光鲜亮丽,消融实验结构清晰、条理分明,每一个设计决策在回顾时都显得理所当然。 但那只是“成功的叙事”——那些论文从不记录凌晨两点的 DataLoader 调试地狱、突如其来的 loss 峰值,或是那个悄然破坏你训练流程的 Tensor 并行性隐患(稍后我们会提到!)。现实世界要混乱得多,充满了反复试错、临时权衡与那些永远不会写进论文的艰难抉择。 在这篇文章中,我们将带你走进 SmolLM3 的幕后——一个拥有 30亿参数、基于 11 万亿 tokens 训练的多语言推理模型的诞生过程。这不是一篇普通的博客,而是一场关于决策、发现与弯路的剖析,展现了打造世界级语言模型背后那张复杂的蛛网。 这篇文章也是我们模型训练长篇系列的最终章。 此前,我们已经讨论过: * 如何在大规模下构建数据集(FineWeb); * 如何让成千上万块 GPU “合唱”般协同运作(Ultra Scale Playbook); * 以及如何在训练各阶段选择最合适的评测方式(Evaluation Guidebook)。
而现在,我们要将这一切融合起来,构建一个真正强大的AI模型。 这篇文章不仅会带你看见“成功配方”,还会呈现那些塑造每个决策的失败、系统崩溃与调试过程。 整个故事就像一部技术剧: 你将看到—— * 为什么在小规模实验中表现出色的设计,放大到大规模训练后却失效; * 我们为何在消耗了 1万亿 tokens 后决定重启训练; * 我们如何平衡 多语言性、数学与代码能力 之间的冲突,同时保持优异的英语性能; * 以及我们是如何在后训练阶段实现一个混合推理模型(hybrid reasoning model)。
我们尽量避免像“项目清单”那样冷冰冰地罗列,而是将整个历程讲述为一段连贯的故事。 可以把这篇文章看作是一份实战指南,帮助那些从“我们有好数据和GPU”到“我们打造了一个真正强大的模型”的研究者。 希望我们的开放分享,能让研究与生产之间的鸿沟再缩小一点,也让你下一次的训练跑得更顺一点。
这篇文章不必从头读到尾——事实上,它已经太长,不太可能一次读完。 内容被组织成几个相对独立的部分,你可以按兴趣跳读:
从宏观角度讨论一个关键问题:你是否真的需要预训练自己的模型?
我们会引导你思考在烧掉全部投资前应自问的几个基本问题,以及如何系统性地决策。 如果你更关心技术细节,可以直接跳过这一部分。
在训练指南针之后,我们将介绍如何构建自己的预训练方案: 包括消融实验的运行、评测任务的选择、数据源混合、架构设计、超参数调优,以及如何熬过漫长的训练马拉松。 即使你不是从零开始,而是做持续预训练(continued pretraining,也称 mid-training),这一部分同样适用。
这一部分涵盖如何最大化挖掘预训练模型的潜能。 你将学习后训练的“字母表”——从 SFT(监督微调)、DPO(直接偏好优化) 到 GRPO(广义强化偏好优化), 以及模型融合的“黑魔法”。 许多诀窍都是“血与泪”换来的,我们会分享经验,希望能帮你少踩坑。
如果说预训练是蛋糕、后训练是奶油与樱桃,那么基础设施就是那台工业级烤箱。 没有它,一切都无从谈起;若它出故障,你的“快乐周末烘焙”就会变成一场火灾。 这部分系统讲解 GPU集群架构、CPU/GPU/节点/存储之间的通信模式,以及如何识别并解决性能瓶颈。