最新发布!MPT-7B:一个可用于商业用途的开源模型,模型效果堪比LLaMA-7B(可线上体验)
引言
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 中的关键架构选择之一。
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 数据集的元素,以便数据集的网络抓取和维基百科部分包含来自的最新信息。
「数据流」:利用MosaicML的StreamingDataset将数据托管在标准的云对象存储中,并在训练期间将其有效地流式传输到计算集群中。
「模型训练」:如下表所示,几乎所有的训练预算都花在了基础MPT-7B模型上,该模型在 440xA100-40G GPU上训练花费了约9.5天,成本约为20万美元。经过微调的模型需要更少的计算,而且更便宜——每个模型的价格在几百到几千美元之间。
MPT模型使用ALiBi而不是位置嵌入,它可以提高对损失峰值的弹性。 使用Lion优化器而不是AdamW来训练MPT模型,它可以提供稳定的更新幅度并将优化器状态内存减少一半。 使用MosaicML平台的NodeDoctor功能来监控和解决硬件故障,并使用JobMonitor功能在这些故障解决后恢复运行。在训练过程中尽管在运行期间出现4次硬件故障,它能够在没有人为干预的情况下从头到尾训练 MPT-7B。如下图所示:
推荐阅读
[1]ICLR2023 | 上下文学习的可解释性,及实验论证
[2]MiniGPT-4 发布,代码模型开源,支持在线体验!
[6]OpenAGI:一个开源的通用人工智能(AGI)研究平台