SmolLM3:小身材大能量的多语言长文本推理模型
专为效率而生的3B参数开源模型,支持128K上下文与双语模式推理
为什么需要小语言模型?
在大型语言模型参数规模不断膨胀的今天,高效能小模型正成为行业刚需。SmolLM3作为仅3B参数的全开源模型,在多项基准测试中超越Llama-3.2-3B和Qwen2.5-3B,甚至可与4B级模型(Qwen3 & Gemma3)竞争。它的核心优势在于:
-
✅ 128K长上下文处理(NoPE+YaRN技术) -
✅ 英/法/西/德/意/葡6语支持 -
✅ 双推理模式(思考模式/直答模式) -
✅ 仅3B参数的部署高效率
一、模型架构设计解析
1.1 核心技术创新
.png)
技术组件 | 实现原理 | 优势体现 |
---|---|---|
分组注意力(GQA) | 4组注意力头替代传统多头注意力 | 减少75%的KV缓存占用 |
动态位置编码(NoPE) | 每4层移除旋转位置编码 | 提升长文本性能不损失短文本 |
文档内掩码 | 同文档token可互见,跨文档token隔离 | 加速长文本训练稳定性 |
权重衰减优化 | 移除嵌入层权重衰减 | 提升训练稳定性 |
1.2 分布式训练配置
-
硬件:384张H100 GPU -
训练时长:24天 -
关键参数: -
序列长度:4096 -
全局批大小:2.36M tokens -
学习率:2e-4(WSD调度器)
-
-
训练框架:https://github.com/huggingface/nanotron
二、三阶段训练策略
2.1 渐进式数据混合方案
.png)
阶段1:基础能力构建(0→8T tokens)
数据类型 | 占比 | 数据源说明 |
---|---|---|
网页数据 | 85% | FineWeb-Edu, DCLM等 |
代码数据 | 12% | The Stack v2, GitHub issues |
数学数据 | 3% | FineMath3+, InfiWebMath3+ |
阶段2:能力强化(8→10T tokens)
-
数学数据↑至10%(新增MegaMath) -
代码数据↑至15%(新增Stack-Edu) -
网页数据↓至75%
阶段3:专项突破(10→11.1T tokens)
-
代码数据↑至24% -
数学数据↑至13% -
网页数据↓至63%
🔍 完整训练配置见:https://huggingface.co/datasets/HuggingFaceTB/smollm3-configs
三、推理模式双引擎
3.1 思考模式 vs 直答模式
# 启用思考模式(默认)
messages = [
{"role": "user", "content": "解释量子纠缠现象"}
]
# 启用直答模式
messages = [
{"role": "system", "content": "/no_think"},
{"role": "user", "content": "解释量子纠缠现象"}
]
3.2 性能对比实测
测试集 | 思考模式 | 直答模式 |
---|---|---|
AIME 2025 | 36.7% | 9.3% |
LiveCodeBench | 30.0% | 15.2% |
GPQA Diamond | 41.7% | 35.7% |
💡 模式选择建议:复杂问题用思考模式,简单查询用直答模式
四、工具调用实战指南
4.1 XML工具调用示例
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("HuggingFaceTB/SmolLM3-3B")
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM3-3B")
tools = [{
"name": "get_weather",
"description": "获取城市天气",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}}
}]
messages = [{"role": "user", "content": "巴黎今天气温多少?"}]
inputs = tokenizer.apply_chat_template(
messages,
xml_tools=tools, # 关键参数!
return_tensors="pt"
)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
4.2 Python工具调用
inputs = tokenizer.apply_chat_template(
messages,
python_tools=tools, # 切换工具类型
return_tensors="pt"
)
五、性能基准测试
5.1 基础模型能力对比
.png)
测试基准:HellaSwag/ARC/Winogrande等12项
模型 | 综合胜率 |
---|---|
SmolLM3-3B | ★★★★☆ |
Qwen3-4B | ★★★★★ |
Llama-3.2-3B | ★★★☆☆ |
5.2 多语言能力表现
.png)
测试语言:英/法/西/德/意/葡
测试集:Flores-200, Belebele等
🌐 在非英语测试中保持87%的英语性能一致性
六、技术问答精选
Q1:为什么选择3B参数规模?
在模型大小(3B)与推理效率间找到最佳平衡点,实测显示:
比1.7B模型性能高35% 比4B模型推理速度快2倍 在消费级GPU可部署
Q2:如何实现128K长上下文?
采用两阶段扩展策略:
4K→32K:RoPE theta增至1.5M 32K→64K:RoPE theta增至5M 推理时通过YaRN扩展至128K
Q3:双模式如何影响工具调用?
在工具调用场景中:
思考模式:生成分步推理过程 直答模式:直接输出工具调用指令
两者共享相同的工具解析引擎
七、模型获取与部署
7.1 官方资源
- 基础模型:https://hf.co/HuggingFaceTB/SmolLM3-3B-Base
- 推理模型:https://hf.co/HuggingFaceTB/SmolLM3-3B
- 训练代码:https://github.com/huggingface/smollm
7.2 最低部署要求
设备类型 | 显存要求 | 量化支持 |
---|---|---|
消费级GPU | 8GB | 支持4-bit量化 |
苹果M系列芯片 | 统一内存 | 通过MLX部署 |
云端T4实例 | 16GB | 无需量化直接加载 |
💻 运行示例见第一章代码片段
结语:小模型的未来之路
SmolLM3证明了3B模型在:
-
多语言处理 ✅ -
长文档理解 ✅ -
复杂推理 ✅
场景中具备实用价值。通过公开完整训练配方(架构设计/数据混合/对齐方案),我们期待推动高效模型的发展。正如HuggingFace技术团队所言:
“真正的创新不在于参数规模,而在于如何在有限资源内最大化模型能力”
> 模型试用提示:安装transformers>=4.53.0,使用温度参数temperature=0.6效果最佳