Hugging Face開源頂級模型:雙模式推理+128K上下文,最強3B
今天凌晨,全球著名大模型開放平臺Hugging Face開源了頂級小參數(shù)模型SmolLM3。
SmolLM3只有30億參數(shù),性能卻大幅度超過了Llama-3.2-3B 、Qwen2.5-3B等同類開源模型。它擁有128k上下文窗口,支持英語、法語、西班牙語、德語等6種語言。也支持深度思考和非思考雙推理模式,用戶可以靈活切換。

值得一提的是,SmolLM3已經(jīng)把架構(gòu)細節(jié)、數(shù)據(jù)混合方式、三階段預(yù)訓(xùn)練以及構(gòu)建混合推理模型的方法全部開放了,有助于開發(fā)人員深度研究或優(yōu)化自己的模型。

基礎(chǔ)模型:https://huggingface.co/HuggingFaceTB/SmolLM3-3B-Base
推理和指導(dǎo)模型:https://huggingface.co/HuggingFaceTB/SmolLM3-3B
Hugging Face的聯(lián)合創(chuàng)始人Clement Delangue和Thomas Wolf都對該模型進行了強烈推薦,認為是3B領(lǐng)域的SOTA模型,也非常適合用于開源模型的研究。


SmolLM3架構(gòu)簡單介紹
在架構(gòu)方面,SmolLM3 采用了 Transformer 解碼器架構(gòu),與 SmolLM2 類似,基于 Llama 進行了一些關(guān)鍵修改以提高效率和長上下文性能。它使用了分組查詢注意力,16 個注意力頭共享 4 個查詢,在保持全多頭注意力性能的同時節(jié)省了推理時的內(nèi)存。
訓(xùn)練中采用了文檔內(nèi)掩碼,確保同一訓(xùn)練序列中不同文檔的標記不會相互關(guān)注,有助于長上下文訓(xùn)練。還運用了 NoPE 技術(shù),有選擇地從每第 4 層移除旋轉(zhuǎn)位置嵌入,改善長上下文性能而不影響短上下文能力。

訓(xùn)練配置方面,模型參數(shù)為 3.08B,初始化采用 N (0, std=0.02),有 36 層,Rope theta為50k,序列長度4096,批處理大小236萬tokens,優(yōu)化器為AdamW(eps=1e-8,beta1=0.8,beta2=0.95),峰值學(xué)習(xí)率 2e-4,梯度裁剪 1.0,權(quán)重衰減0.1。

參考 OLMo 2,從嵌入層移除權(quán)重衰減以提高訓(xùn)練穩(wěn)定性。訓(xùn)練使用 nanotron 框架,datatrove 進行數(shù)據(jù)處理,lighteval 進行評估,在384塊H100 GPU 上訓(xùn)練了 24天,分布式訓(xùn)練設(shè)置為 48 個節(jié)點,每個節(jié)點8個H100(80 GB),模型通過張量并行(TP=2)分布在 2 個 GPU 上,一個節(jié)點容納 4 個模型實例,再分布到 384 個節(jié)點。
訓(xùn)練數(shù)據(jù)和三階段混合訓(xùn)練方法
數(shù)據(jù)混合和訓(xùn)練階段遵循 SmolLM2 的多階段方法,采用三階段訓(xùn)練策略,在11.2 萬億 tokens 上訓(xùn)練,混合了網(wǎng)絡(luò)、數(shù)學(xué)和代碼數(shù)據(jù),且比例不斷變化。
階段 1 為穩(wěn)定階段(0T→8T tokens),建立強大的通用能力,網(wǎng)絡(luò)數(shù)據(jù)占85%(12%為多語言),包括FineWeb-Edu、DCLM、FineWeb2 和 FineWeb2-HQ;代碼數(shù)據(jù)占 12%,包括The Stack v2(16 種編程語言)、StarCoder2 拉取請求、Jupyter 和 Kaggle 筆記本、GitHub 問題和 StackExchange;數(shù)學(xué)數(shù)據(jù)占3%,包括FineMath3 + 和 InfiWebMath3+。

