首页 > 其他分享 >phi-1:高质量小数据小模型逆袭大模型

phi-1:高质量小数据小模型逆袭大模型

时间:2023-06-27 11:37:19浏览次数:53  
标签:phi 训练 模型 HumanEval token 数据 逆袭

人工智能的三个核心要素是算力、算法和数据,这是大多数人在初识人工智能时都会接触到的一个观点。不过,在深入阐述该观点时,很多材料都倾向于解释数据「大」的一面,毕竟当前的大模型一直在由不断增加的「大数据」来推动,而且这条路似乎还没有走到极限。
不过,随着数据获取难度增加以及算力增长出现瓶颈,单纯追求「大模型、大数据」的道路变得愈发难以为继。因此,早在 2022 年,吴恩达就在采访中呼吁大家关注「小数据」,即数据量较小但质量较高的数据。「在数据行业,我认为重点必须从大数据转向优质数据。拥有 50 个精心设计的示例就足以向神经网络解释用户希望它学习什么。」吴恩达表示。
高质量的「小数据」到底有多大威力?最近,来自微软的一篇题为「Textbooks Are All You Need」的论文给出了一个非常直观的答案。
图片

论文链接:

https://arxiv.org/pdf/2306.11644.pdf
他们用规模仅为 7B token 的「教科书质量」数据训练了一个 1.3B(13 亿参数)的模型 ——phi-1。phi-1 专注于编码任务,具体来说是编写 Python 函数和对应的文档字符串。训练数据由网上筛选的教科书质量数据(6B token)和 GPT-3.5 生成的教科书及练习数据(1B token)组成。训练时,模型对 70 亿的 token 进行了 8 次遍历。然后在不到 2 亿 token 的数据上进行了微调。整个训练过程在 8 个 A100 上进行,为期 4 天。
结果表明,尽管在数据集和模型大小方面比竞品模型小几个数量级,phi-1 依然在 HumanEval 的 pass@1 上达到了 50.6% 的准确率,在 MBPP 上达到了 55.5%,这是仅使用一个 LLM 生成的最佳自我报告数字之一。

 

图片

 

论文作者之一 Sebastien Bubeck 表示,任何在 HumanEval 上达到 50% 以上准确率的模型都要比 phi-1 大得多,比如前段时间超越所有开源模型、击败 Claude 和 Bard、专门用于编程任务的大模型 WizardCoder 参数量达到了 phi-1 的 10 倍以上,而所用的数据集规模则高达百倍。

 

图片

 

此外,研究者还提出了一个更小的模型:参数量为 350M 的 phi-1-small。该模型用与 phi-1 相同的 pipeline 进行训练,在 HumanEval 上达到了 45% 的准确率。
从 phi-1 这项研究可以看到,高质量数据的引入改变了模型性能与规模之间的关系,突破了之前的 scaling laws。它表明,高质量数据可以提升大型语言模型(LLM)的 SOTA,同时大大降低数据集的规模和计算量,这对于当前算力紧张的局面来说是个好消息。
在论文第二部分,作者详述了他们的训练过程,并讨论了他们的数据选择过程对于取得这个结果的重要性。此外,尽管 phi-1 的训练 token 远少于现有模型,但它仍然显示出了涌现特性。在第三部分,作者讨论了这些涌现特性,通过比较 phi-1 和 phi-1-small 的输出,确认了参数数量在「涌现」方面起关键作用的假设。
这一部分用到的方法与 Sparks of AGI 论文的精神相呼应,该论文主张摆脱静态基准,来测试 LLM 的性能。最后,在第四部分,作者讨论了评估模型的替代基准,而在第五部分,他们研究了他们的训练数据在 HumanEval 方面可能受到的「污染」。
这篇论文引起了不少研究者的关注,认为它代表了一种研究趋势。最近回归 OpenAI 的 Andrej Karpathy 展望说,「我们可能会看到更多创造性的『缩小规模』工作:将数据质量和多样性置于数量之上,更多的合成数据生成以及小型但功能强大的专家模型将会出现。」

 

图片
爱丁堡大学博士生符尧也给予了该文高度评价,认为其通过将数据工程推向极限,充分利用了基础模型(不仅仅是 GPT-3.5)的潜力,同时指出该研究可能过于偏向于 HumanEval 风格的测试,因此未来的研究方向可能需要平衡模型的能力。

 

