微软Phi系列——教科书级合成数据的力量

背景

分享三篇微软推出的「合成数据」研究的系列文章——Phi系列。

整个系列的宗旨是研究在「模型尺寸小」,「数据规模小」,「数据质量高」的综合配置下,小模型(SLM)能达到怎样的效果,研究的核心是「数据质量」。

本文将介绍Phi-1、Phi-1.5、Phi-2的一些重要的数据组成、模型效果,以及一些启发思考。

Phi系列参数对比一览

系列名称

发布时间

模型参数

预训练数据量级

Phi-1

2023.6.20

1.3B

6B(web) + 1B(合成)

Phi-1.5

2023.9.11

1.3B

30B(21B合成)

Phi-2

2023.12.12

2.7B

1.4T

此处附一张其他主流模型的训练数据量级对比感受一下。

主流模型参数、数据量级

Phi-1

Paper链接:https://arxiv.org/abs/2306.11644

一句话总结

Phi系列的开山之作,主要面向code任务(Python语言),用极小的模型(1.3B),极少的预训练数据(7B)和可控的训练时长(8*A100,4days),达到比较好的code效果。

重点参数配置

任务:code任务(Python)

参数量:1.3B

训练时长:8*A100 for 4days

预训练数据

  • 高质量web数据:6B tokens

  • 来源为 The Stack and StackOverflow数据集,用GPT4进行辅助打分筛选100k

  • 合成教课书级 + 练习题数据【基于GPT-3.5】:1B tokens

  • 训练8epochs

SFT数据

  • 教科书练习题数据:180M tokens

  • 获取方式:GPT3.5

合成教科书级别数据的价值

  • 现有代码数据没有「自包含」,可能存在一些未知包、信息、数据导入等情况,代码中没有交代这些额外的信息(模型学起来会很困惑)

  • 缺少有价值的计算,仅仅是琐碎的样板代码,如变量定义、参数设置、GUI等(没有触及coding本质)

  • 算法逻辑包含在复杂的函数中,或者缺少文档,导致遵循和学习困难(题目难度设置不合理)

  • 代码的主题和用例分布不均衡,编码的概念和技能分布不平衡(数据有偏分布,多样性不足)

除此之外,合成数据有两点独特的优势:一是可以圈定训练目标,有针对性的提升模型的某项能力,不受真实数据分布的影响;二是可以避免引入有毒性或偏见的知识。

高质量web数据构造流程

Phi-1的预训练数据中,占比较大的还是真实的web数据,作者主要是对原始web数据进行了数据过滤。思路是首先用教师模型进行辅助标注,标注数据训练一个小的打分模型,并进一步用打分模型过滤数据。

原始输入为35M个web文件,总共包括35B tokens,来源是The Stack and StackOverflow。

详细过程:首先用「GPT4」标注一部分数据的质量(100k量级);用标注好的数据训练随机森林分类器(训练一个7B或13B的Llama或Mistral效果应该会更好),输入文本用预训练代码模型进行embedding;用分类器继续标注其他数据,得到高质量web数据集。

此处是唯一使用GPT4进行数据处理的步骤,GPT4的调用成本远高于GPT3.5,猜测作者是想获得质量更高的训练数据,GPT3.5的错误率可能较高。

合成教课书数据构造流程「Pretrain数据」

本文最大的亮点,合成「教科书级别」的训练数据。合成数据的一个挑战是要在保证质量的前提下,提高数据多样性,减少重复。

所谓多样,即需要覆盖不同的编码概念、技能、场景,且复杂度、难度、风格。

要达到多样的效果,仅仅微调prompt或在prompt中指示模型来提高多样性是不行的,GPT仍然会因为自身选择高概率的next token而导致数据的同质性,论文提出的方法是从字典中随机采样一些words,基于这些words,让GPT3.5编一个coding题目,题目中必须包含这些words,然后继续生成后续内容。

