ONNX 模型库
返回模型

说明文档

SmolLM2

image/png

目录

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

模型概述

SmolLM2 是一系列紧凑型语言模型,提供三种规模:135M、360M 和 1.7B 参数。它们能够解决广泛的任务,同时足够轻量,可以在设备上运行。

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

得益于 Argilla 开发的数据集,如 Synth-APIGen-v0.1,指令模型还支持文本重写、摘要和函数调用(1.7B 版本)等任务。

你可以在这里找到 SFT 数据集:https://huggingface.co/datasets/HuggingFaceTB/smol-smoltalk,微调代码在:https://github.com/huggingface/alignment-handbook/tree/main/recipes/smollm2

如何使用

Transformers

pip install transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "HuggingFaceTB/SmolLM2-135M-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 gravity?"}]
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-135M-Instruct --device cpu

评估

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

基础预训练模型

指标 SmolLM2-135M-8k SmolLM-135M
HellaSwag 42.1 41.2
ARC (平均) 43.9 42.4
PIQA 68.4 68.4
MMLU (填空) 31.5 30.2
CommonsenseQA 33.9 32.7
TriviaQA 4.1 4.3
Winogrande 51.3 51.3
OpenBookQA 34.6 34.0
GSM8K (5-shot) 1.4 1.0

指令模型

指标 SmolLM2-135M-Instruct SmolLM-135M-Instruct
IFEval (平均 prompt/inst) 29.9 17.2
MT-Bench 19.8 16.8
HellaSwag 40.9 38.9
ARC (平均) 37.3 33.9
PIQA 66.3 64.0
MMLU (填空) 29.3 28.3
BBH (3-shot) 28.2 25.2
GSM8K (5-shot) 1.4 1.4

局限性

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

训练

模型

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

硬件

  • GPU: 64 H100

软件

许可证

Apache 2.0

引用

@misc{allal2024SmolLM2,
      title={SmolLM2 - with great data, comes great performance}, 
      author={Loubna Ben Allal and Anton Lozhkov and Elie Bakouch and Gabriel Martín Blázquez and Lewis Tunstall and Agustín Piqueres and Andres Marafioti and Cyril Zakka and Leandro von Werra and Thomas Wolf},
      year={2024},
}

lilmeaty/SmolLM2-135M-Instruct

作者 lilmeaty

text-generation transformers
↓ 1 ♥ 1

创建时间: 2025-01-16 15:39:35+00:00

更新时间: 2025-01-16 15:40:18+00:00

在 Hugging Face 上查看

文件 (21)

.gitattributes
README.md
all_results.json
config.json
eval_results.json
generation_config.json
merges.txt
model.safetensors
onnx/model.onnx ONNX
onnx/model_fp16.onnx ONNX
onnx/model_q4.onnx ONNX
onnx/model_q4f16.onnx ONNX
runs/Oct31_10-14-22_ip-26-0-174-36/events.out.tfevents.1730370128.ip-26-0-174-36.3239327.0
runs/Oct31_10-14-22_ip-26-0-174-36/events.out.tfevents.1730376056.ip-26-0-174-36.3239327.1
special_tokens_map.json
tokenizer.json
tokenizer_config.json
train_results.json
trainer_state.json
training_args.bin
vocab.json