ONNX 模型库
返回模型

说明文档

SmolLM2

image/png

目录

  1. 模型概述
  2. 局限性
  3. 训练
  4. 许可
  5. 引用

模型概述

SmolLM2 是一个紧凑型语言模型系列,包含三个规模:1.35亿、3.6亿和17亿参数。它们能够执行广泛的任务,同时足够轻量可以在设备端运行。更多详情见我们的论文:https://arxiv.org/abs/2502.02737

SmolLM2 相比其前身 SmolLM1 展现出显著的进步,特别是在指令遵循、知识理解和推理能力方面。3.6亿参数模型使用了4万亿个token进行训练,采用多样化数据集组合:FineWeb-Edu、DCLM、The Stack,以及我们新筛选并即将发布的数据集。我们通过使用公共数据集和我们自己策划的数据集进行监督微调(SFT)来开发指令版本。然后我们应用了直接偏好优化(DPO),使用了 UltraFeedback

指令模型还支持文本重写、摘要和函数调用(17亿参数版本)等任务,这要归功于 Argilla 开发的数据集,如 Synth-APIGen-v0.1。 您可以在此处找到SFT数据集:https://huggingface.co/datasets/HuggingFaceTB/smol-smoltalk,微调代码见对齐手册

更多详细信息请参考:https://github.com/huggingface/smollm。您将找到预训练、后训练、评估和本地推理代码。

如何使用

Transformers

pip install transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "HuggingFaceTB/SmolLM2-360M-Instruct"

device = "cuda" # 用于GPU使用,或 "cpu" 用于CPU使用
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
# 如需多个GPU,请安装accelerate并使用 `model = AutoModelForCausalLM.from_pretrained(checkpoint, device_map="auto")`
model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)

messages = [{"role": "user", "content": "What is the capital of France."}]
input_text=tokenizer.apply_chat_template(messages, tokenize=False)
print(input_text)
inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
outputs = model.generate(inputs, max_new_tokens=50, temperature=0.2, top_p=0.9, do_sample=True)
print(tokenizer.decode(outputs[0]))

TRL 中聊天

您也可以使用 TRL CLI 与模型进行终端对话:

pip install trl
trl chat --model_name_or_path HuggingFaceTB/SmolLM2-360M-Instruct --device cpu

Transformers.js

npm i @huggingface/transformers
import { pipeline } from "@huggingface/transformers";

// 创建文本生成管道
const generator = await pipeline(
  "text-generation",
  "HuggingFaceTB/SmolLM2-135M-Instruct",
);

// 定义消息列表
const messages = [
  { role: "system", content: "You are a helpful assistant." },
  { role: "user", content: "What is the capital of France?" },
];

// 生成回复
const output = await generator(messages, { max_new_tokens: 128 });
console.log(output[0].generated_text.at(-1).content);
// "The capital of France is Paris."

评估

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

基础预训练模型

指标 SmolLM2-360M Qwen2.5-0.5B SmolLM-360M
HellaSwag 54.5 51.2 51.8
ARC(平均) 53.0 45.4 50.1
PIQA 71.7 69.9 71.6
MMLU(完形填空) 35.8 33.7 34.4
CommonsenseQA 38.0 31.6 35.3
TriviaQA 16.9 4.3 9.1
Winogrande 52.5 54.1 52.8
OpenBookQA 37.4 37.4 37.2
GSM8K(5样本) 3.2 33.4 1.6

指令模型

指标 SmolLM2-360M-Instruct Qwen2.5-0.5B-Instruct SmolLM-360M-Instruct
IFEval(平均prompt/inst) 41.0 31.6 19.8
MT-Bench 3.66 4.16 3.37
HellaSwag 52.1 48.0 47.9
ARC(平均) 43.7 37.3 38.8
PIQA 70.8 67.2 69.4
MMLU(完形填空) 32.8 31.7 30.6
BBH(3样本) 27.3 30.7 24.4
GSM8K(5样本) 7.43 26.8 1.36

局限性

SmolLM2 模型主要理解和生成英文内容。它们可以生成各种主题的文本,但生成的内容可能并不总是事实准确、逻辑一致,或完全不受训练数据中存在偏见的影响。这些模型应作为辅助工具使用,而非权威信息来源。用户应始终验证重要信息并批判性地评估任何生成的内容。

训练

模型

  • 架构: Transformer解码器
  • 预训练token数: 4万亿
  • 精度: bfloat16

硬件

  • GPU: 64块 H100

软件

许可

Apache 2.0

引用

@misc{allal2025smollm2smolgoesbig,
      title={SmolLM2: When Smol Goes Big -- Data-Centric Training of a Small Language Model},
      author={Loubna Ben Allal and Anton Lozhkov and Elie Bakouch and Gabriel Martín Blázquez and Guilherme Penedo and Lewis Tunstall and Andrés Marafioti and Hynek Kydlíček and Agustín Piqueres Lajarín and Vaibhav Srivastav and Joshua Lochner and Caleb Fahlgren and Xuan-Son Nguyen and Clémentine Fourrier and Ben Burtenshaw and Hugo Larcher and Haojun Zhao and Cyril Zakka and Mathieu Morlon and Colin Raffel and Leandro von Werra and Thomas Wolf},
      year={2025},
      eprint={2502.02737},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2502.02737},
}

HuggingFaceTB/SmolLM2-360M-Instruct

作者 HuggingFaceTB

text-generation transformers
↓ 209.3K ♥ 182

创建时间: 2024-10-31 13:41:35+00:00

更新时间: 2025-09-22 20:44:35+00:00

在 Hugging Face 上查看

文件 (27)

.gitattributes
README.md
all_results.json
config.json
eval_results.json
generation_config.json
merges.txt
model.safetensors
onnx/model.onnx ONNX
onnx/model_bnb4.onnx ONNX
onnx/model_fp16.onnx ONNX
onnx/model_int8.onnx ONNX
onnx/model_q4.onnx ONNX
onnx/model_q4f16.onnx ONNX
onnx/model_quantized.onnx ONNX
onnx/model_uint8.onnx ONNX
runs/Oct31_09-01-58_ip-26-0-172-142/events.out.tfevents.1730365788.ip-26-0-172-142.451351.0
runs/Oct31_09-01-58_ip-26-0-172-142/events.out.tfevents.1730371773.ip-26-0-172-142.451351.1
runs/Oct31_09-19-57_ip-26-0-174-36/events.out.tfevents.1730366818.ip-26-0-174-36.3233632.0
runs/Oct31_09-20-43_ip-26-0-161-142/events.out.tfevents.1730366856.ip-26-0-161-142.1301887.0
special_tokens_map.json
tokenizer.json
tokenizer_config.json
train_results.json
trainer_state.json
training_args.bin
vocab.json