階段 2 為穩(wěn)定階段(8T→10T tokens),引入更高質(zhì)量的數(shù)學(xué)和代碼數(shù)據(jù)集,同時保持良好的網(wǎng)絡(luò)覆蓋,網(wǎng)絡(luò)數(shù)據(jù)占 75%(12% 為多語言),代碼數(shù)據(jù)占15%(添加了 Stack-Edu),數(shù)學(xué)數(shù)據(jù)占 10%(引入了 FineMath4+、InfiWebMath4 + 和 MegaMath)。
階段 3 為衰減階段(10T→11.1T tokens),進一步增加數(shù)學(xué)和代碼數(shù)據(jù)的采樣,網(wǎng)絡(luò)數(shù)據(jù)占 63%,代碼數(shù)據(jù)占 24%(高質(zhì)量代碼數(shù)據(jù)的上采樣),數(shù)學(xué)數(shù)據(jù)占13%,上采樣數(shù)學(xué)數(shù)據(jù)并引入指令和推理數(shù)據(jù)集,如 OpenMathReasoning。
在中期訓(xùn)練中,進行了長上下文擴展和推理適應(yīng)。長上下文擴展是在主要預(yù)訓(xùn)練后,額外訓(xùn)練 1000 億 tokens 以擴展上下文長度,分兩個階段依次擴展上下文窗口,每個階段500億tokens,先從4k過渡到32k上下文,將 RoPE theta 增加到 150 萬,然后從 32k 過渡到64k 上下文,將 RoPE theta 進一步增加到 500萬,兩個階段都對數(shù)學(xué)、代碼和推理數(shù)據(jù)進行了上采樣。

借鑒 Qwen2.5,使用 YARN 在訓(xùn)練上下文長度之外進行外推,推理時模型可處理高達 128k 的上下文(是 64k 訓(xùn)練長度的 2 倍擴展)。推理中期訓(xùn)練是在擴展模型上下文長度后,訓(xùn)練模型融入推理能力。中期訓(xùn)練數(shù)據(jù)集包含 350億tokens,來自 Open Thought 的 OpenThoughts3-1.2M 和NVIDIA 的 Llama-Nemotron-Post-Training-Dataset-v1.1 的子集,使用 ChatML 聊天模板和包裝打包,訓(xùn)練模型 4 個 epochs(約1400億tokens),并將檢查點用于后續(xù)的 SFT(監(jiān)督微調(diào))階段。
后期訓(xùn)練中,構(gòu)建了聊天模板,用戶可通過在系統(tǒng)提示中包含<code>/think</code>和<code>/no_think</code>標志分別激活推理或非推理模式,在非推理模式下,會用空的思考塊預(yù)填充模型的響應(yīng)。
聊天模板還包含 XML 工具和 Python 工具兩個不同的工具描述部分,提供了兩種推理模式的默認系統(tǒng)消息以及包含日期、知識截止日期和當前推理模式的元數(shù)據(jù)部分,用戶可通過在系統(tǒng)提示中使用<code>/system_override</code>標志排除元數(shù)據(jù)部分。
SFT和APO
SFT在推理中期訓(xùn)練階段之后進行,該階段在 1400 億 tokens 的通用推理數(shù)據(jù)上訓(xùn)練模型,進而在數(shù)學(xué)、代碼、通用推理、指令遵循、多語言和工具調(diào)用方面融合推理和非推理模式的能力。
為解決某些領(lǐng)域缺乏包含推理軌跡的數(shù)據(jù)集的問題,通過在現(xiàn)有非推理數(shù)據(jù)集的提示下提示 Qwen3-32B 在推理模式下來生成合成數(shù)據(jù)。最終的 SFT數(shù)據(jù)集包含18億tokens,其中 10 億為非推理模式,8 億為推理模式,包括12個非推理數(shù)據(jù)集和 10 個帶有推理軌跡的數(shù)據(jù)集,使用 BFD打包訓(xùn)練 4 個 epochs(約 80 億 tokens),對用戶輪次和工具調(diào)用結(jié)果的損失進行掩碼。

采用APO(錨定偏好優(yōu)化)進行離策略模型對齊,這是直接偏好優(yōu)化的一種變體,提供更穩(wěn)定的優(yōu)化目標。APO 步驟使用 Tulu3 偏好數(shù)據(jù)集(非推理模式)和新的合成偏好對(推理模式),合成偏好對由 Qwen3-32B 和 Qwen3-0.6B 生成。

由于在長上下文基準上觀察到性能下降,采用模型合并來緩解使用 MergeKit 庫,先將每個 APO 檢查點創(chuàng)建一個模型混合體,然后將模型混合體與具有強大長內(nèi)容性能的中期訓(xùn)練檢查點組合,APO 模型混合體和中期訓(xùn)練檢查點的線性合并權(quán)重分別為 0.9 和 0.1,最終模型恢復(fù)了基礎(chǔ)模型在高達 128k tokens 上下文上的 RULER 分數(shù),并在廣泛的任務(wù)中保持高性能。



































