说明文档
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-2k、Magpie-Pro-300K-Filtered、StarCoder2-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
创建时间: 2024-07-15 23:02:44+00:00
更新时间: 2024-09-04 15:37:45+00:00
在 Hugging Face 上查看