SmolVLM2: The Smollest Video Model Ever(三)
这是对《SmolLM2: When Smol Goes Big — Data-Centric Training of a Small Language Model》的翻译阅读
摘要
虽然大语言模型在人工智能的许多应用中取得了突破,但其固有的大规模特性使得它们在计算上成本高昂,并且在资源受限的环境中部署具有挑战性。在本文中,我们记录了SmolLM2的开发过程,这是一种最先进的 “小型”(17亿参数)语言模型(LM)。
为了获得强大的性能,我们使用多阶段训练过程,在约11万亿个词元的数据上对SmolLM2进行过度训练,该过程将网页文本与专业的数学、代码和指令跟随数据混合在一起。此外,在我们发现现有数据集存在规模过小或质量较低的问题时,我们引入了新的专业数据集(FineMath、Stack-Edu和SmolTalk)。
为了为我们的设计决策提供依据,我们进行了小规模的消融实验以及手动优化过程,根据前一阶段的性能更新每个阶段的数据集混合比例。最终,我们证明SmolLM2的性能优于其他近期的小型语言模型,包括Qwen2.5-1.5B和Llama3.2-1B。为了促进未来对语言模型开发以及小型语言模型应用的研究,我们发布了SmolLM2以及我们在项目过程中准备的所有数据集。
1 引言
大语言模型(LMs)已成为现代人工智能系统的基石,因为它们能够遵循自然语言指令,并灵活地执行各种各样的任务(Touvron等人,2023;Bai等人,2023;Brown等人,2020;Dubey等人,2024;Groeneveld等人,2024;Chowdhery等人,2023;Young等人,2024;Taylor等人,2022)。从本质上讲,大语言模型规模庞大,按照当前的惯例,是指具有许多参数(超过约100亿)的模型。这种庞大的规模导致在训练和推理过程中计算成本极高,这可能会阻碍大语言模型在资源受限的环境中使用。
为了解决这个问题,最近一系列工作旨在开发性能良好的小型(约30亿参数或更少)语言模型(Gunter等人,2024;Yang等人,2024b;AI@Meta,2024b;Team等人,2024;Li等人,2023b)。这些小型语言模型计算成本低,可以在更广泛的设备(如手机)上运行,同时在许多重要任务上提供令人满意的性能。
语言模型性能和行为的一个关键因素是用于训练它们的数据。虽然数据整理对任何规模的语言模型都很重要,但对于较小的模型来说,其影响尤为显著,因为它们有限的容量必须仔细优化,以学习核心知识和基本能力,而不是记忆偶然的事实(Abdin等人,2024a;Rolnick等人,2017)。
大多数语言模型主要在从网络爬取的文本上进行训练(Radford等人,2019;Raffel等人,2020),最先进的流程包括复杂的过滤和处理阶段,旨在提高数据质量(Li等人,2024c;Penedo等人,2024b、a;Soldaini等人,2024)。最近,从某些领域(如软件代码(Kocetkov等人,2022;Lozhkov等人,2024)和数学(Paster等人,2023;Han等人,2024))纳入 “专业” 数据已变得很常见,这不仅可以提高在这些领域的性能,还可以更普遍地提高在需要推理的具有挑战性的任务上的性能(Muennighoff等人,2023;Aryabumi等人,2024)。
受上述考虑因素的启发,我们在本文中的贡献如下:第一,我们对现有的网页、代码、数学和指令跟随数据集进行了仔细评估(第3节),以帮助指导训练数据的设计选择,最终通过对不同来源进行多阶段手动重新平衡来训练SmolLM2,以最大化性能(第4节)。这种动态重新平衡是一种有前途的大规模训练方法,因为大规模训练成本高昂(SmolLM2的训练大约需要1e23次浮点运算,相当于25万美元的GPU计算成本),使得运行多个完整规模的训练变得不切实际。按照标准做法,我们还开发了SmolLM2的指令调优变体(第5节)。此外,在发现现有数据集太小和 / 或质量较低后,我们创建了新的数据集FineMath、Stack-Edu和SmolTalk(分别用于数学、代码和指令跟随)。最终,我们表明SmolLM2的基础版本和指令调优版本在类似规模的模型中都是最先进的(第4.7节和第5.4节)。
2 背景
训练一个现代语言模型通常从在大量(例如数万亿个词元)无结构文本上进行 “预训练” 开始。预训练有助于模型适应语言结构(Clark,2019)并存储事实性知识(Petroni等人,2019;Roberts等人,2020),因此已被证明是语言模型训练的重要组成部分,这使得预训练数据集的组成成为一个关键考虑因素。
预训练对数据的大量需求导致了大规模网络爬虫的使用(com;ope;ant),但原始形式的这些数据可能会导致语言模型性能不佳(Penedo等人,2024b)。因此,现代语言模型预训练数据集的主要整理方法是设计复杂的管道,用于自动过滤和重新格式化网页文本(Penedo等人,2024a、b;Soldaini等人,2024;Soboleva等人,2023;Li等人,2024c),旨在保留足够的数据以避免有害的重复(Muennighoff等人,2023),同时丢弃任何 “低质量” 数据。
除了网页文本,纳入来自某些领域的 “专业” 数据,特别是代码(Kocetkov等人,2022;Li等人,2023a)和数学(Paster等人,2023;Han等人,2024;Wang等人;Azerbayev等人,2023),可以提高模型在涉及推理和世界知识的任务上的性能(Muennighoff等人,2023;Aryabumi等人,2024;Lewkowycz等人,2022;Shao等人,2024)。
小型专业数据集的贡献可能会被大得多的基于网络的预训练数据源所掩盖,这导致了多阶段预训练的设计,其中在训练后期纳入专业或高质量数据集(Abdin等人,2024b;Ai2,2024;Blakeney等人,2024;Singer等人,2024)。
在预训练之后,语言模型在部署之前通常会经历两个额外的训练阶段:指令调优和偏好学习。在指令调优中,模型在指令 / 响应对上进行有监督训练,这些对反映了语言模型应该如何回答查询(Wei等人,2021;Mishra等人,2021;Sanh等人,2021;Wang等人,2022)。
这个过程提供了一种有价值的方式来定制语言模型,使其提供有用的响应,而不是简单地尝试继续输入(如在预训练期间所学习的)。在偏好学习中,语言模型通过训练以区分有用和无用的响应,进一步 “对齐” 到其预期用途(Ouyang等人,2022;Bai等人,2022)。
这个最后阶段通常涉及对标记有人工或合成生成偏好的数据进行某种形式的强化学习(Bai等人,2022;Lee等人;Rafailov等人,2024)。
3 预训练数据集
预训练数据整理对于小型语言模型尤为重要,因为它们对训练数据中的噪声更为敏感(Rolnick等人,2017;Abdin等人,2024a)。此外,设计预训练策略不仅涉及选择和整理数据,还涉及确定从不同来源 “混合”(即采样)的比例,这在纳入例如专业数学和代码数据集时尤为重要。因此,我们对现有数据集进行了仔细评估,并在必要时创建了新的、改进的和更大的数据集。
3.1 消融实验设置
为了比较英语网页数据集并找到训练我们模型的最佳混合比例,我们采用了与Penedo等人(2024a)类似的实证方法。具体来说,我们在相同条件下在每个数据集上训练模型:模型配置、训练超参数和词元数量。我们基于Llama架构(Touvron等人,2023)训练了17亿参数的Transformer(Vaswani等人,2017),序列长度为2048,全局批次大小约为200万个词元,使用GPT - 2分词器(Radford等人,2019),并采用余弦学习率调度(Loshchilov和Hutter,2016),学习率为\(3.0×10^{-4}\)。每个数据集消融模型在从完整数据集中随机采样的3500亿个词元上进行训练。-->(仅针对数据集比例进行的实验还是?)
在评估方面,我们也遵循Penedo等人(2024a)的方法,使用lighteval(?)在各种知识、推理和文本理解基准上进行评估:MMLU(Hendrycks等人,2021)、HellaSwag(Zellers等人,2019)、OpenBook QA(Mihaylov等人,2018)、PIQA(Bisk等人,2019)、WinoGrande(Sakaguchi等人,2019)、ARC(Clark等人,2018)和CommonSenseQA(Talmor等人,2019)。
LightEval 是 Hugging Face 推出的一款轻量级 AI 评估工具,主要用于评估大型语言模型(LLMs)。其具备以下特性和功能:
- 多设备支持:可在 CPU、GPU 和 TPU 等多种硬件上运行,能适应不同硬件环境,满足企业级用户在不同硬件配置下的评估需求 。
- 使用便捷:提供用户友好的命令行界面和编程接口,技术背景不强的用户也能轻松上手,可在多种流行的基准测试上评估模型,还能定义自己的自定义任务 。
- 自定义评估:支持用户根据自身需求定制评估流程,包括指定模型评估的配置,如模型的权重、管道并行性等 。
- 与生态集成:与 Hugging Face 的生态系统紧密集成,例如可与 Hugging Face Hub 等工具配合使用,便于模型的管理和共享 。
- 复杂配置支持:允许通过配置文件加载模型,进行复杂的评估配置,如使用适配器 / 增量权重或其他复杂的配置选项 。
- 流水线并行评估:支持在 16 位精度下评估超过约 400 亿参数的模型,借助流水线并行技术将模型分片到多个 GPU,以适应有限的 VRAM(显存) 。
数学和代码能力通常在广泛训练后才会显现,因此与Blakeney等人(2024)、Dubey等人(2024)、Ai2(2024)类似,在评估数学和代码数据集时,我们从SmolLM2训练到3万亿词元的中间检查点开始(第4节中有详细介绍),该检查点主要在网页数据上进行训练。
然后我们使用退火方法:在训练包含评估数据集的混合数据时,学习率线性衰减至0。对于数学,我们在包含600亿个评估数据集词元和400亿个检查点前混合数据词元的混合数据上进行退火。对于代码消融实验,我们在2000亿个词元上进行退火,这些词元均匀分布在15种最常用的编程语言中(每种语言约140亿个词元)。
我们使用lighteval在GSM8K(Cobbe等人,2021)、MATH(Hendrycks等人,2021)和MMLU - STEM上评估数学消融模型,以评估它们的数学能力,并使用BigCode - Evaluation - Harness在HumanEval(Chen等人,2021)和MultiPL - E(Cassano等人,2022)上评估代码消融模型。
退火阶段不是训练的最后阶段。在 SmolLM2 训练中,退火阶段主要用于调整学习率,增强模型对特定数据的学习效果,提升模型在数学和代码相关任务上的性能。
- 退火阶段位置:训练分为多个阶段,退火阶段处于稳定阶段之后的衰减阶段(从 10T 到 11T tokens)。在此阶段,学习率会线性衰减至 0 ,但不是训练的最后一步,之后还有上下文长度扩展等操作。
- 使用退火算法的目的:在训练接近尾声时,模型已学习到大部分知识,此时逐渐降低学习率,可以让模型在已有学习成果基础上,更精细地调整参数,避免学习率过高导致在训练后期过度调整参数,从而提升模型性能。在 SmolLM2 训练中,结合高质量的数学和代码数据(如 FineMath 和部分 Stack - Edu 数据集)进行上采样,使模型更聚焦于这些特定领域知识的学习,强化在数学和代码任务方面的能力 。
- 实现方式:在训练达到一定阶段(如 SmolLM2 训练到 10T tokens 时),开始退火阶段。学习率按照线性衰减的方式逐渐降低至 0 。同时,调整数据集的混合比例,增加高质量数学和代码数据集的比例。如在 SmolLM2 训练的退火阶段,数学内容占混合数据的 14% ,Stack - Edu 的比例也有所增加,且调整了各编程语言在 Stack - Edu 中的分配比例 。
3.2 英语网页数据
来自Common Crawl的网页文本一直是预训练数据的热门来源,最近基于分类器的过滤技术显著提高了预训练数据的质量(Dubey等人,2024;Abdin等人,2024b、a;Kong等人,2024)。两个使用基于分类器过滤的著名开放数据集示例是FineWeb - Edu(Penedo等人,2024a)和DCLM(Li等人,2024c)。
FineWeb - Edu由1.3万亿个词元组成,这些词元被基于Llama3 - 70B - Instruct(Dubey等人,2024)生成的注释训练的分类器判定为 “教育性”。DCLM包含3.8万亿个词元,这些词元是使用在来自OpenHermes 2.5(Teknium,2023a)的指令跟随数据和r/ExplainLikeImFive(ELI5)子版块的高分帖子上训练的fastText分类器(Joulin等人,2016a、b)进行过滤的。
在FineWeb - Edu和DCLM上分别使用3500亿个词元训练消融模型,得到的性能如表1所示。我们发现,FineWeb - Edu在教育基准MMLU、ARC和OpenBookQA上获得了更高的分数,而DCLM在HellaSwag和CommonsenseQA上表现更好。这些结果与数据集的内容一致:FineWeb - Edu优先考虑教育材料,而DCLM捕获了更多样化的对话风格。
表1.对在FineWeb-Edu和DCLM上针对350 B 令牌训练的模型进行评估。40/60和60/40表示FW-Edu/DCLM的比率。
鉴于FineWeb - Edu和DCLM的互补优势,我们探索了将它们混合是否可以进一步提高性能。在测试了不同的比例后,我们发现60%的FineWeb - Edu和40%的DCLM的混合效果很好,如表1所示:它在MMLU、ARC和OpenBookQA上的性能几乎与FineWeb - Edu相当,同时在HellaSwag上与DCLM的结果一致,并在CommonsenseQA上接近其性能。将这些数据集结合起来,得到了5.1万亿个(英语)文本词元。
3.3 数学数据
专业的数学预训练数据对于培养强大的数学理解能力至关重要。最近的研究表明,从Common Crawl中精心整理的数学内容,结合有针对性的过滤技术,可以显著增强语言模型的数学推理能力(Dubey等人,2024;Yang等人,2024c;Shao等人,2024;Han等人,2024)。
3.3.1 现有数据集比较
我们比较了两个领先的公开可用数学数据集:OpenWebMath(OWM)(Paster等人,2023)和InfiMMWebMath(Han等人,2024)。OWM由120亿个词元组成,通过从Common Crawl中过滤特定于数学的内容,并使用专门的文本提取管道来保留数学格式和公式构建而成。InfiMMWebMath包含400亿个文本词元,其作者表明它与DeepSeekMath的私有数据集性能相当(Shao等人,2024)。
我们对OWM和InfiMM - WebMath进行了退火消融实验(遵循第3.1节中描述的设置),发现InfiMM - WebMath在GSM8K上的峰值准确率为14%,而OWM为10%,而OWM在MATH上略微优于InfiMM - WebMath。完整的评估曲线可在附录C.1中找到。
尽管在600亿个数学词元上进行了训练(即OWM训练5个epoch,InfiMM - WebMath训练1.5个epoch),但性能仍然落后于专有的最先进小型模型(Yang等人,2024b)。进一步的分析突出了两个关键限制:数据集规模不足,以及对逐步数学推理的关注不够,同时过度代表了专注于高级概念的学术论文。
3.3.2 新数据集:FineMath
上述OWM和InfiMMWebMath存在的问题促使我们开发FineMath1,这是一个包含多达540亿个数学数据词元的集合,通过基于分类器的过滤专注于数学推导和推理。
我们首先使用Resiliparse从Common Crawl WARC文件中提取文本,重点关注FineWeb数据集(Common Crawl的750亿个唯一URL的一个子集)中的所有58亿个唯一URL。然后,我们采用FineWeb - Edu过滤方法,使用Llama - 3.1 - 70B - Instruct(Dubey等人,2024)和一个提示(附录C.2),该提示在3分制上对内容进行评分,其中1分表示包含一些数学内容,3分表示具有适当水平的逐步问题解决方案。
在基于这些银标签训练了一个分类器之后,我们确定了包含至少10个质量得分在2分或更高的页面的领域。我们通过纳入来自OWM或InfiMM - WebMath中至少有10个URL的领域来扩大我们的领域覆盖范围。
从Common Crawl索引中,我们总共检索到属于该领域列表的77亿个URL:其中57亿个由我们的分类器识别,6亿个来自OWM,13亿个来自InfiWebMath。然后,我们使用OWM管道重新提取所有已识别的页面,保留LaTeX格式并删除所有样板页面,得到包含6.5万亿个词元的71亿个页面。
为了仅保留高质量的数学内容,我们重新应用了一个基于Llama - 3.1 - 70B - Instruct注释训练的分类器,使用一个5分制提示(附录C.3),专门针对具有推理和中学到高中水平内容的页面。我们注意到InfiMM - WebMath使用了类似的分类器过滤管道,但他们的提示针对的不是相同类型的内容。
在分类之后,我们使用具有10个哈希的单波段MinHash LSH(Broder,1997)进行去重,并应用fastText语言分类(Joulin等人,2016a、b)以仅保留英语内容。最终,我们开发了多个FineMath变体,包括FineMath4 +(100亿个词元,670万个文档),它仅保留得分在4 - 5分的样本,以及FineMath3 +(340亿个词元,2140万个文档),它包括得分在3 - 5分的样本。
我们还对InfiMMWebMath应用了相同的分类器,创建了Infi - WebMath4 +(85亿个词元,630万个文档)和Infi - WebMath3 +(205亿个词元,1390万个文档)。与Yang等人(2024c)类似,我们使用13 - gram匹配和最长公共子序列的最小重叠比为0.6,对每个数据集针对GSM8K、MATH和MMLU进行去污染。
图1展示了我们对FineMath进行退火消融实验的结果。所有FineMath子集在GSM8K、MATH和MMLU-STEM上的表现始终优于OWM和InfiMM-WebMath。与InfiMM-WebMath相比,FineMath4 +在GSM8K上的准确率提高了2倍,在MATH上提高了6倍,这表明保留高质量且包含推理过程的数学内容的重要性。
此外,Infi-WebMath4 +的表现优于InfiMM-WebMath,但在训练800亿个词元(大约10个epoch)后达到了性能平台期,这可能是由于数据重复导致的,而这种趋势在FineMath4 +中并未出现。
3.4 代码数据
代码生成和理解正成为现代大语言模型的基本能力,支持诸如代码补全、调试和软件设计等多种应用场景。虽然专门的代码模型(Lozhkov等人,2024;Bai等人,2023;Roziere等人,2023)是针对这些任务进行优化的,但通用大语言模型也越来越多地被用作编码助手。
Stack数据集
此外,最近的研究表明,在预训练中纳入代码数据不仅可以增强与代码相关的能力,还可以提高自然语言推理和世界知识(Aryabumi等人,2024)。Stack数据集是最先进的开放代码数据集(Li等人,2023a;Kocetkov等人,2022),包括Stack v1,它包含来自公共GitHub存储库的约3TB源代码;StarCoderData(Li等人,2023a;Kocetkov等人,2022;Lozhkov等人,2024),这是一个经过筛选的子集,包含80种编程语言的2500亿个词元;Stack v2,其数据约为32TB,来源于Software Heritage代码存档;以及StarCoder2Data,它是StarCoder2模型(Lozhkov等人,2024)的训练语料库,包含跨越600多种编程语言的9000亿个词元。
构建的Stack-Edu
最近的研究表明,基于FineWeb-Edu分类器的过滤策略对代码数据是有效的(Wei等人,2024b;Allal等人,2024)。因此,我们构建了Stack-Edu,它是StarCoder2Data的一个经过筛选的变体,专注于教育性和文档完备的代码。
具体来说,我们从StarCoder2Data中选择了15种最大的编程语言,以匹配较小模型的容量限制(Lozhkov等人,2024),并确保在消融实验中有基准覆盖。这个子集大约有4500亿个词元。然后,我们使用StarEncoder模型(Li等人,2023a)在由Llama3-70B-Instruct(Dubey等人,2024)生成的合成注释上训练了15个特定语言的分类器(提示见附录D.1),该注释在0到5的量表上对教育质量进行评分。每个分类器在500,000个样本上进行训练,并且在应用3作为二分类阈值时,大多数语言的F1分数都高于0.7。
退火消融实验评估Stack-Edu
为了评估Stack-Edu,我们按照第3.1节中描述的方法进行退火消融实验。使用3作为阈值进行过滤在大多数语言上提高了性能,同时保留了足够的数据,不过Java使用2作为阈值时表现更好。由于Markdown未包含在MultiPL-E基准中,我们无法定量确定该数据集的阈值;
相反,我们基于定性分析使用了3作为阈值。最终得到的Stack-Edu数据集在其15种语言中包含约1250亿个词元(见附录D.2)。表2展示了按大小排名前4的编程语言的统计信息,以及我们的教育过滤对MultiPL-E的影响。
表2.Stack-Edu数据集统计数据和MultiPL-E得分,针对排名前4位(按规模)的编程语言。我们使用HumanEval进行Python评估。
4 预训练
最近语言模型预训练的趋势明显转向显著更长的训练时长,特别是对于较小的模型(Yang等人,2024a、b;AI@Meta,2024b)。虽然这种策略偏离了Chinchilla最优准则(Hoffmann等人,2022),但由此带来的性能提升和降低的推理成本使得延长训练成为一种值得的权衡(de Vries,2023)。
例如,Qwen2-1.5B在7万亿个词元上进行训练,Qwen2.5-1.5B在18万亿个词元上进行训练,而Llama3.2-1B是从一个剪枝后的80亿参数模型派生而来,通过蒸馏在9万亿个词元上进行训练(Yang等人,2024a、b;AI@Meta,2024b)。
在构建SmolLM2时,我们在11万亿个词元上进行训练(在我们收集的数据集上大约训练两个epoch),采用多阶段训练方法,而不是在整个预训练过程中使用固定的数据集混合比例。
这种设计遵循四个关键原则:
(1)以性能为导向的干预措施,我们在关键基准上监控评估指标,并调整数据集混合比例以解决特定的能力瓶颈;
(2)在退火阶段对高质量的数学和代码数据进行上采样,将像FineMath和部分Stack-Edu这样的数据集保留到最后阶段,以最大化它们的影响(Blakeney等人,2024;Ai2,2024);
(3)在训练中期战略性地引入中等规模的数据集,如OWM、InfiMM-WebMath和Stack-Edu,以避免在早期被更大的数据集稀释;
(4)避免过度的数据重复,根据Muennighoff等人(2023)的建议,我们旨在使大多数数据集的训练接近推荐的4-5个epoch的阈值。虽然进行多次从头开始的训练以探索不同的数据混合计划可能会有成果,但SmolLM2预训练的高昂成本(大约25万美元的GPU计算成本)促使我们采用 “在线” 方法。
在以下各节中,我们将描述训练过程的每个阶段,详细说明数据集的混合比例、我们选择的理由以及指导我们进行干预的观察结果。虽然一些决策是基于文献中的既定发现,但其他决策则是由训练过程中收集的实证见解驱动的。四个预训练阶段的数据混合比例如图2所示。
图2.训练阶段的数据集混合。详细描述见第4节。x轴表示训练令牌的数量。
4.1 训练设置
我们的基础模型包含17亿个参数,遵循LLama2(Touvron等人,2023)架构,附录A中有详细说明。我们使用nanotron框架(?)在256个H100上训练模型,并使用AdamW优化器,其中\((\beta, \beta_{2})=(0.9, 0.95)\),并采用Warmup Stable Decay(WSD)(Hu等人,2024;Zhai等人,2022)学习率调度,以避免设置固定的训练时长(见图3,附录A)。
nanotron 框架是 Hugging Face 开发的一个旨在简化模型预训练流程、加速大型 Transformer 模型定制化的预训练框架。它具有以下特点和功能:
- 设计理念:核心围绕简单性和高性能,致力于将复杂的模型预训练过程化繁为简,让开发者能够快速地在自定义数据集上训练自己的 Transformer 模型,提升了开发的便利性与效率 。
- 依托框架:PyTorch框架,集成了一系列高效的训练策略 。
- 训练策略与特性
- 分布式训练:支持数据并行、张量并行和管道并行,通过这些并行技术,能显著提升训练效率,适应从小规模实验到大规模工业级部署的不同需求,可将模型训练任务拆分到多台计算机上协同处理 。
- 专家平行:适用于混合专家模型,进一步优化训练过程 。
- 高级特性:集成了如 ZeRO-1 优化器等高级特性,在加速模型学习的同时不牺牲精度。还支持参数绑扎、分片、自定义模块检查点,以及针对大规模模型的谱 μTransfer 参数化方法,在处理超大模型时具有独特优势 。
该调度从2000步的热身阶段开始,保持\(5.0×10^{-4}\)的峰值学习率(稳定阶段),并在需要时转换到衰减阶段,在总训练步数的10%内将学习率降至零(Hägele等人,2024)。我们使用Allal等人(2024)的分词器,其词汇表大小为49,152个词元,是在70%的FineWeb-edu、15%的Cosmopedia-v2、8%的OpenWebMath、5%的StarCoderData和2%的StackOverflow的混合数据上进行训练的。
4.2 稳定阶段:第1阶段
数据混合:在SmolLM2预训练的第一阶段(0到6万亿个词元),我们根据对英语网页消融实验的见解和现有文献来设计数据集混合比例。对于网页数据,我们采用60%的FineWeb-Edu和40%的DCLM的比例(在第2.2节中讨论过),这在教育内容和多样化的现实世界问答式数据之间提供了最佳平衡。
对于代码数据,根据Aryabumi等人(2024)的方法,我们纳入了StarCoderData,它包含80种编程语言的2500亿个词元,并将其限制在总混合比例的10%,以确保在11万亿个词元的训练中大约有4个epoch,同时为后续阶段的上采样留出空间。由于我们的数学数据集相对较小,在第1阶段没有包含数学数据。
发现:在训练6万亿个词元后,我们在关键基准上对SmolLM2进行评估,结果如表3所示。知识和推理性能与我们基于英语网页消融实验的预期一致。然而,我们观察到编码和数学性能普遍较差。
表3.在每个定型阶段之后,不同基准类别的平均模型性能。阶段1-3处于稳定阶段(无衰变)。附录E.1中列出了每项基准测试的完整结果。
4.3 稳定阶段:第2阶段
数据混合:在第2阶段(6万亿到8万亿个词元),我们将OWM以5%的比例添加到混合数据中,并增加代码数据的比例,希望在保持强大的知识保留能力的同时,解决观察到的编码和数学推理方面的差距。以较低比例纳入OWM反映了该数据集的规模较小(120亿个词元),以及我们逐步纳入数学内容的方法。
第2阶段的最终混合数据包括75%的英语网页数据(保持第1阶段中FineWeb-Edu与DCLM的60/40比例)、20%的代码数据和5%的数学数据,如图2所示。
发现:在第2阶段之后,大多数语言的代码性能都有所提高,这验证了对StarCoderData进行上采样的决策。OWM的集成对数学性能没有显著影响,这突出了在后续阶段需要更大、更高质量的数学数据集。
除了代码和数学性能外,如图6(附录E.2)所示,我们观察到在多项选择形式(MCF,即明确从’A’、’B’、’C’或’D’中输出一个选项,而不是像完形填空形式那样计算不同答案的可能性)的MMLU测试中,准确率高于随机水平(>25%)。
这与之前的研究结果形成对比,之前的研究表明小模型在MCF上存在困难(Gu等人,2024;Du等人,2024),这表明对小模型进行长时间训练可以使其获得通常与大模型相关的能力(Blakeney等人,2024;Gu等人,2024;Du等人,2024)。
为了进一步优化MMLU性能,我们通过额外的退火消融实验重新审视了我们的英语数据集混合比例,发现在此阶段相对于FineWeb-Edu增加DCLM的比例可以略微提高MMLU MCF的成绩。
4.4 稳定阶段:第3阶段
数据混合:在稳定阶段的第三也是最后一个阶段(8万亿到10万亿个词元,在退火开始之前),我们将InfiMM-WebMath的纯英语文本部分与OWM一起添加进来,使数学数据的总比例达到约10%,如图2所示。
图2.训练阶段的数据集混合。详细描述见第4节。x轴表示训练令牌的数量。
对于英语网页数据,我们回顾了消融实验的结果,并将FineWeb-Edu与DCLM的比例调整为40/60。对于代码数据,我们用Stack-Edu(第3.4节)取代了StarCoderData。对于在Stack-Edu中词元数量少于40亿的语言(TypeScript、Shell、Swift、Go、Rust和Ruby),我们使用它们在StarCoder2Data中的子集。我们还添加了来自StarCoder2(Lozhkov等人,2024)的Jupyter笔记本,它提供了丰富的、带有解释的代码上下文示例,增强了模型在编程任务方面的推理能力。
发现:虽然这些新数据集的集成在多个基准上带来了改进,但我们在这个阶段观察到了明显的损失峰值,即使在回滚训练并跳过与峰值相关的数据后,这种损失仍然存在(Chowdhery等人,2023;Almazrouei等人,2023)。确切原因尚不清楚,但大多数评估指标在该阶段结束时恢复了。
4.5 衰减阶段:第4阶段
数据混合:最后一个阶段是在总训练时长的10%(从10万亿到11万亿个词元)内将学习率线性衰减至0(Hägele等人,2024)。根据Blakeney等人(2024)的方法,我们引入了我们最高质量的数学数据集InfiWebMath-3 +和FineMath 4 +。此外,我们将混合数据的0.08%分配给OWM,0.02%分配给AugGSM8K(Li等人,2024a),这是GSM8K基准训练集的增强版本,已成为近期预训练数据集的常见组成部分(Achiam等人,2023;Dubey等人,2024;Ai2,2024)。
总体而言,数学内容占混合数据的14%。我们扩展了Stack-Edu,纳入了第3阶段未涵盖的其他编程语言,并将该数据集的占比设置为混合数据的24%。我们保持了各编程语言之间的自然分布,对Python的分配比例更高。
剩余的混合数据包括58%的英语网页数据(保持DCLM相对于FineWeb-Edu更高的比例)和4%的Cosmopedia v2(Allal等人,2024),它提供了300亿个高质量的合成教科书、博客文章和故事词元。
发现:在第4阶段之后,所有基准任务都有改进,我们观察到编码性能有显著提升,最明显的是数学性能,这验证了我们针对这些领域的特定数据混合策略。
4.6 上下文长度扩展
为了支持长上下文应用,我们遵循标准做法(Gao等人,2024),将上下文长度从2k扩展到8k词元。具体做法是从第4阶段(在最后750亿个词元训练之前)获取一个中间检查点,然后使用不同的数据混合比例和RoPE值为130k继续训练。混合数据调整为包含40%的长上下文文档(8k词元或更多),这些文档来自DCLM(10%)、FineWeb-Edu(10%)和Dolma的书籍子集(20%)(Soldaini等人,2024),而其余60%遵循第4阶段的混合比例。经过这一步,我们得到了最终的SmolLM2基础模型。
上下文长度扩展是指增加模型在处理文本时能够考虑的前后文信息的长度。在自然语言处理中,模型理解当前文本往往需要依赖其前后的内容,更长的上下文长度能让模型获取更丰富的语境信息,从而更准确地处理复杂的语言任务。例如在阅读理解、文本生成等任务里,长上下文能帮助模型更好地把握文章整体脉络和语义关联,做出更合理的回答或生成更连贯的文本。在本文中,SmolLM2 将上下文长度从 2k 扩展到 8k 词元,意味着模型在处理文本时可以参考更广泛的前后文内容,增强其对长文本的理解和处理能力。
原因
- 支持长上下文应用:随着自然语言处理任务的日益复杂,许多应用场景需要模型能够处理长文本,如长篇文章的阅读理解、长对话的理解与生成等。扩展上下文长度可以使 SmolLM2 更好地支持这些长上下文应用,满足实际需求。例如在处理长篇技术文档或多轮复杂对话时,更长的上下文能帮助模型综合更多信息,提供更准确、更连贯的回答或生成更优质的文本 。
- 提升模型性能:长上下文能为模型提供更丰富的语境信息,有助于模型更准确地理解文本含义,从而提升在各种任务上的性能。通过扩展上下文长度并在训练中融入长上下文文档,模型可以学习到长文本中的复杂语义关系和逻辑结构,进而在涉及长文本理解和生成的任务中表现更出色 。
具体做法
- 获取中间检查点:从第 4 阶段(在最后 750 亿个词元训练之前)获取一个中间检查点。这个中间检查点包含了模型在之前训练阶段学习到的参数和知识,作为后续继续训练以扩展上下文长度的基础。
- 调整数据混合比例:使用不同的数据混合比例继续训练。混合数据调整为包含 40% 的长上下文文档(8k 词元或更多),这些文档分别来自 DCLM(占 10%)、FineWeb - Edu(占 10%)和 Dolma 的书籍子集(占 20%)。其余 60% 遵循第 4 阶段的混合比例。通过这种数据混合方式,让模型在继续训练过程中逐渐适应长上下文的学习,从不同来源的长文本数据中学习长序列信息处理的能力。
- 设置 RoPE 值:将 RoPE(旋转位置嵌入,Rotary Position Embeddings)值设为 130k。RoPE 是一种位置编码方式,它能让模型更好地捕捉文本中词元的相对位置关系。设置特定的 RoPE 值有助于模型在处理扩展后的长上下文时,更有效地利用位置信息,提升对长序列文本的理解和处理效果 。
4.7 基础模型评估
我们在广泛的基准上评估并比较最终的SmolLM2基础模型与现有的类似规模的最先进模型,即Qwen2.5-1.5B(Yang等人,2024b)和Llama3.2-1B(AI@Meta,2024a)。除非另有说明,评估使用lighteval并在零样本设置下进行。
表4中的评估结果显示了SmolLM2基础模型的强大性能,在HellaSwag和ARC上的表现优于Qwen2.5基础模型。SmolLM2在训练期间未监控的保留基准上也表现出色,如MMLU-Pro(Wang等人,2024c)、TriviaQA(Joshi等人,2017)和Natural Questions(NQ,Kwiatkowski等人,2019)。值得注意的是,该模型在MMLU-Pro上比Qwen2.5-1.5B高出近6个百分点,进一步验证了其泛化能力。
表4.SmolLM 2与其他1- 20亿基本机型在性能指标评测中的性能比较。SmolLM 2展示了突出其泛化能力的竞争性结果。
在数学和编码基准上,SmolLM2表现出有竞争力的性能。虽然它在某些方面落后于Qwen2.5-1.5B,但在GSM8K、MATH和HumanEval上的表现优于Llama3.2-1B。
重要的是,在上下文长度扩展后,我们几乎没有看到性能下降,而HELMET(Yen等人,2024)和Needle in the Haystack(NIAH)(Kamradt,2024)的结果显示出强大的性能-见附录G。这些结果突出了我们精心整理的数据集、数据混合比例和训练阶段的有效性。
5 训练后处理
在训练完SmolLM2基础模型后,我们遵循当前的标准做法,通过指令调优和偏好学习进行训练后处理,以最大化性能和实用性。在训练后处理阶段,我们除了使用一个名为SmolTalk的新指令调优数据集外,还利用了现有数据集。
- 基本概念:偏好学习的核心是让模型学习如何区分不同输出的优劣,使模型朝着更符合预期用途的方向调整。在语言模型领域,模型训练完成后,虽然具备一定能力,但输出可能并非总是符合用户期望或实际应用的最佳结果。偏好学习就是通过训练模型来识别有用和无用的响应,让模型的输出更加合理和实用。
- 具体操作:文中提到使用直接偏好优化(Direct Preference Optimization, DPO)进行偏好学习 。在 DPO 过程中,模型会在有偏好标签的数据上进行训练。这些标签可以是人工标注的,也可以是通过合成生成的,用来表示不同输出的质量高低或用户偏好程度。例如,对于一个问答任务,可能会将更准确、更详细、更符合用户需求的回答标记为更受偏好的答案,模型通过学习这些偏好标签,调整自身参数,使得后续生成的回答更接近这些优质答案。
- 应用目的:偏好学习能提升模型在多种任务上的表现。在 SmolLM2 的训练中,通过偏好学习,模型在 MT - Bench、MMLU - Pro 和 MATH 等基准测试中的成绩得到改善 ,这表明模型在指令跟随、知识问答和数学推理等方面的能力有所提升,使其更适合作为实用的聊天助手等应用场景。
5.1 SmolTalk
尽管SmolLM2基础模型在10-20亿参数范围内的表现优于其他最先进的基础模型,但在像MagPie-Pro(Xu等人,2024)或OpenHermes2.5(Teknium,2023b)这样的公共数据集上进行微调后,其性能低于这些其他模型的训练后版本。
这一观察结果促使我们开发SmolTalk2,这是一个新的指令跟随数据集,它仔细地将选定的现有数据集与我们开发的新合成数据集相结合,包括Magpie-Ultra对话数据集以及其他解决特定能力的专业数据集,如Smol-Constraint、Smol-Rewrite和Smol-Summarization。所有数据集都是使用Distilabel(Bartolomé Del Canto等人,2024)生成的。
5.1.1 对话数据
MagPie-Ultra是一个多轮数据集,使用(Xu等人,2024)中的两步提示方法创建。与MagPie不同,MagPie使用Llama-3-70B-Instruct且没有特定的系统提示来生成两轮对话,而MagPie-Ultra利用更大、更强大的模型Llama-3.1-405B-Instruct-FP8(Dubey等人,2024)。
我们还纳入了系统提示来指导生成,生成了一个包含100万个样本的平衡数据集,每个样本包含三轮对话。生成的数据集进一步使用较小的Llama模型(Llama-3. 5.1.1 对话数据MagPie-Ultra是一个多轮数据集,采用(Xu等人,2024)提出的两步提示法创建。
与MagPie不同,MagPie使用Llama-3-70B-Instruct且未设置特定系统提示来生成两轮对话,而MagPie-Ultra借助更大且更强大的模型Llama-3.1-405B-Instruct-FP8(Dubey等人,2024),同时纳入系统提示以引导生成过程,最终产出了一个包含100万个样本的均衡数据集,每个样本均为三轮对话。
随后,我们利用较小的Llama模型(Llama-3.1-8B-Instruct和Llama-Guard-3-8B)对生成的数据集进行筛选,以确保生成指令的质量和安全性。此外,我们还借助ArmoRM(Wang等人,2024b;a)对对话进行质量评分筛选,并使用gte-large-env1.5(Zhang等人,2024;Li等人,2023c)对语义相似的对话进行去重处理。
我们在表10(附录F)中将MagPie-Ultra与现有的公开监督微调(SFT)数据集进行了比较。评估套件涵盖指令跟随和对话基准测试IFEval(Zhou等人,2023)和MTBench(Zheng等人,2023);ARC Challenge中的推理任务;MMLU-Pro中的知识测试;以及用于数学评估的GSM8K和MATH。我们的数据集在大多数基准测试中优于MagPie-Pro,并且在IFEval和MT-Bench上大幅超越OpenHermes2.5和UltraChat(Ding等人,2023)。
表10显示了在我们考虑的SmolTalk的不同组件上训练后的性能。上半部分比较了基于不同指令数据集微调SmolLM 2的结果,下半部分评估了在SFT期间将20%专用数学数据添加到80% MagPie-Ultra+的基础混合物中的影响。最后一行,SmolLM 2-SFT,表示在DPO之前SmolLM 2的最终SFT检查点,在完整的SmolTalk数据集上训练了两个epoch。
表10.指令调优数据集上的性能。MagPie-Ultra+是指结合了Smol约束、Smol重写和Smol汇总的MagPie-Ultra。MagPie-Pro-MT是多圈型,而MagPie-Pro是单圈型。所有比较均通过在每个数据集上微调SmolLM 2基础模型进行,持续1个时期。SmolLM 2-SFT†是SmolLM 2的最终监督微调版本,在SmolTalk上训练了2个时期。
5.1.2 特定任务数据
我们开发了额外的特定任务数据集,以进一步增强模型在指令跟随方面的能力,使其具备详细约束(Smol-Constraint)、总结(Smol-Summarization)和改写(Smol-Rewrite)等功能。Smol-Constraint包含3.6万个带有详细约束的指令,这些约束与IFEval(Zhou等人,2023)中的类似。我们采用(Xu等人,2024)的方法并设置针对性的系统提示,使用Qwen2.5-72B-Instruct(Yang等人,2024b)为这些指令生成了55万个指令和响应。
然后,我们筛选掉包含冲突约束或错误响应的生成指令,最终得到5.63万个指令-响应对,在针对IFEval进行去污染处理(10元语法重叠)后,得到3.6万个对。对于Smol-Summarization和Smol-Rewrite,我们首先生成高质量的源文本,作为总结和改写任务的基础。
我们利用PersonaHub(Ge等人,2024)和FinePersonas数据集(Argilla,2024;Chan等人,2024)中的人物角色,合成了一系列多样化的电子邮件、推文、领英帖子和笔记。通过向Qwen2.5-72B-Instruct提供特定的系统提示和人物角色描述,我们能够生成具有不同写作风格、主题和视角的文本。
接着,我们让Qwen2.5-72B-Instruct对给定文本进行总结和改写,分别获得约100万个总结和60万个改写文本。将这3个Smol数据集添加到MagPie-Ultra中(MagPieUltra+),进一步提升了在IFEval上的性能,如表10(附录F)所示。
5.1.3 数学数据
为了提升数学推理能力,我们通过在包含80%通用指令数据(MagPie Ultra + Smol-Constraint、Smol-Rewrite、Smol-Summarization)和20%来自不同来源的数学数据的混合数据上进行微调,对公开的数学指令数据集进行了评估。表10(附录F)中的结果凸显了不同数据集的互补优势:NuminaMath-CoT(Li等人,2024b)在MATH和MT-Bench上表现出色,而MetaMathQA(Yu等人,2023,也包含在OpenHermes2.5中)在GSM8K上的结果有所改善。基于这些发现,我们将这两个数据集的组合纳入了SmolTalk。
5.1.4 其他专业数据
对于代码生成,我们使用了Self-OSS-Starcoder2Instruct(Wei等人,2024a),其中包含5万个高质量的Python指令-响应对。为了支持系统提示,我们从SystemChats2.0(Computations,2024)中随机选取了3万个样本,并且为了实现函数调用功能,我们添加了来自APIGen-FunctionCalling(Liu等人,2024)的8万个样本。
此外,为了在长上下文任务中保持强大的性能,我们纳入了LongAlign(Bai等人,2024)的英语子集(3700个样本,长度为8k-16k词元)。由于OpenHermes2.5在知识(MMLU-Pro)、日常对话(Face,2024)、2200个休闲多轮交互以及ExploreInstruct(Wan等人,2023)改写任务中表现出色,我们还随机添加了10万个OpenHermes2.5样本。
我们发现,按指定数量纳入这些数据集能够有效增强模型在目标能力方面的表现,同时在其他基准测试中也能保持良好的性能。
5.2 监督微调(SFT)
表9(附录F)展示了SmolTalk的最终组成。我们在SmolTalk上对基础SmolLM2进行了2轮监督微调,全局批次大小为128,序列长度为8192,学习率为\(3.0×10^{-4}\)。此SFT阶段后的评估结果见表10(附录F)。
5.3 对齐
对于偏好学习,我们采用直接偏好优化(DPO)(Rafailov等人,2024)。我们对各种公开的合成反馈数据集(Ivison等人,2024)进行了实验,包括UltraFeedback(Cui等人,2024)、UltraInteract(Yuan等人,2024)、Capybara(Daniele & Suphavadeeprasit,2023)和ORCA(Lv等人,2023)。结果表明,UltraFeedback在各个基准测试中表现最为稳定有效,能够提升MT-Bench、MMLU-Pro和MATH的成绩。我们进行了2轮训练,学习率为\(1.0×10^{-6}\),beta值为0.5,全局批次大小为128,序列长度为1024词元。在完成这一最终的DPO训练阶段后,我们得到了指令调优后的SmolLM2模型。正如Dubey等人(2024)所指出的,在DPO中使用短上下文数据不会影响模型的8k上下文处理能力。
5.4 指令模型评估
我们对最终的指令调优版本SmolLM2进行评估,并将其与Qwen2.5-1.5B和Llama3.2-1B的指令调优变体进行比较,结果见表5。SmolLM2-Instruct展现出强大的指令跟随能力,在IFEval上的表现远超Qwen2.5-1.5B-Instruct;在MT-Bench和OpenRewriteEval(Shu等人,2024)的文本改写任务中具有竞争力;并且在GSM8K和MATH的分数中体现出强大的数学能力。这些结果突出了SmolLM2在各种任务中的泛化能力,展示了其作为强大聊天助手的潜力。
6 SmolLM2 135M和360M
除了SmolLM2-1.7B,我们还训练了两个更小的模型:SmolLM2-360M(3.6亿参数,在4万亿词元上进行训练)和SmolLM2-135M(1.35亿参数,在2万亿词元上进行训练),它们在各自的参数规模类别中同样处于领先水平。鉴于它们较小的容量和较低的训练成本,我们在目标训练长度上重新进行数据消融实验,以确定最有效的数据混合方案。
我们发现,使用FineWeb-Edu分类器对DCLM进行筛选,去除分数为0的样本,并对分数为1和2的样本进行下采样的效果最佳。与采用多阶段训练策略的SmolLM2-1.7B不同,这些较小的模型受益于单阶段训练方法,且训练数据始终保持高质量。
我们从一开始就纳入了Stack-Edu,以及InfiMM-WebMath、FineMath和Cosmopedia。这些模型与SmolLM2-1.7B具有相同的架构,但使用分组查询注意力(GQA),并采用WSD调度器进行训练,衰减率为20%,学习率为\(3.0×10^{-3}\)。
在训练后处理阶段,我们使用经过筛选的SmolTalk3进行SFT,去除了复杂的指令跟随任务(例如函数调用)和MagPie-Ultra中的难题,以更好地匹配模型的能力。最后,我们使用UltraFeedback进行DPO训练,在保持连贯性和实用性的同时,优化模型的指令跟随能力。关于SmolLM2-360M和135M的更多详细信息,可在它们各自的模型卡片中查看。
7 结论
SmolLM2通过精心整理数据集和多阶段训练,推动了开放小型语言模型的发展,达到了新的技术水平。我们的方法强调了高质量、专业化数据集在使较小模型在各种基准测试中取得优异性能方面的关键作用。
FineMath、Stack-Edu和SmolTalk的开发弥补了现有公开数据集的不足,提升了模型在推理、数学和指令跟随任务方面的能力。为了支持未来的研究与开发,我们发布了SmolLM2以及训练过程中使用的数据集和代码。这些资源为训练高性能小型语言模型提供了全面的基础,使更广泛的研究人员和应用能够使用它们。
影响声明
本文所呈现的工作旨在推动机器学习领域的发展。我们的工作可能会产生许多潜在的社会影响,但在此我们认为无需特别强调其中任何一点。
附录
A. 训练设置
表6展示了SmolLM2 17亿参数版本的架构细节。
表6 SmolLM2架构概述。† 这是在将上下文扩展到8k词元之前的情况。
图3展示了使用WSD调度器在训练过程中学习率的变化情况。
图3 SmolLM2训练期间的学习率。我们使用了带有2000步热身、学习率为\(5.0×10^{-4}\) 且衰减率为10%的WSD调度器。
B. 英语网页数据消融实验
图4展示了在DCLM、FineWeb-Edu及其混合数据集上使用3500亿个词元训练的消融模型的评估曲线。
图4 在FineWeb-Edu和DCLM上使用3500亿个词元训练的模型评估。FineWeb-Edu在知识和推理任务上表现出色,而DCLM在常识推理基准测试中表现更强。FineWeb-Edu和DCLM按60/40的混合比例在所有任务中实现了平衡的性能。
C. FineMath
C.1 公共数据集比较
图5展示了在OWM和InfiMM-WebMath上训练的消融模型在GSM8K和MATH上的性能。
图5 比较OWM和InfiMM-WebMath文本部分的退火消融实验结果。InfiMM-WebMath在GSM8K上的表现始终优于OWM,而OWM在MATH上略有优势。尽管在600亿个数学词元上进行了训练(相当于OWM训练5个epoch,InfiMM-WebMath训练1.5个epoch),但性能仍远低于最先进的大语言模型,这凸显了对新数学数据集的需求。
C.2 注释提示(3分制)
我们使用以下提示模板,利用Llama3模型为FineMath生成3分制的银标签注释:
评估以下文本片段对高中和本科早期数学学习的潜在有用性。使用以下描述的3分评分系统。根据每个标准的满足情况累积分数:
如果片段包含一些数学内容,即使对学习不太有用或属于过于高级的学术论文,加1分。
如果片段在数学背景下展示了逻辑推理,即使缺乏逐步解释或过于高级,再加1分。
如果片段处于适当水平(高中和本科早期),并包含清晰的数学推导和数学问题的逐步解决方案,加3分。
符合标准的问答格式(例如来自教育网站或论坛的内容)是可以接受的。忽略任何格式错误或缺失的公式,并根据整体内容进行假设。
文本片段:
<EXTRACT>
检查完片段后:
简要说明你的总分,不超过100字。
以“最终得分:<总分>”的格式给出得分。
C.3 注释提示(5分制)
在第二阶段过滤时,我们使用以下提示模板,利用Llama3模型为FineMath生成5分制的注释:
评估以下文本片段对高中和本科早期数学学习的潜在有用性。使用以下描述的5分评分系统。根据每个标准的满足情况累积分数:
如果片段包含一些数学内容,即使对学习不太有用,或者包含非学术内容,如广告以及用于转换重量和货币的生成页面,加1分。
如果片段涉及数学主题,即使写得不好或过于复杂(如过于高级的学术论文),再加1分。
如果片段在数学背景下展示了解题或逻辑推理,即使缺乏逐步解释,加3分。
如果片段处于适当水平(高中和本科早期),并包含清晰的数学推导和数学问题的逐步解决方案,类似于教科书章节或教程,加4分。
如果片段在中学和高中数学教学和学习方面具有卓越的教育价值,包含非常详细且易于理解的解释,加5分。
符合标准的问答格式(例如来自教育网站或论坛的内容)是可以接受的。
文本片段:
<EXTRACT>
检查完片段后:
简要说明你的总分,不超过100字。
以“最终得分:<总分>”的格式给出得分。
D. Stack-Edu
D.1 提示
我们使用下面的提示模板为Stack-Edu(在本例中为Python)生成了5个比例的注释,使用的是Llama 3模型:以下是Python程序的摘录。评估它是否具有很高的教育价值,是否有助于教授编程。使用下面描述的加性5分评分系统。分数是根据每个标准的满足程度来累积的:
-如果程序包含有效的Python代码,即使它不是教育性的,比如样板代码、配置和利基概念,也加1分。- 如果程序涉及实际概念,即使没有注释,也要加一分。
- 如果该程序适合教育用途并引入了编程中的关键概念,即使该主题是高级的(例如,深度学习)。该代码应该结构良好,并包含一些注释。
- 如果该程序是独立的,并且与编程教学高度相关,请给第四分。它应该类似于学校练习、教程或Python课程部分。
- 如果该项目的教育价值突出,并且非常适合教授编程,则得5分。它应该写得很好,容易理解,并包含一步一步的解释和评论。
摘要:<EXAMPLE>在检查摘要后:-简要说明你的总分,最多100字。- 使用以下格式总结分数:“教育分数:<total points>我们对Stack-Edu中的其他14种编程语言使用类似的提示,调整第三个标准中的示例以反映特定于语言的主题。例如,在JavaScript提示符中,我们将“深度学习”替换为“异步编程”。
D.2.Stack-Edu语言统计
表7显示了在教育过滤之前和之后的Stack-Edu中每种编程语言的大小。最初,我们还包括了HTML,但是分类器的性能很差,所以我们保留了StarCoder 2Data。
表7.跨编程语言的Stack-Edu数据集统计。该表显示了每种编程语言的原始数据集大小(来自StarCoder 2Data)和过滤后的Stack-Edu大小。
E.详细的预训练结果
E.1.各训练阶段后的评价
各训练阶段结束时的SmolLM 2的评价结果如表8所示。除了消融期间使用的基准,我们还增加了四项生成性任务:CoQA(Reddy等人,2019年)、DROP(Dua等人,2019年)、Jeopardy(MosaicML,2024年)和SQuAD v2(Rajpurkar等人,2018年)
表8.每个基准模型在各个训练阶段的性能。阶段1-3处于稳定阶段(无学习速率衰减)。
E.2.MMLU进展
图6显示了整个稳定期内MMLU评分的进展。
F.后训练
表9显示了SmolTalk数据集的最终组成。
G.长上下文评估