图片
他的详细评价如下:
1、Prompt engineering
这可能是最重要 / 棘手的部分,因为作者大量使用 promp 来引导 GPT-3.5 生成预训练的教科书和 SFT 代码练习。显然,大部分性能提升来自这个阶段。我进一步的假设是:
如果将这些数据用于继续训练 GPT-3.5 本身,即教师模型,它也会有进一步改进的性能,就像之前的 LMSI(Large Language Models Can Self-Improve)论文展示的一样,因此我倾向于将 Phi-1 论文视为推动 LMSI 方法的一大步。
将教师模型更改为在足够多代码上进行预训练的任何预训练模型,也可以获得类似质量的数据,当然,这需要一个良好的基础模型。
综合上述观点,基本上对于任何优秀的基础模型,都可以从基础模型中通过 prompt 合成教科书数据,然后使用模型生成的数据来改进自身,或者蒸馏为更小的专门化变体。
2、能力平衡
从论文的印象来看,我觉得预训练和 SFT 数据可能与 HumanEval 过于接近(并且作者证明没有污染)。基本上,作者构建了一个用于 Human Eval 的训练集。这有多重含义:
为感兴趣的测试问题构建训练集没有问题,我猜测大多数部署的模型都这样做。
然而,它降低了在分布内泛化的挑战程度,尽管对于与推理相关的任务和小型模型来说,这仍然是个挑战。
然而,LLM 最重要的能力在于分布外泛化,因为更大的模型会泛化到远离其训练 / 微调分布的内容。Phi-1 在小模型的分布内泛化方面做得最好(可能是极限),但在 LLM 时代,我们对分布外、少样本泛化更感兴趣。
推动分布内泛化的极限,会以显著降低通用领域能力为代价,如作者所讨论的(也可以参见我们以前的工作:https://arxiv.org/abs/2301.12726)。因此,下一步工作可能落脚于如何进行好的数据混合,以保持编码性能的同时,也能提高通用能力。
总体而言,这是一项令人印象深刻的工作!我学到了很多!
以下是论文细节。
 
高质量数据来源及其重要性
phi-1 的训练依赖于三个主要的数据集:
  • 一个经过筛选的代码 - 语言数据集,它是 The Stack 和 StackOverflow 的一个子集,通过使用基于语言模型的分类器获得(包含约 6B token)。

  • 一个合成的教科书数据集,包含不到 1B 个 token 的 GPT-3.5 生成的 Python 教科书。 

  • 一个小型的合成练习数据集,包含大约 180M 个 token 的 Python 习题和答案。
以上数据组成了总 token 量不到 7B 的训练数据集。作者将经过筛选的代码 - 语言数据集和合成的教科书数据集的组合称为「CodeTextbook」,并在预训练阶段使用它来获得一个基础模型 phi-1-base—— 该模型已经在 HumanEval 上达到了 29% 的准确率。然后,他们使用 180M 个 token 的合成练习数据集,称为「CodeExercises」,对 phi-1-base 模型进行微调,以获得 phi-1 模型。
尽管「CodeExercises」数据集规模较小,但通过这个数据集进行微调不仅在生成简单的 Python 函数方面带来了巨大的改进(如图 2.1 所示),而且更广泛地解锁了 phi-1 模型中许多有趣的新能力,这些能力在 phi-1-base 模型中没有观察到。
 
模型架构细节
该研究使用仅含解码器(decoder-only)的 transformer 模型 —— 使用多头注意力 (MHA) 的 FlashAttention 实现,并参考一些新模型,包括 CodeGen、PaLM 和 GPT-NeoX,在并行配置中使用 MHA 和 MLP 层。
具体来说,1.3B 参数的 phi-1 模型由 24 层组成,隐藏维度为 2048,MLP 内部维度为 8192,使用 32 个注意力头,每个注意力头维度为 64。350M 参数的 phi1-small 模型由 20 层组成,隐藏维度为 1024,MLP 内部维度为 4096,16 个注意力头,每个维度为 64。
值得注意的是,该研究没有使用 Fill-In-the-Middle (FIM)、 Multi-Query-Attention (MQA) 等可以进一步提高模型性能和效率的新方法。
 
在CodeExercises上微调后模型能力的峰值
如下图 2.1 所示,该研究发现模型在 HumanEval 基准上的最大改进来自于在小型 CodeExercises 数据集(<200M token)上的微调。CodeExercises 仅包含使用基本 Python 库的简短 Python 任务。
图片
该研究表明,微调后的模型在执行微调数据集中没有的任务上也表现出显著的性能改进。
微调提升了模型的理解能力
该研究仅使用简单的 Python 函数就观察到,微调后的模型对指令的理解和遵循程度要高得多。例如,phi-1-base 很难处理 prompt 中的逻辑关系,而 phi-1 可以正确解释问题并生成答案。
图片

 

微调提升了模型使用外部库的能力
该研究发现在 CodeExercises 上的微调意外地提高了模型使用 Pygame 和 Tkinter 等外部库的能力,尽管微调中不包含这些库。这表明微调不仅改进了目标任务,还使不相关的任务更容易从预训练中蒸馏(distill)出来。
图片

 

LLM分级中非常规问题的评估

如下表 1 所示,phi-1 在 HumanEval 基准上取得了令人惊讶的良好性能。但一个潜在问题是,phi-1 优越的性能可能来源于 CodeExercises 数据集的「污染」。
图片
为了最大限度地减少 bias 和数据泄露(data leakage),该研究在没有访问 CodeExercises 数据集的情况下创建了新的评估问题。具体来说,该研究以 HumanEval 的格式创建了 50 个新问题,并附有设计说明,这些问题不太可能出现在现实世界的代码库或编码练习中。例如:
图片
下表 2 显示了 phi-1 和一些模型的比较结果:
图片

 

 
数据修剪及性能评估
如上图 2.1 所示,在 CodeExercises 上的训练显著提升了模型在 HumanEval 基准上的性能。为了研究这种提升,该研究通过移除与 HumanEval「相似」的文件来修剪 CodeExercises 数据集。这个过程可以被视为数据净化的「强力形式」。
然后,该研究在修剪过的数据上重新训练模型,模型在 HumanEval 基准上仍然表现出强大的性能。特别是,即使在修剪超过 40% 的 情况下,重新训练的 phi-1 仍然优于 StarCoder。
图片
感兴趣的读者可以阅读论文原文,了解更多研究细节。

标签:phi,训练,模型,HumanEval,token,数据,逆袭
From: https://www.cnblogs.com/botai/p/phi-1.html

相关文章

  • LLaMA模型微调版本 Vicuna 和 Stable Vicuna 解读
    Vicuna和StableVicuna都是LLaMA的微调版本,均遵循CCBY-NC-SA-4.0协议,性能方面Stable版本更好些。CCBY-NC-SA-4.0是一种知识共享许可协议,其全称为"署名-非商业性使用-相同方式共享4.0国际"。即用的时候要署名原作者,不能商用,下游使用也必须是相同的共享原则。VicunaVicun......
  • 实用模型推荐(一)相似度,文本向量化:text2vec-base-chinese
    1.开源地址:https://github.com/shibing624/text2vec2.使用场景:文本相似度计算,文本转指令3.API封装:importuvicornfromfastapiimportFastAPIfromloguruimportloggerfrompydanticimportBaseModelfromstarlette.middleware.corsimportCORSMiddlewarefromte......
  • LangKit:大语言模型界的“安全管家”
    ChatGPT等大语言模型一直有生成虚假信息、数据隐私、生成歧视信息等难题,阻碍了业务场景化落地。为了解决这些痛点并增强大语言模型的安全性,AI和数据监控平台WhyLabs推出了LangKit。(开源地址:https://github.com/whylabs/langkit)LangKit提供文本输入/输出监控、安全和隐私、情绪分......
  • 李彦宏:AI原生应用比大模型数量更重要
    6月26日,百度创始人、董事长兼首席执行官李彦宏出席“世界互联网大会数字文明尼山对话”,发表了题为《大模型重塑数字世界》的演讲。大模型是当下全球科技创新的焦点,也是全球人工智能竞赛的主战场。李彦宏认为,“新的国际竞争战略关键点,不是一个国家有多少个大模型,而是你的大模型上有......
  • Rabbitmq:消息队列介绍、Rabbitmq安装、 基于Queue实现生产者消费者模型、基本使用(生产
    目录一、消息队列介绍1.1介绍1.2MQ解决什么问题1.3常见消息队列及比较二Rabbitmq安装2.1服务端原生安装2.2服务端Docker安装2.3客户端安装2.4设置用户和密码三基于Queue实现生产者消费者模型四基本使用(生产者消费者模型)五消息安全之ack六消息安全之durable持久化七闲置消......
  • Bertviz: 在Transformer模型中可视化注意力的工具(BERT,GPT-2,Albert,XLNet,RoBERTa,CTRL,etc
    BertVizBertViz是一个在Transformer模型中可视化注意力的工具,支持transformers库中的所有模型(BERT,GPT-2,XLNet,RoBERTa,XLM,CTRL等)。它扩展了LlionJones的Tensor2Tensor可视化工具和HuggingFace的transformers库。Blogpost:解构伯特,第2部分:视觉化注意的内部运作(第一部分不是先决......
  • 最强NLP模型BERT可视化学习
    2023年06月26日是自然语言处理(NaturalLanguageProcessing,NLP)领域的转折点,一系列深度学习模型在智能问答及情感分类等NLP任务中均取得了最先进的成果。近期,谷歌提出了BERT模型,在各种任务上表现卓越,有人称其为“一个解决所有问题的模型”。BERT模型的核心思想有两点,对推动NLP的......
  • Python基于SVM和RankGauss的低消费指数构建模型
    全文链接:https://tecdat.cn/?p=32968原文出处:拓端数据部落公众号分析师:WenyiShen校园的温情关怀是智慧校园的一项重要内容。通过大数据与数据挖掘技术对学生日常校园内的消费信息进行快速筛选和比对,建立大数据模型,对校园内需要帮助的同学进行精准识别,为高校温情关怀提供有效的......
  • R语言用灰色模型 GM (1,1)、神经网络预测房价数据和可视化|附代码数据
    被客户要求撰写关于灰色模型的研究报告,包括一些图形和统计输出。以苏州商品房房价为研究对象,帮助客户建立了灰色预测模型GM(1,1)、BP神经网络房价预测模型,利用R语言分别实现了GM(1,1)和BP神经网络房价预测可视化由于房价的长期波动性及预测的复杂性,利用传统的方法很难准确......
  • Hugging News #0626: 音频课程更新、在线体验 baichuan-7B 模型、ChatGLM2-6B 重磅发
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「HuggingNews」,本期HuggingNews有哪些有趣的消息,快来看看吧!重要更新最新音频课程现已发布近期,我们......