ONNX 模型库
返回模型

说明文档

SmolLM-135M-Instruct

<center> <img src="https://huggingface.co/datasets/HuggingFaceTB/images/resolve/main/banner_smol.png" alt="SmolLM" width="1100" height="600"> </center>

模型概述

SmolLM 是一系列小型语言模型,提供三种参数规模:135M、360M 和 1.7B。

这些模型基于 SmolLM-Corpus 进行训练,这是一个经过筛选的高质量教育和合成数据集合,专为训练 LLM 而设计。更多详细信息请参阅我们的 博客文章

为了构建 SmolLM-Instruct,我们对基础模型进行了微调,使用的是公开可用的数据集。

更新日志

版本 描述
v0.1 SmolLM-Instruct 初始版本。我们在 WebInStructSub 数据集的宽松许可子集上进行微调,并结合 StarCoder2-Self-OSS-Instruct。然后,我们对 135M 和 1.7B 模型在 HelpSteer 上进行了一轮 DPO(直接偏好优化),对 360M 模型使用 argilla/dpo-mix-7k
v0.2 我们更改了微调混合数据集,选择更适合小型模型的组合。我们在一个由 llama3.1-70B 生成的新数据集 everyday-conversations-llama3.1-2kMagpie-Pro-300K-FilteredStarCoder2-Self-OSS-Instruct 以及一小部分 OpenHermes-2.5 上进行训练。

v0.2 版本模型更擅长保持主题相关性,并对标准提示(如问候语和关于其 AI 助手角色的提问)做出适当回应。SmolLM-360M-Instruct (v0.2) 在 AlpacaEval 上相比 SmolLM-360M-Instruct (v0.1) 拥有 63.3% 的胜率。详细信息请见此处

您可以通过在 transformers 代码中指定 revision="v0.1" 来加载 v0.1 版本的模型:

model = AutoModelForCausalLM.from_pretrained("HuggingFaceTB/SmolLM-135M-Instruct", revision="v0.1")

使用方法

本地应用

⚡ 对于本地应用,您可以在以下合集中找到 MLC、GGUF 和 Transformers.js 格式的优化实现,以及快速的浏览器内演示:https://huggingface.co/collections/HuggingFaceTB/local-smollms-66c0f3b2a15b4eed7fb198d0

我们注意到 4bit 量化会降低 135M 和 360M 模型的质量,因此我们对 MLC 使用 q016,对 WebGPU 演示使用 ONNX/Transformers.js 检查点。我们还建议使用 temperature 0.2 和 top-p 0.9。

Transformers

pip install transformers
# pip install transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "HuggingFaceTB/SmolLM-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 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/SmolLM-135M-Instruct --device cpu

局限性

此外,生成的内容可能并不总是事实准确、逻辑一致或完全不含训练数据中存在的偏见,我们建议用户将它们用作辅助工具而非权威来源。我们发现它们可以处理常识问题、创意写作和基础 Python 编程。但它们仅支持英语,可能在算术、编辑任务和复杂推理方面存在困难。更多关于模型能力的详细信息,请参阅我们的博客文章

训练参数

我们使用 alignment-handbook 结合更新日志中提到的数据集训练模型,使用 v0.2 版本的以下参数(大部分来自 Zephyr Gemma 配方):

  • 1 个 epoch
  • 学习率 1e-3
  • 余弦调度
  • 预热比例 0.1
  • 全局批次大小 262k tokens

您可以在此处找到训练配方:https://github.com/huggingface/alignment-handbook/tree/smollm/recipes/smollm

引用

@misc{allal2024SmolLM,
      title={SmolLM - blazingly fast and remarkably powerful}, 
      author={Loubna Ben Allal and Anton Lozhkov and Elie Bakouch and Leandro von Werra and Thomas Wolf},
      year={2024},
}

HuggingFaceTB/SmolLM-135M-Instruct

作者 HuggingFaceTB

text-generation transformers
↓ 207.2K ♥ 134

创建时间: 2024-07-15 23:02:44+00:00

更新时间: 2024-09-04 15:37:45+00:00

在 Hugging Face 上查看

文件 (18)

.gitattributes
README.md
config.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
special_tokens_map.json
tokenizer.json
tokenizer_config.json
vocab.json