查看原文
其他

最新发布!MPT-7B:一个可用于商业用途的开源模型,模型效果堪比LLaMA-7B(可线上体验)

ShuYini AINLPer 2023-07-10

点击上方AINLPer,设为星标
更多干货,第一时间送达

引言

 MPT-7B模型是一个基于Transformer在1T文本/代码Token上训练得到的,且不包含任何预训练。「该模型开源,可用于商业用途,并且与LLaMA-7B模型效果相近」。MPT-7B基于MosaicML平台进行训练,零人工干预,耗时9.5天,共计花费20万美元。任何人都可以基于MPT模型进行训练、微调和部署,除此之外,「它们还发布了三个微调模型:MPT-7B-Instruct、MPT-7B-Chat和MPT-7B-StoryWriter-65k+」 ,其中最后一个可以使用65k Token的上下文长度。

同级别模型对比

 大型语言模型 (LLM) 正在改变世界,但对于计算资源不足的人来说,训练和部署这些模型可能极其困难。这也产生了一系列以开源LLM为中心的活动,例如Meta的LLaMA系列、EleutherAI的Pythia系列、StabilityAI的StableLM系列以及 Berkeley AI Research的OpenLLaMA模型。MPT(MosaicML Pretrained Transformer)的新模型系列,以解决上述模型的局限性,并最终提供一个可商用的开源模型,并且在许多方面超越LLaMA-7B。具体可以表现在以下几个方面:

  • 1.相比LLaMA,MPT可用于商业用途,根据一系列基准对MPT进行了严格评估,MPT 达到了LLaMA-7B设定的高质量标准。
  • 2.在更大量数据(1T Tokens)上进行训练(Pythia都是300B,OpenLLaMA的300B,StableLM的800B)。
  • 3.支持多达65k个Token输入,并且可以处理多达84k,而其他开源模型一般为2k-4k。
  • 4.通过FlashAttention和FasterTransformer,对快速训练和推理进行了优化。
  • 5.配备高效的开源训练代码。
  • 6.针对不同场景,发布了三个微调模型:MPT-7B-Instruct、MPT-7B-Chat和MPT-7B-StoryWriter-65k+。

MPT介绍

 与GPT一样,MPT模型样式是Decoder-Only Transformer,「但是相比GPT具有多项架构改进:更改性能优化架构层实现更高的训练稳定性;通过用ALiBi替换位置嵌入来消除上下文长度限制」。由于这些修改,人们可以高效地训练 MPT 模型(40-60% MFU)而不会偏离损失峰值,并且可以使用标准HuggingFace管道和FasterTransformer为MPT模型提供服务。

MPT-7B基础模型

 MPT-7B效果与LLaMA-7B相当,并且在标准学术任务上优于其他开源7B-20B模型。为了评估模型质量,我们编制了11个常用于上下文学习 (ICL) 的开源基准,并以行业标准的方式对其进行格式化和评估。我们还添加了我们自己策划的Jeopardy 基准测试,以评估模型为具有挑战性的问题提供事实正确答案的能力。MPT与其他模型的零样本性能比较如下表所示:

MPT-7B-StoryWriter-65k+

 大多数开源语言模型只能处理最多包含几千个标记的序列,具体对比如下图所示。但借助 MosaicML 平台和 8xA100-40GB 的单个节点,您可以轻松微调MPT-7B以处理高达65k的上下文长度!处理这种极端上下文长度自适应的能力来自ALiBi,它是 MPT-7B 中的关键架构选择之一。 使用65k上下文窗口可以做什么呢?MosaicML发布了MPT-7B-StoryWriter-65k+。StoryWriter在 books3 语料库中包含的小说书籍的 65k-token 摘录上从 MPT-7B 进行了2500步微调。与预训练一样,这个微调过程使用了下一个标记预测目标。事实证明,《了不起的盖茨比》的全文不到68K个Token。因此,很自然地,可以让StoryWriter阅读了《不起的盖茨比》并生成了结语。生成的结语之一如下图所示。StoryWriter 在大约 20 秒内完成了《了不起的盖茨比》(大约每分钟 15 万字)。由于序列长度较长,它的“打字”速度比我们其他的 MPT-7B 型号慢,大约每分钟 105 个单词。 尽管 StoryWriter 已使用 65k 上下文长度进行了微调,但 ALiBi 使模型可以推断出比训练时更长的输入:在《了不起的盖茨比》的情况下为 68k 令牌,在我们的测试中高达84k令牌。

Demo地址:https://huggingface.co/mosaicml/mpt-7b-storywriter

