SmolLM-1.7B-Instruct 项目介绍
项目概述
SmolLM-1.7B-Instruct 是由 SmolLM 系列语言模型扩展而来的一个版本。SmolLM 系列提供三种尺寸的模型:135M、360M 和 1.7B 参数。该系列模型是基于 SmolLM-Corpus 进行预训练,包含了大量优质的教育和合成数据,专为大语言模型的训练而设计。具体细节可参考项目组的博客文章。
在这个项目中,SmolLM-Instruct 是通过对已公开的数据集进行微调而开发出来的。
项目历史更新
SmolLM-1.7B-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 生成的2000个日常对话数据集 everyday-conversations-llama3.1-2k、Magpie-Pro-300K-Filtered、StarCoder2-Self-OSS-Instruct 和 OpenHermes-2.5 的小子集。v0.2 更擅长回应日常问候和角色相关的标准化提示。
SmolLM-360M-Instruct (v0.2) 在 AlpacaEval 的表现优于其 v0.1 版本,有详细的数据可以在这里找到。
使用方式
本地应用
对于本地应用,项目提供在 MLC、GGUF 和 Transformers.js 格式的优化实现,还提供了快速的浏览器演示。这些可以在以下集合中找到:SmolLM本地集合。项目中注意到4bit量化会降低135M和360M模型的质量,因此使用q016
对 MLC 和 ONNX/Transformers.js 检查点进行 WebGPU 演示。
建议使用的参数为:温度 (temperature) 0.2,top-p 0.9。
使用 Transformers 库
安装 Transformers 库后,通过以下代码可以快速加载和使用模型:
pip install transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "HuggingFaceTB/SmolLM-1.7B-Instruct"
device = "cuda" # 使用GPU或者用"cpu"使用CPU
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
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)
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 CLI 在终端中与模型进行对话:
pip install trl
trl chat --model_name_or_path HuggingFaceTB/SmolLM-1.7B-Instruct --device cpu
模型局限性
需要注意的是,生成内容可能并不总是符合事实、逻辑一致或没有训练数据中的偏见。用户应将其作为辅助工具而非终极信息来源来使用。尽管这些模型可以处理一般知识问题、创意写作和基础的 Python 编程,但仅支持英语,对算术、编辑任务和复杂推理可能存在困难。更多关于模型能力的信息请参阅博客文章。
训练参数
模型使用 alignment-handbook 根据变更日志中提到的数据集进行训练,参数如下(v0.2 大多源于 Zephyr Gemma 配方):
- 1 个 epoch
- 学习率 lr 1e-3
- 余弦调度(cosine schedule)
- 热身比例 0.1
- 全局 batch size 262k tokens
详细的训练配方可以在此处找到:训练配方
引用信息
@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},
}