Smol 模型家族内部
🔳 我们探索了数据集的力量及其在 Hugging Face 小型语言模型家族中的整合,尤其是在 SmolLM2 中
小型语言模型使人工智能对广大用户更易于访问,因为它们可以在智能手机等边缘设备上运行。然而,有一个重要问题——小型模型容量较小,并且对训练数据高度敏感。这就是为什么数据集的质量对它们来说比对大型语言模型(LLM)更重要。
今天,我们将以 Hugging Face 的 SmolLM 家族为例,探讨数据集在训练小型模型中的关键作用,特别关注他们的 SmolLM2 模型。虽然 Hugging Face 的研究人员已经发布了关于所有 SmolLM 和 SmolVLM 模型的广泛材料,但我们认为将所有内容汇集在一处很重要,以突出 Hugging Face 对高质量数据集及其小型人工智能模型训练策略的贡献。
那么,让我们深入了解 Hugging Face 如何通过混合最佳数据集和逐步训练,在小型语言模型中实现最先进的性能。
📨 点击关注!如果你想直接在收件箱中接收我们的文章,请在此订阅
在本期节目中,我们将讨论
- 小型模型训练的秘密
- 一切是如何开始的:从 SmolLM 到 SmolVLM2
- SmolLM 2:训练数据的力量
- 新数据集及其最佳组合
- 多阶段训练策略
- 让 SmolLM2 处理更多文本
- 指令微调和偏好学习
- SmolLM2 的性能
- 结论
- 福利:深入学习资源
小型模型训练的秘密
那么,让小型模型发挥超出其自身能力的关键是什么?有一些关键策略能带来所有不同
- 蒸馏 – 训练一个较小的模型来模仿一个较大的模型,同时保留其知识和技能。
- 量化 – 降低数值数据的精度(例如,每个权重使用更少的比特),使模型更小、更高效。
- 从头开始训练 – 一些小型模型是从头开始设计的,利用精心策划的数据集和优化的架构,以更少的参数最大限度地提高性能。
今天我们将讨论第三种选择——如何通过高质量的训练数据提高模型的推理能力。
由于小型模型的容量较小,用于训练它们的数据比大型模型更重要。小型模型必须经过精心优化,以学习基本知识和推理技能,而不是记忆随机事实。小型模型也对数据中的噪声更敏感,因此仔细选择、过滤和平衡不同来源至关重要。特别是,找到正确的专业数据集组合(例如数学和代码)对于模型有效学习至关重要。
小型模型的训练细节通常不为开发人员所分享。而Hugging Face的研究人员,凭借其对真正开源的坚定承诺,通过创建其小型模型家族——包括 SmolLM、SmolLM2、SmolVLM 和 SmolVLM2——并提供其训练指南,为人工智能和机器学习社区做出了贡献。
一切是如何开始的:从 SmolLM 到 SmolVLM2
所有 SmolLM 模型都由一个共同概念统一吗?
从 2024 年 7 月 16 日 SmolLM 发布之初,Hugging Face 就选择了以下概念的策略
- 构建尽可能强大的小型模型,可在智能手机到笔记本电脑等本地设备上使用。
- 在高质量数据集上训练它们。
- 开发完全开放的模型和数据集。
SmolLM 是他们的第一批小型 AI 模型,有三种尺寸可供选择
- 135M 参数(非常轻量级)
- 360M 参数(平衡)
- 1.7B 参数(仍然很小但更强大)
这标志着高性能、设备端小型语言模型的第一步。SmolLM 实现最先进性能的路径在于使用名为 SmolLM-Corpus 的高质量数据集训练它们,其中包括
- Cosmopedia v2 – 280 亿个 AI 生成的教科书、故事和代码的 Token,涵盖 34,000 多个主题。它混合了 40% 的中学内容(用于更好的常识和科学知识)、30% 的大学水平内容和 30% 的其他来源。
- FineWeb-Edu – 从更广泛的 FineWeb 数据集中选择的 2200 亿个教育网页中的单词。
- Python-Edu – 40 亿个高质量 Python 代码示例的单词。
对于 135M 和 360M 版本的训练,Hugging Face 使用了 SmolLM-Corpus 中的 6000 亿个 Token,而 1.7B 版本则在 1 万亿个 Token 上进行了训练。它们的架构也不同。
135M 和 360M 模型使用分组查询注意力 (GQA) 来加速推理。这意味着多个查询头共享相同的键值对,而不是拥有单独的键值对,以降低计算成本。它们还优先考虑深度而非宽度(更多层,每层更少神经元),以在保持小尺寸的同时提高性能。相反,1.7B 模型的架构类似于传统的 GPT 风格 Transformer。
以下是 SmolLM 模型在常识推理、世界知识和编码技能方面取得的成果
2024 年 11 月 2 日,Hugging Face 发布了 SmolLM2 的三个版本:135M、360M 和 1.7B 参数。
此更新版本通过增强的数据整理(例如额外的自定义数学和代码数据集)和改进的训练技术对其前身进行了改进。为了使其强大,研究人员分几步对其进行了 11 万亿个单词数据的训练。
在 Hugging Face 于 2025 年 2 月 4 日发布 SmolLM2 论文后,SmolLM2 获得了更多关注。我们将在文章中进一步讨论 SmolLM2。
随后在 2024 年 11 月 26 日,Hugging Face 将其 Smol 模型扩展到多模态领域。小型但功能强大的多模态 SmolVLM 可以回答有关图像的问题、描述图片、根据多张图像创建故事、作为普通文本 AI 在没有图像的情况下工作,但不能生成图像。
SmolVLM 基于 Idefics3,并利用 SmolLM2 1.7B 这一较小的语言模型主干,通过增加 RoPE(旋转位置嵌入)基值将上下文窗口扩展到 16,000 个 Token。
SmolVLM 具有以下特点
- 改进的图像压缩: 它使用一种“像素洗牌”策略,更积极地压缩图像数据(与以前的设计相比,减少了 9 倍,以前为 4 倍)。像素洗牌将数据从深度(通道)维度重新排列到空间维度(高度和宽度)。这加快了处理速度并减少了内存使用。
- 视觉 Token 编码: SmolVLM 将图像转换为每 384×384 补丁 81 个视觉 Token,以高效处理大图像。
- 可自定义分辨率: 用户可以调整图像质量以平衡性能和内存使用。
在 SmolVLM 中,开发人员还特别关注了训练数据,因此它在 The Cauldron 和 Docmatix 数据集上进行了训练,重点是文档理解 (25%) 和图像字幕 (18%),以及视觉推理和图表分析等技能。
最初,SmolVLM 仅发布了一个版本——2B 参数,随后(2025 年 1 月 23 日)又发布了两个版本——256M 和 500M。
虽然 SmolVLM 是为图像设计的,但其长上下文能力使其也能处理视频分析。通过从视频中采样多个帧(在简单管道中最多 50 帧),SmolVLM 在视频基准测试中也显示出具有竞争力的性能。
然而,真正的视频推理直到最近,即 2025 年 2 月 20 日才随着 SmolVLM2 的出现而出现,它能够“观看”视频并理解它们——就像你在手机或笔记本电脑上观看电视一样。它可以分析视频片段中发生的事情。
Hugging Face 发布了 SmolVLM2 的三个版本
- 256M 模型: 一个实验性的、甚至更小的模型,它突破了视频模型可以达到的最小尺寸限制。
- 500M 模型: 一个较小的版本,其视频技能几乎与 2.2B 模型相匹配。
- 2.2B 模型: 用于复杂视频任务的主要模型——它非常擅长读取图像中的文本、解决图片中显示的数学问题和回答科学问题。
SmolVLM2 在图像数学问题和科学视觉问题方面优于之前的 SmolVLM 系列,能够理解复杂的图表和照片中的文本。
它还在内存消耗方面击败了其他视频模型。
SmolVLM2 模型是在训练 Meta GenAI 和 Stanford 的 Apollo 视频 LLM 时使用的数据混合上训练的,其中包括“适量的文本数据并保持轻微的视频偏重混合”。
在所有这些小型语言模型中,SmolLM2 为构建具有竞争力的较小型模型提供了实用的指南和策略。所以,是时候深入探讨了!
SmolLM 2:训练数据的力量
大多数语言模型都是在网络文本上训练的,但高质量的 AI 模型还包括专注于数学、编程和遵循指令的专业数据,以提高它们推理和解决复杂问题的能力。
考虑到这一点,SmolLM2 背后的研究人员:
- 评估了不同类型的训练数据(网络文本、代码、数学和指令),以平衡混合以获得最佳性能。
- 创建了新的高质量数据集(FineMath 用于数学,Stack-Edu 用于编码,SmolTalk 用于指令),因为现有数据集太小或质量低下。
- 使用精心设计的多阶段训练过程,逐步调整数据混合,以确保 SmolLM2 有效学习。
让我们按顺序探索一切。
新数据集及其最佳组合
1. 英语数据
研究人员首先在通用网络数据上训练 SmolLM2,然后使用数学和编码数据集对其进行微调。他们专注于两个流行的优质网络数据集
- FineWeb-Edu: 一个专注于教育内容的训练集。它在基于教育的测试中表现更好,例如 MMLU、ARC、OpenBookQA。
- DCLM: 一个包含更多样化、会话性文本的数据集,包括来自在线讨论的见解。结果表明,它在推理和常识测试(HellaSwag、CommonSenseQA)中表现更好,并提供了会话多样性。
由于这两个数据集各有优势,这暗示以不同比例混合它们是一个很好的策略。研究人员发现,60% FineWeb-Edu + 40% DCLM 的混合效果最佳。总的来说,这种方法为 SmolLM2 的训练提供了 5.1 万亿个高质量英语文本 Token。
2. 数学数据:创建新的 FineMath 数据集
由于 OpenWebMath (OWM) 和 InfiMM-WebMath 等数学数据集都不完美,研究人员构建了一个新的改进数据集,名为 FineMath,包含 540 亿个 Token,专注于
- 逐步解决数学问题,而不仅仅是公式。
- 中学到高中水平的数学,使其更平衡。
- 通过 AI 评分和选择最佳数学内容进行质量过滤。
FineMath 的表现远优于旧数据集,基本数学问题的准确率翻倍,高级数学性能提高了 6 倍。这表明更好、更结构化的数学数据能带来更强大的人工智能推理能力。
3. 代码数据:Stack-Edu
对编程代码进行模型训练也能提高其整体推理能力。为了提升 SmolLM2 的编码技能,Hugging Face 创建了 Stack-Edu,这是 StarCoder2Data 的过滤版本。其特点包括
- 教育性代码示例
- 文档完善的程序
- 15 种主要编程语言
在这里,研究人员还使用 AI 来评估代码的教育质量,并只保留了最好的部分,从而形成了一个高度精炼的包含 1250 亿个 Token 的数据集。虽然 Stack-Edu 是一个小型数据集,但它仍然高效,提升了 AI 在大多数编程语言中的编码能力。Java 在略低的过滤条件下表现最佳,表明不同语言可能需要不同的训练策略。
如何结合所有这些数据集以最大限度地发挥 SmolLM2 训练的优势?我们之前提到,智能地混合数据是关键,另一件重要的事情是,更长的训练有助于小型模型在保持低成本的同时表现更好。这就是 Hugging Face 提出多阶段训练策略的原因。
多阶段训练策略
SmolLM2-1.7B 使用多阶段方法在 11 万亿个 Token 上进行训练,其中数据混合在训练过程中进行调整以获得最佳结果。研究人员遵循了四个关键原则
- 根据性能调整数据: 他们监控模型的进展并调整数据集混合以修复弱点。
- 将最好的数学 (FineMath) 和代码 (Stack-Edu) 数据留到最后阶段,以最大限度地发挥影响。
- 逐步引入中等规模的数据集: 小心地混合数学和编码数据,而不是一次性添加所有数据。
- 避免过度重复: 训练 4-5 轮是最佳限制。
以下是 SmolLM2 的四阶段训练过程
第一阶段:通用知识(0 到 6T Token)
- 这一步专注于英语网络数据(占训练数据的 90%),包括来自 FineWeb-Edu 的 60% 教育内容和来自 DCLM 的 40% 通用问答和推理数据。
- 此阶段的编码数据仅占训练的 10%。数学数据尚未包含。
模型在通用知识方面表现符合预期,但数学和编码技能较弱。
第二阶段:增加更多编码和数学(6 到 8T Token)
- 引入数学数据(5%),使用 OpenWebMath (OWM)。将编码数据增加到 20%。
- 保持英语网络数据在 75%,使用相同的 FineWeb-Edu 和 DCLM 混合。
在此阶段,SmolLM2 的编码技能有所提高,但数学性能仍然较弱。
第三阶段:更多数学和编码优化(8 到 10T Token)
- 通过添加 InfiMM-WebMath 将数学数据增加到 10%。
- 用 Stack-Edu 替换 StarCoderData,以实现更好的代码学习。
- 添加 Jupyter Notebooks 以帮助模型更好地理解代码解释。
- 将英语网络混合调整为 40% FineWeb-Edu 和 60% DCLM。
性能有所提高,但准确率暂时下降,出现“损失峰值”,这意味着训练过程中损失值突然且暂时增加。最终,模型恢复并继续改进。
第四阶段:最终微调和收尾(10 到 11T Token)
- 研究人员逐渐降低了学习率(这个过程称为“衰减”)。
- 他们添加了最高质量的数学数据:FineMath4+ 和 InfiWebMath-3+。数学数据现在占训练的 14%。
- 扩展 Stack-Edu 以涵盖更多编程语言。
- 保持 58% 的英语网络数据,DCLM 比例更高。
这一阶段带来了数学和编码性能的最大改进,同时通用知识也得到了提升。
这种多阶段训练用于参数为 1.7B 的“最大”SmolLM2 版本。由于 SmolLM2 的 360M 和 135M 版本需要更少的计算能力,容量更小,因此它们的训练过程被简化了。它们没有使用多阶段训练,而是采用了单阶段方法,并使用了始终如一的高质量数据。训练数据混合通过以下方式进行了改进
- 使用 FineWeb-Edu 的分类器过滤 DCLM 以去除低质量样本。
- 从一开始就包括 Stack-Edu 用于编码,InfiMM-WebMath 和 FineMath 用于数学推理,以及 Cosmopedia 用于结构化知识。
总的来说,SmolLM2-360M 在 4 万亿个 Token 上进行了训练,SmolLM2-135M 在 2 万亿个 Token 上进行了训练。
让 SmolLM2 处理更多文本
漫长的四阶段训练不足以释放 SmolLM2 的全部潜力。为了处理各种复杂的任务,它需要更有效地处理更多上下文。为了改进这一点,研究人员将 SmolLM2 的上下文长度从 2K 增加到 8K 个单词。他们使用包含长文档的特殊数据混合,包括:Dolma 的书籍子集(20%)、DCLM 和 FineWeb-Edu 的教育和通用网络文本(10%),以及第四阶段的数据集混合(60%)。
结合所有训练方面,使得 SmolLM2-1.7B 实现了最先进的性能。但这并非训练的最后阶段。
指令微调和偏好学习
后训练是提高模型推理、响应准确性和指令遵循能力的另一个重要步骤。以下是所有 SmolLM2 模型如何完成此操作的。
使用 SmolTalk 数据集进行指令微调
为了对 SmolLM2-1.7B 进行监督微调 (SFT),研究人员创建了 SmolTalk 数据集,以提高 SmolLM2 理解和遵循指令的能力。它通过过滤 MagPie-Ultra 数据集构建,并包含
- 对话数据(来自 MagPie-Ultra):教 SmolLM2 处理自然对话。
- 任务特定数据: 它帮助 SmolLM2 提高在遵循复杂指令(Smol-Constraint)、总结(Smol-Summarization)和重写文本(Smol-Rewrite)等方面的能力。
- 数学数据: 提高 SmolLM2 的数学推理能力。
- 代码数据和长上下文数据(来自 LongAlign):帮助完成编码任务并使 SmolLM2 更好地处理长文本输入。
- 来自 PersonaHub、电子邮件、推文等数据集的基于角色的数据,以教 SmolLM2 如何以不同的语气和风格写作。
SmolTalk 在多项基准测试中优于其他指令微调数据集,并帮助 SmolLM2 给出更清晰、更结构化和更有用的响应。
对于 SmolLM2-360M 和 SmolLM2-135M 的 SFT,研究人员使用了 SmolTalk 的简化版本,删除了函数调用等复杂任务,并专注于与较小型模型功能相匹配的更易于处理的指令。
偏好学习
训练的最后阶段教会 SmolLM2-1.7B 使用直接偏好优化 (DPO) 偏好更高质量的响应。研究人员使用了 UltraFeedback 数据集,它最能改善推理和知识,并对 SmolLM2 进行了 2 轮训练,调整了学习率。经过所有微调和偏好学习后,我们得到了 SmolLM2-1.7B 的最终“指令”版本。
在 360M 和 135M 版本中,偏好学习也使用 UltraFeedback 来改善指令遵循,同时保持响应清晰和有用。
由于这些策略和精心混合的数据集,SmolLM2 变成了一个全能型 AI 模型,在多个领域表现出色。让我们看看所取得的推理结果。
SmolLM2 性能
与 Qwen2.5-1.5B-Instruct 和 Llama3.2-1B-Instruct 等类似模型相比,SmolLM2-1.7B 取得了以下成果
- 它在指令遵循方面优于 Qwen2.5-1.5B。
- 在对话、推理和重写任务中表现出色。
- SmolLM 在数学(GSM8K、MATH)和基于知识的测试中保持竞争力。
好吧,这里已经有很多信息了,现在是时候总结一下 SmolLM2 成为一个优秀小型模型的优点了。
SmolLM2 的优势
- 更小的尺寸,更强的性能: 正如我们所看到的,SmolLM2-1.7B 优于其他小型模型,例如 Qwen2.5-1.5B 和 Llama3.2-1B,或者在数学、编码、推理和指令遵循方面保持竞争力。
- 更低的计算成本: SmolLM2 系列模型旨在在资源有限的设备上高效运行,同时在推理、编码和指令遵循任务中保持高精度。
- 精心策划的数据集: 与主要依赖原始网络数据的模型不同,SmolLM2 模型使用高质量来源的平衡混合进行训练。
- 高效的多阶段训练策略,避免过拟合。
- 上下文长度从 2K 扩展到 8K Token: 这使得 SmolLM2 更适合总结和深度阅读等任务。此外,扩展上下文长度后没有明显的性能损失。
- 模型、数据集和训练代码都是开源的,允许研究人员和开发人员在 SmolLM2 的基础上进行构建。
- SmolLM2-360M 和 SmolLM2-135M 版本允许更轻量级的人工智能应用,在低资源设备上运行,同时仍保持强大性能。
并非没有局限性
尽管 SmolLM2-1.7B 对于其尺寸而言表现强劲,但仍存在一些关键限制
- SmolLM2 的性能并非最佳,它在数学和编码任务中仍落后于其他一些小型模型。在遵循指令方面,它也并非绝对最佳,在某些方面仍有改进空间。
- 它有时可能会难以处理复杂的推理,因为这是一个小型模型,无法像大型模型那样存储那么多知识。
- 它在从长输入中检索特定信息方面不如 Qwen2.5-1.5B 等其他模型。
- 昂贵的训练: SmolLM2 的训练仍然需要大量的计算资源,使其从头开始训练成本高昂(计算费用 25 万美元)。
- 虽然 SmolLM2 学会了偏好更好的答案,但它严重依赖合成反馈,因此它对细微的人类偏好的理解仍在不断发展。
结论
小型语言模型使人工智能对所有人可访问,并拥有其独特的强大和竞争力方式。在本集中,我们讨论了 Hugging Face 的整个“Smol”模型家族——包括 SmolLM、SmolLM2、SmolVLM 和 SmolVLM2——并探索了 SmolLM2 通过精心策划的高质量数据集和智能多步训练策略实现强大推理的历程。
有了 Hugging Face 提供的这份全面的训练指南,您构建强大小型模型的道路现已开启。
作者:Alyona Vert 编辑:Ksenia Se
附加:深入学习资源
- SmolLM2:当 Smol 变得强大——小型语言模型的数据中心训练 作者:Hugging Face
- SmolLM——飞快且异常强大 作者:Loubna Ben Allal, Anton Lozhkov, Elie Bakouch
- SmolVLM——小而强大的视觉语言模型 作者:Andres Marafioti, Merve Noyan, Miquel Farré, Elie Bakouch, Pedro Cuenca
- SmolVLM2:将视频理解带到每台设备 作者:Orr Zohar, Miquel Farré, Andres Marafioti, Merve Noyan, Pedro Cuenca, Cyril, Joshua
- SmolLM 系列模型
- SmolLM2 系列模型
- SmolVLM 系列模型
- SmolVLM2 系列模型
- Hugging Face GitHub 上的 Smol 模型
- 小型语言模型:调查、测量和见解
来自图灵邮报的资料
今天就到这里。感谢您的阅读!
如果本文能帮助您的同事增进对人工智能的理解并保持领先,请分享给他们。