ONNX 模型库
返回模型

说明文档

SmolLM3

image/png

目录

  1. 模型概述
  2. 使用方法
  3. 评估结果
  4. 训练
  5. 局限性
  6. 许可证

模型概述

SmolLM3 是一个拥有 30 亿参数的语言模型,旨在突破小模型的边界。它支持 6 种语言、高级推理和长上下文。SmolLM3 是一个完全开放的模型,在 3B-4B 规模上提供强大的性能。

image/png

该模型是一个仅解码器的 Transformer,采用 GQA 和 NoPE(比例为 3:1),在 11.2T token 上进行了预训练,使用了包含网页、代码、数学和推理数据的阶段性课程。后训练包括在 140B 推理 token 上进行的中期训练,随后是监督微调和通过锚定偏好优化(APO)进行的对齐。

主要特性

  • 针对混合推理优化的指令模型
  • 完全开放的模型:开放权重 + 完整的训练细节,包括公开的数据混合方案和训练配置
  • 长上下文:在 64k 上下文上训练,使用 YARN 外推支持多达 128k token
  • 多语言:原生支持 6 种语言(英语、法语、西班牙语、德语、意大利语和葡萄牙语)

更多详情请参阅我们的博客文章:https://hf.co/blog/smollm3

使用方法

Transformers.js

import { pipeline, TextStreamer } from \"@huggingface/transformers\";

