HuggingFace重磅开源SmolLM3:小巧、多语言、长上下文推理模型,训练细节技术报告解读!


HuggingFace重磅开源SmolLM3:小巧、多语言、长上下文推理模型,训练细节技术报告解读!

仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接

SmolLM3:小巧、多语言、长上下文推理模型
小型语言模型正变得日益重要,用户寻求功能强大且能高效部署的模型。社区已经涌现出许多出色的小型模型,它们不断突破该规模模型能力的界限。通过SmolLM3,HF也很高兴能为大家贡献一个全新的、性能具有竞争力且完全开源的30亿参数模型:
*基础模型:https ://hf. co/HuggingFaceTB/SmolLM3-3B-Base
*指令遵循及推理模型:https ://hf. co/HuggingFaceTB/SmolLM3-3B
原文博客:https ://huggingface. co/blog/smollm3
SmolLM3在效率上取得了黄金平衡点。HF的30亿参数模型性能超越了Llama-3. 2-3B和Qwen2. 5-3B,同时与更大的40亿参数模型(Qwen3&Gemma3)保持了竞争力。除了性能数据,HF还精确分享了如何使用公共数据集和开源训练框架构建该模型。
模型总结:
30亿参数模型,在11万亿(T)个词元上训练,在30亿参数规模达到了领域最佳(SoTA),并与40亿参数模型具有竞争力。
指令遵循模型,支持双模式推理,支持/think(思考)和/no_think(不思考)模式。
多语言支持,涵盖6种语言:英语、法语、西班牙语、德语、意大利语和葡萄牙语。
长上下文支持,使用NoPE和YaRN技术实现最高128k的上下文长度。
完整的训练方案:HF发布SmolLM3的同时也提供了完整的工程蓝图。这包括架构细节、精确的数据混合比例(展示HF如何通过三阶段预训练方法逐步提升各领域的性能),以及构建混合推理模型的方法论。通常,实现这些结果需要花费数月进行逆向工程。而HF选择直接提供了完整的方法。
无论您是自己构建模型,还是想了解在这一规模下哪些因素能提升性能,这份蓝图都将揭示实现30亿参数模型竞争性性能背后的工程故事。
接下来看看预训练阶段。
SmolLM3在其前代模型的基础上,改进了架构和数据混合比例。首先来看看架构和训练配置细节!
SmolLM3采用了一种类似于SmolLM2的Transformer解码器架构,并使用了绑定嵌入(tiedembedding)。它基于Llama架构,并进行了一些关键修改,以优化效率和长上下文性能。
分组查询注意力(GroupedQueryAttention,GQA):HF使用4个分组替换了多头注意力(multi-headattention)。HF在使用FineWeb-Edu的1000亿(B)个词元训练的30亿参数模型上进行消融实验表明,GQA在性能上与多头注意力相当,同时显著减少了推理期间的KV缓存大小。

文档内掩码(Intra-DocumentMasking):在训练期间,HF使用注意力掩码(attentionmasking)来确保同一训练序列中来自不同文档的词元互不关注。与Llama3类似,这有助于进行更快速稳定的长上下文训练,同时保持短上下文性能。
训练稳定性:遵照OLMo2的做法,HF移除了嵌入层(embeddinglayers)的权重衰减(weightdecay),以提高训练稳定性。在HF的消融实验中,这一修改有助于实现更稳定的训练过程,嵌入范数(embeddingnorms)在训练期间自然稳定在更健康的数值,且不影响整体性能。
所有这些修改都通过在用FineWeb-Edu的1000亿个词元训练的相同30亿参数架构上进行消融实验得到了验证,确保了每项修改要么提升了性能,要么在保持性能的同时带来了其他益处。
训练配置:HF使用了全局批次大小为236万词元,序列长度4096。学习率为2e-4,优化器为AdamW(beta1:0. 9,beta2:0. 95),权重衰减0. 1,梯度裁剪1。HF使用了WSD(Warmup-Stable-Decay)调度器,预热阶段2000步,并在最后10%的训练步数中线性衰减至0。HF使用nanotron框架进行训练,datatrove进行数据处理,lighteval进行评估。模型在384个H100GPU上训练了24天。您可以在下图中看到分布式训练设置。
除了架构更改,HF还通过消融实验改进了训练策略。接下来更详细地看看数据混合和大训练阶段。
沿承SmolLM2的多阶段方法,HF使用三阶段训练策略在11. 2万亿个词元上训练了SmolLM3,该策略混合了网络、数学和代码数据,且比例不断调整。HF在500亿至1000亿词元训练的30亿参数模型上进行了广泛的消融实验,以确定最终的数据混合比例和配比。
预训练包括以下阶段(如上图所示):
阶段1:稳定阶段(0万亿→8万亿词元)这一基础阶段使用HF的核心数据集混合建立了强大的通用能力:
网络数据:85%(其中12%为多语言数据)-FineWeb-Edu,DCLM,FineWeb2和FineWeb2-HQ