这也是LLM时代生产数据,尤其是pretrain数据的一个思路,因预训练数据量极大,所以想办法在保证某些维度多样的情况下去铺面。

教科书级合成代码数据

合成练习题数据构造流程「SFT数据」

合成练习题数据的格式是:函数名和docstring,目标是让模型去补全代码,对齐实际应用时的任务形式。

同Pretrain,通过函数名称的随机性保证多样性。

教科书级练习题-SFT数据

实验结果

不同模型尺寸,不同预训练数据组成,是否经过SFT的实验结果。

对比实验结果标题

注:51B为在数据上训练8个epoch。Phi-small:350M模型;Phi-1-base:预训练模型;Phi-1:微调模型

  1. 微调后,模型的效果有明显的提升,HumanEval任务上,由29% -> 51%(超越GPT3.5,低于GPT-4)

  2. 模型会在SFT数据没用过的函数库和更难的算法上表现出OOD能力,说明微调可以帮助模型重组和巩固预训练阶段学习到的知识,并能学到底层联系

  3. SFT后的模型的对话能力,比仅进行Pretrain的模型和SFT过的更小尺寸模型更强,尽管SFT数据中没有对话数据(可以理解为激发了模型的对话能力)

文章最后还用较大篇幅进行了去数据污染的研究(为微软研究人员的严谨和公平公正打call!!!)。

为了避免SFT对结果有污染,即有相似训练数据,通过embedding距离和字符编辑距离两种方式对sft数据进行了缩量,缩量前后得结果,都能证明Phi模型效果更好。(侧面证明了,确实教会了模型重组知识进行推理,而不是仅记忆)

Phi-1.5

Paper链接:https://arxiv.org/abs/2309.05463

一句话总结

Phi-1的续作,主要面向常识推理任务,用极小的模型(1.3B),极少的预训练数据(30B)和可控的训练时长(8*A100,4days),达到与10x模型相当的效果。

重点参数配置

任务:常识推理 + code(小学数学、基础code、语言理解)

参数量:1.3B

训练时长:1.5k GPU hours,仅进行了预训练,无SFT和RLHF

Phi-1.5 预训练数据:30B

  • 绝大部分都是合成数据(可以有效缓解有毒性和偏见回复)

  • 进一步引入过滤过的web数据,可以进一步提高模型效果(验证高质量web数据的影响)

  • Phi-1的7B数据(6B code数据 + 1B 合成数据)

  • 20B合成教科书级别数据(为了提高常识推理能力,教授通用知识)

  • 过滤高质量web数据,共95B,为了研究传统web数据的影响

Phi-1.5-web-only 预训练数据: 95B

  • 88B:Falcon refined web dataset

  • 7B:code data filtered from The Stack and StackOverflow

  • 80% web数据 20% code数据

Phi-1.5-web预训练数据:100B

  • 40% 过滤高质量web数据

  • 20% Phi-1's code data

  • 40% 合成自然语言处理数据

20B合成教科书级别数据

  • 选取20k个主题,并生成prompt,引入从web获取的样例(为GPT3.5引入随机token),来提高多样性

实验结果

常识推理任务实验结果:

常识推理-实验结果
  • Phi-1.5-web-only vs Falcon-rw-1.3B

两者的模型大小一致,训练数据来源一致,Phi-1.5-web-only在仅保留15%高质量数据的前提下,比全量数据训练的效果好。

引入合成数据后,Phi-1.5-web的效果有明显提升;

不使用web数据,仅使用合成自然语言处理数据和Phi-1的数据,Phi-1.5的效果也略低于Phi-1-web,但好于其他模型。

语言理解任务实验结果:

Phi-1.5与其他模型并未有明显差距。

多步推理任务实验结果:

多步推理-实验结果
  • Phi-1.5-web vs Phi-1.5

web数据的收益明显 。说明多样的web数据可以训练模型的底层推理能力。