// Create a text generation pipeline
const generator = await pipeline(
  \"text-generation\",
  \"HuggingFaceTB/SmolLM3-3B-ONNX\",
  { dtype: \"q4f16\", device: \"webgpu\" },
);

// Define the model inputs
const thinking = true; // Whether the model should think before answering
const messages = [
  {
    role: \"system\",
    content: \"You are SmolLM, a language model created by Hugging Face.\"
      + (thinking ? \"/think\" : \"/no_think\")
  },
  { role: \"user\", content: \"Solve the equation x^2 - 3x + 2 = 0\" },
];

// Generate a response
const output = await generator(messages, {
  max_new_tokens: 1024,
  streamer: new TextStreamer(generator.tokenizer, { skip_prompt: true, skip_special_tokens: true }),
});
console.log(output[0].generated_text.at(-1).content);

ONNXRuntime

from transformers import AutoConfig, AutoTokenizer
import onnxruntime
import numpy as np
from huggingface_hub import hf_hub_download

# 1. Load config, processor, and model
model_id = \"HuggingFaceTB/SmolLM3-3B-ONNX\"
config = AutoConfig.from_pretrained(model_id)
tokenizer = AutoTokenizer.from_pretrained(model_id)
model_path = hf_hub_download(repo_id=model_id, filename=\"onnx/model_q4.onnx\") # Download the graph
hf_hub_download(repo_id=model_id, filename=\"onnx/model_q4.onnx_data\") # Download the model weights
decoder_session = onnxruntime.InferenceSession(model_path)

## Set config values
num_key_value_heads = config.num_key_value_heads
head_dim = config.hidden_size // config.num_attention_heads
num_hidden_layers = config.num_hidden_layers
eos_token_id = config.eos_token_id

# 2. Prepare inputs
messages = [
  { \"role\": \"system\", \"content\": \"/no_think\" },
  { \"role\": \"user\", \"content\": \"What is the capital of France?\" },
]
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors=\"np\")
input_ids = inputs['input_ids']
attention_mask = inputs['attention_mask']
batch_size = input_ids.shape[0]
past_key_values = {
    f'past_key_values.{layer}.{kv}': np.zeros([batch_size, num_key_value_heads, 0, head_dim], dtype=np.float32)
    for layer in range(num_hidden_layers)
    for kv in ('key', 'value')
}
position_ids = np.tile(np.arange(0, input_ids.shape[-1]), (batch_size, 1))

# 3. Generation loop
max_new_tokens = 1024
generated_tokens = np.array([[]], dtype=np.int64)
for i in range(max_new_tokens):
  logits, *present_key_values = decoder_session.run(None, dict(
      input_ids=input_ids,
      attention_mask=attention_mask,
      position_ids=position_ids,
      **past_key_values,
  ))

  ## Update values for next generation loop
  input_ids = logits[:, -1].argmax(-1, keepdims=True)
  attention_mask = np.concatenate([attention_mask, np.ones_like(input_ids, dtype=np.int64)], axis=-1)
  position_ids = position_ids[:, -1:] + 1
  for j, key in enumerate(present_key_values):
    past_key_values[key] = present_key_values[j]

  generated_tokens = np.concatenate([generated_tokens, input_ids], axis=-1)
  if (input_ids == eos_token_id).all():
    break

  ## (Optional) Streaming
  print(tokenizer.decode(input_ids[0]), end='', flush=True)
print()

# 4. Output result
print(tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0])

评估结果

在本节中,我们报告 SmolLM3 模型的评估结果。除非另有说明,所有评估均为零样本,我们使用 lighteval 运行它们。

我们以粗体突出显示最佳分数,以<u>下划线</u>突出显示第二佳分数。

指令模型

无扩展思考

非推理模型和推理模型在非思考模式下的评估结果。我们以粗体突出显示最佳和第二佳分数。

类别 指标 SmoLLM3-3B Qwen2.5-3B Llama3.1-3B Qwen3-1.7B Qwen3-4B
高中数学竞赛 AIME 2025 <u>9.3</u> 2.9 0.3 8.0 17.1
数学问题求解 GSM-Plus 72.8 <u>74.1</u> 59.2 68.3 82.1
竞赛编程 LiveCodeBench v4 <u>15.2</u> 10.5 3.4 15.0 24.9
研究生级别推理 GPQA Diamond <u>35.7</u> 32.2 29.4 31.8 44.4
指令遵循 IFEval 76.7 65.6 71.6 <u>74.0</u> 68.9
对齐 MixEval Hard 26.9 <u>27.6</u> 24.9 24.3 31.6
工具调用 BFCL <u>92.3</u> - <u>92.3</u> * 89.5 95.0
多语言问答 Global MMLU <u>53.5</u> 50.54 46.8 49.5 65.1

(*): 这是一个工具调用微调版本

扩展思考

SmolLM3 和 Qwen3 模型在推理模式下的评估结果:

类别 指标 SmoLLM3-3B Qwen3-1.7B Qwen3-4B
高中数学竞赛 AIME 2025 <u>36.7</u> 30.7 58.8
数学问题求解 GSM-Plus <u>83.4</u> 79.4 88.2
竞赛编程 LiveCodeBench v4 30.0 <u>34.4</u> 52.9
研究生级别推理 GPQA Diamond <u>41.7</u> 39.9 55.3
指令遵循 IFEval 71.2 <u>74.2</u> 85.4
对齐 MixEval Hard 30.8 <u>33.9</u> 38.0
工具调用 BFCL <u>88.8</u> <u>88.8</u> 95.5
多语言问答 Global MMLU <u>64.1</u> 62.3 73.3

基础预训练模型

英语基准测试

注意:除非另有说明,所有评估均为零样本。对于 Ruler 64k 评估,我们对具有 32k 上下文的 Qwen 模型应用 YaRN 来外推上下文长度。

类别 指标 SmolLM3-3B Qwen2.5-3B Llama3-3.2B Qwen3-1.7B-Base Qwen3-4B-Base
推理与常识 HellaSwag 76.15 74.19 <u>75.52</u> 60.52 74.37
ARC-CF (平均) 65.61 59.81 58.58 55.88 <u>62.11</u>
Winogrande 58.88 61.41 58.72 57.06 <u>59.59</u>
CommonsenseQA <u>55.28</u> 49.14 60.60 48.98 52.99
知识与理解 MMLU-CF (平均) <u>44.13</u> 42.93 41.32 39.11 47.65
MMLU Pro CF <u>19.61</u> 16.66 16.42 18.04 24.92
MMLU Pro MCF <u>32.70</u> 31.32 25.07 30.39 41.07
PIQA 78.89 78.35 <u>78.51</u> 75.35 77.58
OpenBookQA 40.60 40.20 <u>42.00</u> 36.40 42.40
BoolQ 78.99 73.61 <u>75.33</u> 74.46 74.28
数学与代码
编码与数学 HumanEval+ 30.48 34.14 25.00 <u>43.29</u> 54.87
MBPP+ 52.91 52.11 38.88 <u>59.25</u> 63.75
MATH (4-shot) <u>46.10</u> 40.10 7.44 41.64 51.20
GSM8k (5-shot) 67.63 <u>70.13</u> 25.92 65.88 74.14
长上下文
Ruler 32k 76.35 75.93 <u>77.58</u> 70.63 83.98
Ruler 64k <u>67.85</u> 64.90 72.93 57.18 60.29
Ruler 128k 61.03 <u>62.23</u> 71.30 43.03 47.23

多语言基准测试

类别 指标 SmolLM3 3B Base Qwen2.5-3B Llama3.2 3B Qwen3 1.7B Base Qwen3 4B Base
主要支持语言
法语 MLMM Hellaswag 63.94 57.47 57.66 51.26 <u>61.00</u>
Belebele 51.00 <u>51.55</u> 49.22 49.44 55.00
Global MMLU (CF) <u>38.37</u> 34.22 33.71 34.94 41.80
Flores-200 (5-shot) 62.85 61.38 <u>62.89<u/u> 58.68 65.76
西班牙语 MLMM Hellaswag 65.85 58.25 59.39 52.40 <u>61.85</u>
Belebele 47.00 <u>48.88</u> 47.00 47.56 50.33
Global MMLU (CF) <u>38.51</u> 35.84 35.60 34.79 41.22
Flores-200 (5-shot) <u>48.25</u> 50.00 44.45 46.93 50.16
德语 MLMM Hellaswag 59.56 49.99 53.19 46.10 <u>56.43</u>
Belebele <u>48.44</u> 47.88 46.22 48.00 53.44
Global MMLU (CF) <u>35.10</u> 33.19 32.60 32.73 38.70
Flores-200 (5-shot) 56.60 50.63 <u>54.95</u> 52.58 50.48
意大利语 MLMM Hellaswag 62.49 53.21 54.96 48.72 <u>58.76</u>
Belebele <u>46.44</u> 44.77 43.88 44.00 48.78
Global MMLU (CF) <u>36.99</u> 33.91 32.79 35.37 39.26
Flores-200 (5-shot) <u>52.65<u/> 54.87 48.83 48.37 49.11
葡萄牙语 MLMM Hellaswag 63.22 57.38 56.84 50.73 <u>59.89</u>
Belebele 47.67 49.22 45.00 44.00 50.00
Global MMLU (CF) <u>36.88</u> 34.72 33.05 35.26 40.66
Flores-200 (5-shot) <u>60.93</u> 57.68 54.28 56.58 63.43

该模型还接受过阿拉伯语(标准)、中文和俄语数据的训练,但与上述 6 种语言相比,这些语言的 token 数量较少。我们报告这些语言的性能仅供参考。

类别 指标 SmolLM3 3B Base Qwen2.5-3B Llama3.2 3B Qwen3 1.7B Base Qwen3 4B Base
其他支持语言
阿拉伯语 Belebele 40.22 44.22 <u>45.33</u> 42.33 51.78
Global MMLU (CF) 28.57 28.81 27.67 <u>29.37</u> 31.85
Flores-200 (5-shot) <u>40.22</u> 39.44 44.43 35.82 39.76
中文 Belebele 43.78 44.56 <u>49.56</u> 48.78 53.22
Global MMLU (CF) 36.16 33.79 <u>39.57</u> 38.56 44.55
Flores-200 (5-shot) 29.17 33.21 31.89 25.70 <u>32.50</u>
俄语 Belebele <u>47.44</u> 45.89 <u>47.44</u> 45.22 51.44
Global MMLU (CF) <u>36.51</u> 32.47 34.52 34.83 38.80
Flores-200 (5-shot) 47.13 48.74 50.74 <u>54.70</u> 60.53

训练

模型

  • 架构: Transformer 解码器
  • 预训练 token: 11T
  • 精度: bfloat16

软件与硬件

开放资源

这是一张包含所有训练细节的信息图

  • 用于预训练的数据集可以在这个合集中找到,用于中期训练和后训练的数据集将稍后上传
  • 训练和评估配置及代码可以在 huggingface/smollm 仓库中找到。

image/png

局限性

SmolLM3 可以生成各种主题的文本,但生成的内容可能并不总是事实准确、逻辑一致,或者可能存在训练数据中的偏见。这些模型应作为辅助工具使用,而不是确定性的信息来源。用户应始终核实重要信息,并批判性地评估任何生成的内容。

许可证

Apache 2.0

Eterna2/SmolLM3-3B-ONNX

作者 Eterna2

text-generation transformers.js
↓ 1 ♥ 1

创建时间: 2025-10-28 15:49:50+00:00

更新时间: 2025-07-14 21:57:00+00:00

在 Hugging Face 上查看

文件 (24)

.gitattributes
README.md
chat_template.jinja
config.json
generation_config.json
onnx/model.onnx ONNX
onnx/model.onnx_data
onnx/model_bnb4.onnx ONNX
onnx/model_bnb4.onnx_data
onnx/model_fp16.onnx ONNX
onnx/model_fp16.onnx_data
onnx/model_int8.onnx ONNX
onnx/model_int8.onnx_data
onnx/model_q4.onnx ONNX
onnx/model_q4.onnx_data
onnx/model_q4f16.onnx ONNX
onnx/model_q4f16.onnx_data
onnx/model_quantized.onnx ONNX
onnx/model_quantized.onnx_data
onnx/model_uint8.onnx ONNX
onnx/model_uint8.onnx_data
special_tokens_map.json
tokenizer.json
tokenizer_config.json