数学数据:3%-FineMath3+和InfiWebMath3+
阶段2:稳定阶段(8万亿→10万亿词元)HF引入更高质量的数学和代码数据集,同时保持良好的网络数据覆盖:
网络数据:75%(其中12%为多语言数据)
代码数据:15%-添加Stack-Edu
数学数据:10%-引入FineMath4+,InfiWebMath4+,和MegaMath(包括Qwen问答数据、Pro的合成重写数据以及文本-代码穿插块)
阶段3:衰减阶段(10万亿→11. 1万亿词元)最后阶段进一步提高数学和代码数据的采样比例:
网络数据:63%(其中12%为多语言数据)
代码数据:24%-高质量代码数据上采样
数学数据:13%-数学数据上采样,并引入指令和推理数据集,例如OpenMathReasoning。
通过这些阶段和混合比例,HF为基础模型取得了非常有竞争力的性能。更多内容将在评估部分介绍。您可以在这里找到包含精确数据权重的nanotron训练配置。HF还将分享训练日志和中间检查点。
在完成主要预训练后,HF在中期训练阶段改进了模型的长上下文和推理能力。
HF将长上下文适应性训练和推理能力适应性训练称为“中期训练”。这些阶段比主要预训练要短得多,但仍然是通用性的,旨在提升模型在这两个领域的能力。首先来看看长上下文训练。
在主要预训练之后,HF额外训练了SmolLM31000亿个词元,以扩展其上下文长度。HF分两个阶段顺序扩展了上下文窗口,每个阶段使用500亿个词元:首先从4k上下文过渡到32k,同时将RoPEtheta增加到150万;然后从32k上下文过渡到64k,同时将RoPEtheta增加到500万。这两个阶段都提高了数学、代码和推理数据的采样比例。消融实验中,HF发现上采样特定的长上下文数据(例如代码仓库、书籍和长网页,这些数据本身比HF混合数据中的自然长样本更长)未能进一步提升RULER和HELMET基准测试的性能。事实证明,使用NoPE并通过长度更长的序列和增加的RoPEtheta值在衰减阶段的数据混合上进行训练,就足以达到最高64k的竞争性长上下文性能。
与Qwen2. 5类似,HF使用YaRN技术将上下文长度外推(extrapolate)到训练上下文长度之外。在推理过程中,模型现在可以处理最高128k的上下文(是64k训练长度的2倍扩展)。
在扩展模型的上下文长度之后,HF在中期训练阶段对其进行训练,以整合推理能力。中期训练阶段与预训练和后训练阶段的主要区别在于,HF旨在提升一种通用能力,尚未侧重于特定领域。在本例中,HF希望训练模型进行推理,但不针对特定领域,例如数学或计算机代码。