Phi-1.5的code能力(使用了训练Phi-1的code数据)维持了Phi-1的能力。说明多任务训练时,模型的各方面能力都能保持。

综合实验结果:

综合结果
  • 结合使用过滤的web数据和生成数据,模型能达到更好的效果

  • 多任务的训练可以保持之前单一训练的模型效果,即不会因为学习了更多的任务,而损伤了某个任务的效果

  • 在保证数据质量的前提下,仅用15%的数据,就能实现比全量数据更好的效果(对比Falcon)

另外,同Phi-1,文章还研究了偏见与有毒性,使用高质量的过滤数据和合成数据,会明显提高生成内容的安全性。

Phi-1.5在推理任务上的继续研究,基本延续了Phi-1的结论,即少量的高质量的数据,能让模型的效果明显提升,超越scale law的限制。这种提升是普遍的,不局限在code任务上。

web数据引入,能明显提高模型的推理能力,但引入过多,则会降低模型的效果。猜测有两个因素:一是数据重复现象更多的存在,降低了模型的泛化性;二是低质数据的影响。

web数据引入,增大了模型生成偏见和有毒性内容的概率,主要还是web内容的复杂性和不可控性。

Phi-2

Report链接:Phi-2: The surprising power of small language models - Microsoft Research

技术报告总结

微软的研究人员在Phi系列的探索越走越远,小模型的研究可以帮助人们更快的理解、验证LLM的机理;同时,小模型在生产应用,推理速度方面也有着大模型无可比拟的优势。

Phi-2在模型参数量和训练数据量上都有了的突破(小力出小奇迹???),模型参数增大一倍多,达到2.7B,训练数据更是两个量级的提升,达到了1.4Ttokens,效果同样有了大幅提升。

重点参数配置

任务:推理、语言理解

参数量:2.7B

预训练数据:1.4T tokens(具体分布未知,但肯定还是高质量web + 合成教科书数据的思路)

训练时长:14 days on 96 A100 GPUs(仅Pretrain,无SFT和RLHF)

实验结果

Phi-2比Phi-1.5的效果有显著提升。

Phi-2对比Phi-1.5实验结果

Phi-2的有毒性和偏见得分会弱于Phi-1.5,说明更多的数据引入会导致模型生成不可控(与Phi-1.5引入web数据的对比结论一致)。

Phi-2偏见实验结果

与当红炸子鸡的对比:相比谷歌刚推出的Gemini nano 2,效果更好;相比Mistral(7B)和Llama-2(7B~70B),综合效果更好。

Gemini:刚出来就要被拎出来处刑~~~

Phi-2对比Gemini和Mistral

官网的技术报告暂时爆料的细节还不是很多,有详细paper时再作补充。

总结

微软在SLMs上的研究系列让各位LLM从业者看到了曙光,不需要堆大量的数据、算力、参数,模型也可以在某些领域表现良好。

总结Phi系列模型上得到的一些公共结论:

  1. 教科书级别的高质量合成数据,可以极大的提高模型效果,但要有合适的format,并同时保证质量和多样性。

  2. web数据对模型推理等能力的提升作用是明显的,但也要保证数据质量,进行精细的过滤。

  3. 大量web数据的引入,因内容的多样性和不可控,会导致模型生成内容有更多的偏见和毒性,同样需要有精细的过滤,以及后续RLHF阶段的安全对齐。

  4. 保证数据多样性是重要的,同时也是一项复杂的工作,Phi系列用随机抽取words、随机引入web文本来保证多样性,我们也可以探索更多方法。

(个人原创,转载请注明出处。欢迎点赞收藏关注,持续分享交流大模型前沿进展。)

参考文献

[1] GUNASEKAR S, ZHANG Y, ANEJA J, et al. Textbooks Are All You Need[J].

[2] LI Y, BUBECK S, ELDAN R, et al. Textbooks Are All You Need II: phi-1.5 technical report[J].

[3] Phi-2: Phi-2: The surprising power of small language models - Microsoft Research

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值