
SmolLM3:小型、多语言、长上下文推理模型
SmolLM3 3B模型在性能上超越了Llama-3.2-3B和Qwen2.5-3B,同时与更大的4B替代方案(Qwen3和Gemma3)保持竞争力。除了性能数据之外,还分享了使用公共数据集和训练框架构建它的方法。
图片
模型摘要:
•3B模型在11T token上训练,在3B规模上达到SOTA,与4B模型具有竞争力
•指令模型具有双模式推理,支持think/no_think模式
•多语言支持支持6种语言:英语、法语、西班牙语、德语、意大利语和葡萄牙语
•长上下文使用NoPE和YaRN支持高达128k
一起公开的还包括架构细节、精确的数据混合比例,展示了如何在三阶段预训练方法中逐步提升各个领域的性能,以及构建混合推理模型的方法论。通常,实现这些结果需要数月的逆向工程。相反,SmolLM3提供了完整的方法论。
图片
预训练
SmolLM3在其前辈基础上改变了架构和数据混合。
架构和训练细节
图片
SmolLM3遵循带有绑定嵌入的transformer解码器架构,类似于SmolLM2,基于Llama架构并进行了一些针对效率和长上下文性能优化的关键修改。
分组查询注意力(GQA): SmolLM3用使用4个组的分组查询注意力替换了多头注意力。SmolLM3在使用来自FineWeb-Edu的100B token训练的3B模型上的消融实验显示,GQA在显著减少推理期间KV缓存大小的同时,匹配了多头注意力的性能。
NoPE: SmolLM3实现了来自"RoPE to NoRoPE and Back Again: A New Hybrid Attention Strategy"的NoPE,有选择地从每第4层中移除旋转位置嵌入。这种方法在不影响短上下文能力的情况下改善了长上下文性能,这在SmolLM3的消融实验证实。
文档内掩码: 在训练期间,SmolLM3使用注意力掩码来确保同一训练序列中不同文档的token不会相互关注。类似于Llama 3,这有助于更快和更稳定的长上下文训练,同时保持短上下文性能。
训练稳定性: 遵循OLMo 2,SmolLM3从嵌入层中移除权重衰减以提高训练稳定性。这种修改有助于更稳定的训练动态,嵌入范数在训练期间自然稳定在更健康的值,而不会影响SmolLM3消融实验中的整体性能。
所有这些变化都通过使用FineWeb-Edu的100Btoken训练的相同3B架构进行消融验证,确保每个修改要么改善性能,要么在提供其他好处的同时保持性能。
训练配置:SmolLM3使用236万token的全局批次大小,序列长度为4096,学习率为2e-4,AdamW优化器(beta1: 0.9,beta2: 0.95),权重衰减为0.1,梯度裁剪为1。SmolLM3使用WSD(Warmup-Stable-Decay)调度器,预热2000步,在最后10%的训练步骤中线性衰减到0。SmolLM3使用nanotron框架进行训练,datatrove用于数据处理,lighteval用于评估。模型在384个H100 GPU上训练了24天。
图片
数据混合和训练阶段
图片
遵循SmolLM2的多阶段方法,SmolLM3使用混合网络、数学和代码数据的三阶段训练策略,在11.2T token上训练SmolLM3,比例在不断演变。SmolLM3在使用50B到100Btoken训练的3B模型上进行了广泛的消融实验,以确定数据混合和比例。
预训练包括以下阶段:
•阶段1:稳定阶段(0T → 8Ttoken) 这个基础阶段用SmolLM3的核心数据集混合建立了强大的一般能力:
–网络:85%(12%多语言)- FineWeb-Edu,DCLM,FineWeb2和FineWeb2-HQ
–代码:12% - The Stack v2(16种编程语言),StarCoder2拉取请求,Jupyter和Kaggle笔记本,GitHub问题和StackExchange
–数学:3% - FineMath3+和InfiWebMath3+
•阶段2:稳定阶段(8T → 10Ttoken) SmolLM3引入更高质量的数学和代码数据集,同时保持良好的网络覆盖:
–网络:75%(12%多语言)
–代码:15% - 添加Stack-Edu
–数学:10% - 引入FineMath4+,InfiWebMath4+和MegaMath(包括Qwen问答,Pro合成重写和文本-代码交错块)
•阶段3:衰减阶段(10T → 11.1Ttoken) 最后阶段进一步上采样数学和代码数据:
–网络:63%(12%多语言)
–代码:24% - 高质量代码数据的上采样
–数学:13% - 数学数据的上采样并引入指令和推理数据集,如OpenMathReasoning
通过这些阶段和混合,SmolLM3为基础模型实现了非常有竞争力的性能。
中间训练
SmolLM3将长上下文适应和推理适应称为"中间训练"。它们比主要预训练短得多,但仍然具有一定的通用性,旨在改善模型在这两个领域的表现。
长上下文扩展
图片
在预训练之后,SmolLM3在额外的100Btoken上训练SmolLM3以扩展其上下文长度。SmolLM3在两个阶段中顺序扩展上下文窗口,每个阶段50Btoken:首先从4k到32k上下文,RoPE theta增加到150万,然后从32k到64k上下文,RoPE theta增加到500万。两个阶段都上采样了数学、代码和推理数据。在消融实验中,SmolLM3发现上采样特定的长上下文数据,如代码仓库、书籍和长网页(超出SmolLM3混合中自然长样本),并没有进一步提升RULER和HELMET基准的性能。使用NoPE并在具有更长序列和增加的RoPE theta值的衰减混合上训练,足以在64k范围内实现具有竞争力的长上下文性能。
遵循Qwen2.5,SmolLM3使用YARN来推断超出训练上下文长度。在推理期间,模型可以处理高达128k上下文(超出64k训练长度的2倍扩展)。
推理中间训练
中间训练阶段与预训练和后训练阶段的主要区别在于,SmolLM3针对一般能力而不是专注于特定领域。在SmolLM3的情况下,SmolLM3想要训练模型进行推理,而不针对特定领域,如数学或计算机代码。
SmolLM3的中间训练数据集包含35B token,来源于Open Thought的OpenThoughts3-1.2M和NVIDIA的Llama-Nemotron-Post-Training-Dataset-v1.1的子集,其中包含来自R1的推理轨迹。SmolLM3使用ChatML聊天模板和包装打包以避免为模型提供过多结构。SmolLM3训练模型4个epoch(约140Btoken)并使用检查点进行后续的SFT阶段。
后训练
图片
这里SmolLM3解释了SmolLM3如何应对这些挑战并分享了构建双重指令模型的完整过程。SmolLM3详细说明了如何通过精心设计的训练流程平衡推理和非推理模式之间的性能,该流程包括用于一般推理能力的中间训练、使用合成数据生成的监督微调,以及使用锚定偏好优化(APO)的对齐 - DPO的一个最新变体。
监督微调
在推理中间训练阶段(SmolLM3在140Btoken的一般推理数据上训练模型)之后,SmolLM3继续进行监督微调(SFT),以在数学、代码、一般推理、指令遵循、多语言和工具调用方面纳入推理和非推理模式的能力。训练双模式模型需要仔细平衡数据混合,以在所有目标领域的两种模式中保持强大的性能。为了评估SmolLM3在训练过程中的性能,SmolLM3跟踪了以下领域:数学、代码、一般推理、指令遵循和多语言。
在构建推理模式数据集时SmolLM3遇到的主要挑战是某些领域缺乏包含推理轨迹的数据集。为了解决这个差距,SmolLM3通过在推理模式下使用现有非推理数据集的提示来提示Qwen3-32B生成合成数据。这使SmolLM3能够在模型在推理模式下最初困难的领域中改善性能,如多轮对话、多语言和日常对话。
SmolLM3的最终数据混合是广泛消融实验的结果,这些实验检查了推理与非推理token的最佳比例以及每种模式内的组成。产生的SFT数据集包含18亿token:非推理模式10亿,推理模式8亿,包括12个非推理数据集和10个带有推理轨迹的数据集。SmolLM3使用BFD(最佳适应递减)打包训练了4个epoch(约80亿token),在用户轮次和工具调用结果上屏蔽了损失。
图片
使用锚定偏好优化(APO)的离策略模型对齐
图片
在SFT步骤之后,SmolLM3使用Tulu3偏好数据集(用于非推理模式)和SmolLM3从Qwen3-32B和Qwen3-0.6B生成的新合成偏好对(用于推理模式)的组合进行了一轮模型对齐。为了确保非思考数据集中所有领域的完全覆盖,SmolLM3生成了补充的思考模式偏好对。SmolLM3选择Qwen3-32B的生成作为"选择",Qwen3-0.6B的响应作为"拒绝",用于使用锚定偏好优化进行对齐。
锚定偏好优化(APO)是直接偏好优化(DPO)的一个变体,提供了更稳定的优化目标。在DPO中,奖励函数r_θ(x,y)测量训练期间序列概率与训练开始时模型(参考模型)相比的对数比率。
DPO损失优化提示x、选择y_w和拒绝y_l响应的三元组。
APO目标已被证明更稳定,SmolLM3在内部消融实验中也观察到了更高的下游性能。
虽然下游评估显示在数学、科学、指令遵循、编码、聊天和多语言任务方面有改善,但SmolLM3观察到在RULER等长上下文基准上的性能下降。SmolLM3将这种下降追溯到推理中间训练阶段,其中对推理能力的关注影响了长上下文性能。此外,APO训练数据限制在24ktoken,因为SmolLM3推理数据集的绝大部分都低于这个长度。
为了缓解这种性能下降,SmolLM3探索了模型合并作为解决方案。
模型合并
模型合并是一种流行且强大的技术,允许结合不同模型的优势,而无需集成的计算开销或额外训练的需要。SmolLM3使用MergeKit库来执行模型合并,因为它包含几种合并方法,包括线性和非线性合并。
SmolLM3的合并配方包括两个步骤:
1.取每个APO检查点并创建一个模型"汤"
2.将模型汤与具有强长内容性能的中间训练检查点结合。APO模型汤和中间训练检查点的权重分别为0.9和0.1的线性合并实现了最佳性能。SmolLM3能够在高达128ktoken的上下文上恢复基础模型的RULER得分。
产生的模型是SmolLM3今天发布的检查点。它在广泛的任务中保持性能。让SmolLM3转向这个模型以及基础模型的评估结果。
评估
SmolLM3在推理和非推理模式下评估基础模型和指令模型。
基础模型
图片
SmolLM3在评估知识、推理、数学和编码能力的12个流行基准上的胜率。SmolLM3一致优于其他3B模型。
用于胜率的评估基准:HellaSwag、ARC、Winogrande、CommonsenseQA、MMLU-CF、MMLU Pro CF、PIQA、OpenBookQA、GSM8K、MATH、HumanEval+、MBPP+
图片
SmolLM3在知识和推理基准(HellaSwag、ARC、BoolQ)上获得第一或第二名,在这些核心能力中表现出强大的性能。数学和编码性能在3B类别中具有竞争力。Ruler 64k上的长上下文性能显示模型可以有效处理扩展序列。
当在包括Global MMLU、MLMM HellaSwag、Flores-200、Belebele在内的多语言基准上进行评估时,模型在五种主要欧洲语言中表现出强大的多语言性能,测试知识、常识推理、文本理解和翻译。这表明SmolLM3在英语之外保持了一致的性能。
图片
双重指令/推理模型
由于SmolLM3既有指令模式又有推理模式,SmolLM3需要在两种模式下评估模型,并与具有相同能力的模型进行比较。
无扩展思考评估
SmolLM3在多个基准上评估SmolLM3与其他3B非推理模型的对比,并在无思考模式下将其与Qwen3推理模型进行比较。如性能图所示,SmolLM3优于其他3B非推理模型,包括Llama3.2 3B Instruct和Qwen2.5 3B Instruct,在推理模型中处于效率最佳平衡点,显著优于Qwen3 1.7B,同时以更低的计算成本接近4B模型性能。
图片
扩展思考评估
当评估SmolLM3启用扩展思考的推理能力时,与其非推理对应物相比,模型在大多数基准上显示出实质性改进。SmolLM3观察到在具有挑战性的任务上的显著提升,如AIME 2025(36.7%对9.3%)、LiveCodeBench上的竞争性编程(30.0%对15.2%)和GPQA Diamond上的研究生级推理(41.7%对35.7%)。
图片
博客地址:https://huggingface.co/blog/smollm3
本文转载自AI帝国,作者:无影寺