DeepSeekR1(arxiv. org/abs/2501. 12948)和Qwen3(arxiv. org/abs/2505. 09388)等推理模型的发布,展示了当模型能够进行显式推理时所展现出的强大能力。然而,社区目前仍缺乏完整的公开方案,可以使用公共数据集构建支持推理和非推理双模式的指令模型。现有的大多数方法涉及复杂的强化学习过程和私有数据集,这使得研究人员难以复现和在此基础上构建工作。
在本节中,HF将解释如何解决这些挑战,并分享构建双模式指令模型的完整方案。HF将详细介绍如何通过精心设计的训练流程平衡推理模式和非推理模式之间的性能,该流程包括用于通用推理能力的中期训练、使用合成数据生成的监督式微调(SFT),以及使用锚定偏好优化(AnchoredPreferenceOptimization,APO)(一种最新的DPO变体)进行的对齐。
在深入探讨训练方法之前,理解用户如何与HF的双模式模型互动至关重要。对话模板(chattemplate)作为实现推理模式和非推理模式无缝切换的界面,其设计直接影响HF的训练数据格式和模型行为。SmolLM3的对话模板允许用户在对话过程中控制推理模式。用户可以通过在系统提示词(systemprompt)中包含/think和/no_think标签来分别激活推理或非推理模式。在非推理模式下,HF会用空的思考块预填充模型的响应(类似于Qwen3),以确保直接回答,无需显式推理过程。SmolLM3支持工具调用(toolcalling),其对话模板包含了两个独立的工具描述部分:XMLTools和PythonTools。事实证明,这种特定的分类在HF实验中有助于模型准确理解这两种格式的工具定义。
对话模板为两种推理模式提供了默认的系统消息,以及一个元数据部分,包括日期、知识截止日期和当前的推理模式。用户可以通过提供一个带有system角色的消息来替换默认系统消息。元数据部分可以通过在系统提示词中使用/system_override标签排除,为特定用途提供了灵活性。
在推理中期训练阶段(HF在1400亿个词元的一般推理数据上训练了模型)之后,HF继续进行监督式微调(SupervisedFinetuning,SFT),以整合数学、代码、通用推理、指令遵循、多语言能力和工具调用等方面的推理和非推理双模式能力。训练一个双模式模型需要在数据混合比例上仔细平衡,以在所有目标领域保持两种模式下的强大性能。为了评估SmolLM3在整个训练过程中的表现,HF追踪了以下domains:数学、代码、通用推理、指令遵循和多语言能力。
在构建推理模式数据集时,HF遇到的主要挑战是某些领域缺乏包含推理过程痕迹的数据集。为了弥补这一不足,HF生成了合成数据(syntheticdata):在推理模式下提示Qwen3-32B,使用现有非推理数据集中的提示词。这使HF能够提高模型最初在推理模式下表现不佳的领域(例如多轮对话和日常对话)的性能。
HF最终的数据混合비율是广泛消融实验的结果,这些实验بررسی了推理模式和非推理模式词元之间的最佳比例以及各模式内部组成。最终的SFT数据集包含18亿个词元:10亿个非推理模式词元和8亿个推理模式词元,共包含12个非推理数据集和10个包含推理过程痕迹的数据集。HF训练了4个世代(~80亿词元),使用BFD(best-fitdecreasing)packing技术,并对用户轮次和工具调用结果的损失进行掩码。
HF将发布此数据混合比例以及完整的训练脚本,以便社区能够复现并利用HF的工作。
SFT步骤后,HF进行了新一轮的模型对齐,结合使用了用于非推理模式的Tulu3偏好数据集以及HF从Qwen3-32B和Qwen3-0. 6B生成的用于推理模式的新合成偏好对。为了确保非思考数据集充分覆盖所有领域,HF生成了互补的思考模式偏好对。HF选择了Qwen3-32B的生成结果作为“chosen”(优选),将Qwen3-0. 6B的回复作为“rejected”(拒绝),用于与锚定偏好优化(AnchoredPreferenceOptimization,APO)对齐。
锚定偏好优化(APO)是直接偏好优化(DirectPreferenceOptimization,DPO)的一种变体,它提供了一个更稳定的优化目标。在DPO中,奖励函数衡量的是训练过程中序列的概率与训练开始时模型(参考模型)的概率的对数比率(log-ratio):
这里的控制优化中的模型相对于参考模型可以改变多少。DPO损失函数优化的是由提示词x、优选响应和拒绝响应组成的三元组:
APO目标函数已被证明更加稳定,HF在内部消融实验中也观察到了更高的下游任务性能。
虽然下游评估显示在数学、科学、指令遵循、编码、聊天和多语言任务上有所改进,但HF观察到长上下文基准测试(如RULER)的性能有所下降。HF将这种下降追溯到推理中期训练阶段,该阶段对推理能力的侧重影响了长上下文性能。此外,APO训练数据限制在24k词元,因为HF的推理数据集绝大部分长度低于此值。
为了减轻这种性能下降,HF探索了模型合并作为一种解决方案。
模型合并是一种常用且强大的技术,它可以在不增加集成计算开销或需要额外训练的情况下,结合不同模型的优点。HF使用MergeKit库执行模型合并,该库包含多种合并方法,例如线性合并和非线性合并。
HF的合并方案包括两个步骤:
将每个APO检查点整合成一个模型“汤”(modelsoup)。
将该模型汤与在长上下文方面表现出色的中期训练检查点结合。事实证明,采用权重为0. 9(APO模型汤)和0. 1(中期训练检查点)的线性合并取得了最佳性能。HF成功地恢复了基础模型在最高128k上下文长度下在RULER上的得分。
由此产生的模型就是HF今天发布的检查点。它在广泛的任务上保持了性能。接下来,来看看基础模型和指令模型的评估结果。
HF评估了SmolLM3的基础模型以及推理和非推理模式下的指令模型。首先介绍基础模型的性能!
下图显示了SmolLM3在评估知识、推理、数学和编码能力的12个流行基准测试中的胜率。SmolLM3持续超越其他30亿参数模型,并与包括Qwen3-4B和Gemma3-4B在内的更大模型取得了具有竞争力的性能。