MPT-7B-Instruct

 LLM预训练引导模型根据提供的输入继续生成文本。但在实践中,希望LLM将输入视为要遵循的说明。指令微调是训练LLM以这种方式执行指令遵循的过程。通过减少对精准的提示工程的依赖,指令微调使LLM更易应用。指令微调的进展一直受到FLAN、Alpaca和Dolly-15k数据集等开源数据集的推动。

 这里公布了一个商业上可用的指令遵循模型:MPT-7B-Instruct。Dolly具备商业应用许可,但需要更多数据,因此我们用Anthropic的Helpful&Harmless数据集的一个子集扩充了 Dolly,在保持商业许可的同时将数据集大小翻了两番。使用新得数据集对MPT-7B进行微调,生成可以商用得MPT-7B-Instruct。结果发现,MPT-7B-Instruct是一个有效的指令跟随模型。MPT-7B-Instruct在1万亿个Token进行了广泛的训练,可以与更大的 dolly-v2-12b 竞争,后者的基础模型Pythia-12B仅在 3000亿个Token上进行了训练。

Demo地址:https://huggingface.co/spaces/mosaicml/mpt-7b-instruct

MPT-7B-Chat

 基于对MPT-7B的微调,MosaicML还开发了MPT-7B-Chat,这是MPT-7B的对话版本。MPT-7B-Chat已经使用 ShareGPT-Vicuna、HC3、Alpaca、Helpful and Harmless 和 Evol-Instruct 进行了微调,确保它能够胜任各种对话任务和应用程序。它使用ChatML格式,提供了一种方便和标准化的模型系统消息传递方式,有助于防止恶意提示注入。

 MPT-7B-Instruct专注于为指令遵循提供更自然和直观的界面,而 MPT-7B-Chat 旨在为用户提供无缝、引人入胜的多轮互动。「为了遵守微调所用的一些数据集的许可,请注意MPT-7B-Chat不可用于商业目的」

Demo地址:https://huggingface.co/spaces/mosaicml/mpt-7b-chat

模型训练

「数据集」:希望MPT-7B成为高质量的独立模型,并成为各种下游用途的有用起点。因此,预训练数据来自 MosaicML 精选的混合来源,如下表所示。使用EleutherAI GPT-NeoX-20B Tokenizer 对文本进行Token化,并在1万亿个Token上对模型进行了预训练。该数据集强调英语自然语言文本和未来使用的多样性(例如,代码或科学模型),并包括最近发布的 RedPajama 数据集的元素,以便数据集的网络抓取和维基百科部分包含来自的最新信息。「Tokenizer」:使用了EleutherAI的GPT-NeoX 20B Tokenizer,Tokenizer的词汇量为50257,将模型词汇量设置为50432。这样做的原因有两个:首先,使其成为 128 的倍数,实验发现MFU提高了多达四个百分点。其次,保留可用于后续UL2培训的Token。

「数据流」:利用MosaicML的StreamingDataset将数据托管在标准的云对象存储中,并在训练期间将其有效地流式传输到计算集群中。

「模型训练」:如下表所示,几乎所有的训练预算都花在了基础MPT-7B模型上,该模型在 440xA100-40G GPU上训练花费了约9.5天,成本约为20万美元。经过微调的模型需要更少的计算,而且更便宜——每个模型的价格在几百到几千美元之间。「训练的稳定性」:对于很多实验团队来说,在成百上千个GPU上训练具有数十亿个参数的LLM是极具挑战性的。在训练过程中硬件经常会出现意想不到的问题,损失峰值破坏训练进度。为此需要有人7x24小时的注意训练进度以及时的人工干预遇到的问题。对此,MosaicML研究团队解决了这个问题。具体解决方法如下:

  • MPT模型使用ALiBi而不是位置嵌入,它可以提高对损失峰值的弹性。
  • 使用Lion优化器而不是AdamW来训练MPT模型,它可以提供稳定的更新幅度并将优化器状态内存减少一半。
  • 使用MosaicML平台的NodeDoctor功能来监控和解决硬件故障,并使用JobMonitor功能在这些故障解决后恢复运行。在训练过程中尽管在运行期间出现4次硬件故障,它能够在没有人为干预的情况下从头到尾训练 MPT-7B。如下图所示:

推荐阅读

[1]ICLR2023 | 上下文学习的可解释性,及实验论证

[2]MiniGPT-4 发布,代码模型开源,支持在线体验!

[3]中文命名实体识别(NER)数据集大盘点(全)

[4]大型语言模型落地对话系统,该从哪些方面入手?

[5]中文通用开源指令数据集(COIG):数据多样,质量高

[6]OpenAGI:一个开源的通用人工智能(AGI)研究平台

点击下方链接🔗关注我们

「资料整理不易,点个再看吧」

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存