SmolLM3在知识和推理基准测试(HellaSwag,ARC,BoolQ)中排名第一或第二,显示出在这些核心能力上的强大表现。数学和编码性能在30亿参数级别中具有竞争力。长上下文性能在Ruler64k测试中显示模型能有效处理扩展序列。
在评估多语言基准测试(包括GlobalMMLU,MLMMHellaSwag,Flores-200,Belebele,涵盖知识、常识推理、文本理解和翻译等测试)时,模型在五种主要的欧洲语言中表现出强大的多语言性能。这表明SmolLM3在英语之外也能保持consistent的性能。
总的来说,基础模型在许多领域都表现出了非常强大的性能。接下来看看指令模型的性能如何。
由于SmolLM3既有指令模式也有推理模式,HF需要在两种模式下对模型进行评估,并与具有相同能力的其他模型进行比较。
HF将SmolLM3与其他30亿参数的非推理模型进行评估,并将其与Qwen3推理模型在“不思考”模式下跨多个基准测试进行比较。如下图所示,SmolLM3性能超越了其他30亿参数的非推理模型,包括Llama3. 23BInstruct和Qwen2.53BInstruct,并在推理模型中处于效率的黄金地带,显著超越了Qwen31. 7B,同时以更低的计算成本接近了40亿参数模型的性能。
因此,指令模型恰好处于性能和成本的帕累托前沿(paretofront)。接下来看看推理模型的表现!
启用扩展思考(extendedthinking)后评估SmolLM3的推理能力时,模型在绝大多数基准测试中的性能相比其非推理版本都有显著提升。在AIME2025(36. 7%vs9. 3%)、LiveCodeBench上的竞争性编程(30. 0%vs15. 2%),以及GPQADiamond上的研究生级别推理(41. 7%vs35. 7%)等挑战性任务中,HF观察到显著的提升。
虽然Qwen34B通常在思考和非思考模式下都取得最高分,SmolLM3在30亿参数类别的模型中表现出色,特别是在数学推理和复杂问题解决任务中。模型的双模式能力允许用户在更快速的推理和更彻底的思考分析之间进行选择。
那么最后一个问题是:如何使用这个模型?

HF建议在采样参数中设置temperature=0. 6和top_p=0. 95。
HF默认启用扩展思考,所以上面的示例会生成带有推理过程痕迹的输出。要在启用和禁用之间选择,您可以通过系统提示词提供/think和/no_think标签,如下面的代码片段所示,这用于禁用扩展思考。如果需要启用扩展思考来生成响应,代码是相同的,只是系统提示词应包含/think而不是/no_think。
SmolLM3支持工具调用(toolcalling)!只需在参数xml_tools中传递您的工具列表(用于标准工具调用),或在参数python_tools中传递工具列表(用于在代码块中调用Python函数等工具)。
HF发布了SmolLM3,一个小型、长上下文、多语言的推理模型,支持最高128k的上下文长度。除了模型检查点,HF还公开了完整的训练方案,包括预训练、中期训练、后训练和合成数据生成,以及相关数据集(即将发布)。HF希望这个模型能对社区有所帮助,并且开放的方案能让其他团队在此基础上进行改进。
模型集合(包含量化检查点):链接
SmolLMGitHub仓库(包含预训练配置和评估代码):https ://github. com/huggingface/smollm
HF的HuggingFace主页:https ://huggingface. co/HuggingFaceTB```
添加微信,备注”LLM“进入大模型技术交流群
如果你觉得这篇文章对你有帮助,别忘了点个赞、送个喜欢

/作者:致Great


文章作者: ZejunCao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZejunCao !
  目录