【深度学习:MPT-30B】提高开源基础模型的标准

在这里插入图片描述

【深度学习:MPT-30B】提高开源基础模型的标准

    • MPT-30B家族
      • MPT-30B (Base)
      • MPT-30B-Instruct
      • MPT-30B-Chat
      • 使用 MosaicML Inference 部署 MPT-30B 模型
      • 通过 MosaicML 培训定制 MPT-30B
        • LLM Foundry
      • 下一步是什么?
    • 附录
      • 致谢
      • 数据
        • MPT-30B 8k 上下文窗口微调数据
        • MPT-30B-指令微调数据
        • MPT-30B-聊天微调数据
    • 评估
      • Falcon 代码评估免责声明

隆重推出 MPT-30B,它是我们开源模型基础系列中功能更强大的新成员,在 NVIDIA H100 Tensor Core GPU 上使用 8k 上下文长度进行训练。

在这里尝试 HuggingFace 上的 MPT-30B-Chat!

自 5 月份推出 MPT-7B 以来,ML 社区热切地接受开源 MosaicML 基础系列模型。 MPT-7B 基础、-Instruct、-Chat 和 -StoryWriter 模型的总下载量已超过 300 万次!

我们对社区使用 MPT-7B 构建的内容感到不知所措。强调几个:LLaVA-MPT 为 MPT 添加了视觉理解,GGML 在 Apple Silicon 和 CPU 上优化 MPT,GPT4All 允许您使用 MPT 作为后端模型在笔记本电脑上运行类似 GPT4 的聊天机器人。

今天,我们很高兴通过 MPT-30B 扩展 MosaicML 基础系列,MPT-30B 是一种获得商业用途许可的新型开源模型,其功能明显比 MPT-7B 更强大,并且性能优于原始的 GPT-3。此外,我们还发布了两个经过微调的变体:MPT-30B-Instruct 和 MPT-30B-Chat,它们构建在 MPT-30B 之上,分别擅长单轮指令跟踪和多轮对话。

所有 MPT-30B 模型都具有与其他 LLM 不同的特殊功能,包括训练时的 8k 令牌上下文窗口、通过 ALiBi 支持更长的上下文,以及通过 FlashAttention 实现高效的推理 + 训练性能。由于其预训练数据混合,MPT-30B 系列还具有强大的编码能力。该模型已扩展到 NVIDIA H100 GPU 上的 8k 上下文窗口,使其(据我们所知)成为第一个在 H100 GPU 上训练的法学硕士,现在可供 MosaicML 客户使用!

MPT-30B 的尺寸也经过专门选择,以便轻松部署在单个 GPU 上 - 1x NVIDIA A100-80GB(16 位精度)或 1x NVIDIA A100-40GB(8 位精度)。其他类似的 LLM(例如 Falcon-40B)具有更大的参数数量,并且无法在单个数据中心 GPU 上提供服务(目前);这需要 2 个以上的 GPU,从而增加了最低推理系统成本。

如果您想开始在生产中使用 MPT-30B,可以通过多种方法使用 MosaicML 平台对其进行自定义和部署。

  • MosaicML 培训。 通过微调、特定领域预训练或从头开始训练,使用您的私人数据定制 MPT-30B。您始终拥有最终模型权重,并且您的数据永远不会存储在我们的平台上。定价按 GPU 分钟计算。

  • MosaicML 推理。 使用我们的 Python API 与我们托管的 MPT-30B-Instruct(和 MPT-7B-Instruct)端点进行对话,并按每 1K 代币的标准定价。

我们很高兴看到我们的社区和客户接下来使用 MPT-30B 构建什么。要了解有关模型以及如何使用 MosaicML 平台自定义模型的更多信息,请继续阅读!

MPT-30B家族

Mosaic Pretrained Transformer (MPT) 模型是 GPT 风格的仅解码器变压器,具有多项改进,包括更高的速度、更高的稳定性和更长的上下文长度。得益于这些改进,客户可以有效地训练 MPT 模型 (40-60% MFU),而不会偏离损失峰值,并且可以通过标准 HuggingFace 管道和 FasterTransformer 为 MPT 模型提供服务。

MPT-30B (Base)

MPT-30B是商业Apache 2.0许可的开源基础模型,其质量超过了GPT-3(来自原始论文),并且与LLaMa-30B和Falcon-40B等其他开源模型具有竞争力。

使用我们公开提供的 LLM Foundry 代码库,我们在 2 个月的时间内训练了 MPT-30B,随着硬件可用性的变化在多个不同的 NVIDIA A100 集群之间进行转换,平均 MFU >46%。 6 月中旬,在我们从 CoreWeave 收到第一批 256 个 NVIDIA H100 GPU 后,我们将 MPT-30B 无缝移动到新集群,以恢复平均 MFU >35% 的 H100 训练。据我们所知,MPT-30B 是第一个在 H100 GPU 上(部分)训练的公共模型!我们发现每个 GPU 的吞吐量增加了 2.44 倍,并且我们预计随着 H100 软件的成熟,这种加速也会增加。

如前所述,MPT-30B 使用 8k 个 token 的长上下文窗口进行训练(LLaMa 和 Falcon 为 2k),并且可以通过 ALiBi 或微调处理任意长的上下文窗口。为了有效地在 MPT-30B 中构建 8k 支持,我们首先使用 2k 令牌长的序列对 1T 令牌进行预训练,并使用 8k 令牌长的序列继续训练额外的 50B 令牌。

MPT-30B 预训练使用的数据组合与 MPT-7B 非常相似(有关详细信息,请参阅 MPT-7B 博客文章)。对于 2k 上下文窗口预训练,我们使用来自与 MPT-7B 模型相同的 10 个数据子集的 1T 标记(表 1),但比例略有不同。

在这里插入图片描述

表 1:MPT-30B 预训练的数据组合。我们从 10 个不同的开源文本语料库中收集了 1T 个预训练数据 token。我们使用 EleutherAI GPT-NeoX-20B 分词器对文本进行分词,并根据上述比率进行采样。

对于 8k 上下文窗口微调,我们从用于 2k 上下文窗口预训练的相同 10 个子集创建了两个数据混合(图 1)。第一个 8k 微调组合与 2k 预训练组合类似,但我们将代码的相对比例增加了 2.5 倍。为了创建第二个 8k 微调组合(我们将其称为“长序列”组合),我们从 10 个预训练数据子集中提取了长度≥ 4096 个标记的所有序列。然后我们对这两种数据混合的组合进行微调。有关 8k 上下文窗口微调数据的更多详细信息,请参阅附录。

在这里插入图片描述

图 1:8k 上下文窗口微调的数据子集分布。对于 8k 上下文窗口微调,我们采用每个数据子集并提取具有 ≥ 4096 个标记的所有样本,以创建新的“长序列”数据混合。然后,我们对长序列和原始数据混合的组合进行微调。

图2中,我们测量了这六大核心能力,发现MPT-30B在各个方面都比MPT-7B有显着提升。在图 3 中,我们对类似大小的 MPT、LLaMa 和 Falcon 模型进行了相同的比较。总体而言,我们发现不同系列的 7B 型号非常相似。但 LLaMa-30B 和 Falcon-40B 的文本能力略高于 MPT-30B,这与它们较大的预训练预算是一致的:

  • MPT-30B FLOPs ~= 6 * 30e9 [参数] * 1.05e12 [令牌] = 1.89e23 FLOPs
  • LLaMa-30B FLOPs ~= 6 * 32.5e9 [params] * 1.4e12 [tokens] = 2.73e23 FLOPs (多1.44倍)
  • Falcon-40B FLOPs ~= 6 * 40e9 [参数] * 1e12 [令牌] = 2.40e23 FLOps (1.27 倍以上)

另一方面,我们发现 MPT-30B 在编程方面明显更好,这归功于其包含大量代码的预训练数据混合。我们在表 2 中进一步深入探讨了编程能力,其中我们将 MPT-30B、MPT-30B-Instruct 和 MPT-30B-Chat 的 HumanEval 分数与现有开源模型(包括为代码生成而设计的模型)进行了比较。我们发现 MPT-30B 模型的编程能力非常强,MPT-30B-Chat 的性能优于除 WizardCoder 之外的所有模型。我们希望这种文本和编程功能的结合将使 MPT-30B 模型成为社区的流行选择。

最后,在表 3 中,我们展示了 MPT-30B 如何在原始 GPT-3 论文中提供的较小评估指标集上优于 GPT-3。最初发布后大约 3 年,我们很自豪能够以更小的模型(GPT-3 参数的 17%)和显着更少的训练计算(GPT-3 FLOPs 的 60%)超越这个著名的基线。

如需更详细的评估数据,或者如果您想重现我们的结果,您可以在此处查看我们在 LLM Foundry 评估工具中使用的原始数据和脚本。请注意,我们仍在完善 HumanEval 方法,并将很快通过 Composer 和 LLM-Foundry 发布。

在这里插入图片描述

图 2 -MPT-7B 与 MPT-30B。我们的新 MPT-30B 型号比之前的 MPT-7B 型号有了显着改进

在这里插入图片描述

图 3 - MPT、LLaMa 与 Falcon 模型。左:比较具有 70 亿个参数的模型。右图:比较具有 30 到 400 亿个参数的模型。

在这里插入图片描述

表 2:MPT-30B 模型的零样本精度(pass @ 1)与 HumanEval(Python 编码问题语料库)上的通用和 GPT 蒸馏代码生成模型的比较。我们发现 MPT-30B 模型的性能大幅优于 LLaMa-30B 和 Falcon-40B,甚至优于许多专用编码模型(例如 StarCoder)。有关 Falcon-40B-Instruct 和 Falcon-40B 的免责声明,请参阅附录。外部来源:[1]、[2]、[3]、[4]、[5]

在这里插入图片描述

表 3:MPT-30B 与 GPT-3 在九项情境学习 (ICL) 任务上的零样本准确率。我们发现 MPT-30B 在九个指标中的六个指标上优于 GPT-3。 GPT-3 编号是从原始论文中复制的。

MPT-30B-Instruct

在这里插入图片描述

图 4:MPT-30B-Instruct 的示例指令和完成。

LLM 预训练教导模型根据提供的输入继续生成文本。但在实践中,用户希望法学硕士将输入视为要遵循的说明。指令微调是训练法学硕士遵循指令的过程。通过减少对巧妙提示工程的依赖,指令微调使法学硕士更容易获得、直观且立即可用。指令微调的进展是由 FLAN、P3、Alpaca 和 Dolly-15k 等开源数据集推动的。

我们创建了一个商业可用的、遵循指令的模型变体,称为 MPT-30B-Instruct。我们喜欢 Dolly 的商业许可,但我们想添加更多训练数据,因此我们使用 Anthropic 的 Helpful & Harmless 数据集的子集来增强 Dolly,将数据集大小加倍,同时保留商业 CC-By-SA-3.0 许可。然后,为了利用 MPT-30B 的 8,192 个 token 上下文长度,我们使用一些开源数据集进一步增强了数据:CompetitionMath、GradeSchoolMath、DialogSum、DuoRC、QASPER、QuALITY、SummScreen 和 Spider。

这个新的指令跟踪数据集是对我们用于训练 MPT-7B-Instruct 的数据集的改进,我们计划在不久的将来发布更新的 MPT-7B-Instruct-v2,使其与 MPT-30B 持平-指导。

MPT-30B-Chat

在这里插入图片描述

图 5:与 MPT-30B-Chat 的示例对话。

我们还创建了 MPT-30B-Chat,这是 MPT-30B 的对话版本。 MPT-30B-Chat 已经在大量聊天数据集上进行了微调,确保它为各种对话任务和应用程序做好了准备。组合微调数据集由 15.4 亿个 token 组成,模型训练了 6 个 epoch。数据集采用ChatML格式,提供了一种便捷、标准化的方式将系统消息传递给模型,有助于防止恶意提示注入。

MPT-30B-Chat 是一个研究工件,不适合商业用途,因此我们相应地使用了非商业 CC-By-NC-SA-4.0 许可证。我们发布它是因为它展示了 MPT-30B 与大型、高质量微调数据集结合时的强大功能。

尽管被训练为通用会话模型,MPT-30B-Chat 的编程能力也令人惊讶,在 HumanEval 上得分为 37.2%;这使得它凌驾于WizardCoder 之外的几乎所有开源模型之上。更多详情请参见上表2!

使用 MosaicML Inference 部署 MPT-30B 模型

随着 MosaicML 推理服务的推出,我们为 MPT 和 Llama 等开源模型提供低延迟、高吞吐量的托管。您可以使用我们的推理软件堆栈在 MosaicML 硬件或您自己的私有硬件上为这些模型提供服务。借助 MosaicML Inference,您可以向 MosaicML 托管的端点发送 MPT-7B-Instruct、MPT-30B-Instruct 以及其他开源文本生成和嵌入模型的 API 请求。这些端点按代币定价,并且比相同质量的同类 OpenAI API 便宜得多(见图 6)。 MosaicML Inference 是快速制作人工智能功能原型的绝佳选择。如果可以接受与第三方 API 共享数据,那么它也可能是一个合适的选择。

在这里插入图片描述

图 6:使用 MosaicML Inference 查询 MPT-30B 或 MPT-7B 模型比使用 OpenAI API 便宜 4 倍,并且质量相当。

通过 MosaicML 培训定制 MPT-30B

MPT-30B 具有开箱即用的强大生成能力。但为了在特定任务中获得最佳性能,我们建议对您的私人数据进行微调 MPT-30B。这个过程可以在几个小时内完成,只需几百美元。

对于更高级的用例,例如自定义语言、自定义域(例如 Replit 的代码生成模型)或自定义任务(长文档问答),您可以通过添加特定于域的预训练或从头开始训练自定义模型。

LLM Foundry

为了使自定义语言模型的训练尽可能简单,我们将可用于生产的训练代码开源为 LLM Foundry。这与我们的 NLP 团队用于构建 MPT-7B 和 MPT-30B 的代码库完全相同。该存储库使用 Composer、StreamingDataset 和 FSDP 在任意数量的 GPU 上训练任意大小的自定义模型。它还可以直接从您的私有对象存储流式传输数据,并轻松将模型导出到 HuggingFace、ONNX 或 FasterTransformer。 LLM Foundry 已经在云端 A100 和 H100 上经过了实际考验,我们正在快速增加对更多硬件选项的支持。

LLM Foundry 还包括用于根据标准评估指标和/或自定义数据评估模型的脚本。得益于我们的多 GPU 和 FSDP 支持,评估速度非常快 - 您可以在几分钟内离线测量评估指标,甚至可以在训练期间实时测量评估指标,从而为您提供有关模型性能的即时反馈。

无论您想要进行小型微调运行还是从头开始训练大型模型,LLM Foundry 都能高效处理所有这些工作负载。查看我们的公开训练表现和推理表现表!

作为 MosaicML 的客户,您还可以访问最新的配方,以确保您的训练运行稳定(无损失峰值)以及我们的 MCLI 编排软件。后者可以优雅地处理硬件故障和自动恢复,这样您就不会浪费计算或需要照顾您的运行。

下一步是什么?

准备好试用我们的新型 MPT-30B 系列了吗?请注意,我们的 Foundation 系列模型完全受 MosaicML 平台支持,为您提供工具和专业知识,以便您在选择的安全云上轻松高效地构建、定制和部署。在此处注册演示。请继续关注我们的基础系列中的更多型号!

附录

致谢

我们衷心感谢 OCI 的朋友,他们托管了我们用来完成 MPT-30B 初级训练阶段的 NVIDIA A100 GPU。

我们还要衷心感谢 CoreWeave 的朋友,他们托管了我们用来完成 MPT-30B 8k 上下文训练阶段的 NVIDIA H100 GPU,并在我们加快新 GPU 架构的速度时为我们提供了支持。

我们还衷心感谢 AI2 的朋友,他们在我们开发 MPT 系列模型时分享了非常宝贵的技术专业知识。

数据

MPT-30B 8k 上下文窗口微调数据

对于 8k 上下文窗口微调,我们采用每个数据子集并提取具有至少 4096 个标记的所有样本,以创建新的“长序列”数据混合。然后,我们对长序列和原始数据混合的组合进行微调。

在这里插入图片描述

MPT-30B-指令微调数据

在这里插入图片描述

MPT-30B-聊天微调数据

聊天微调数据。请注意,每个标记出现了 6 次。这些代币计数包括提示及其目标响应,因此并非所有 1.54B 代币都会产生损失。

在这里插入图片描述

评估

在这里插入图片描述
MPT-30B 与我们的代码评估套件上的开源模型。我们在代码提示的 HumanEval 数据集上测试每个模型,使用零样本评估和使用 pass@1 指标的基准测试,或者仅允许生成一个可能的代码延续时模型通过的测试用例的百分比。我们还提供引用的外部值来验证我们内部代码评估套件的可复制性,该套件将在 Composer/LLM-Foundry 的未来版本中作为开源发布。

Falcon 代码评估免责声明

在我们的评估框架中,Falcon-40B 和 Falcon-40B-Instruct 似乎是类似大小模型中的异常值。虽然我们的大多数自我评估分数与外部结果相匹配,但我们的 Falcon-40B-Instruct 通过率明显低于 WizardCoder 中报告的通过率。我们对所有模型使用相同的提示和 LLM Foundry 评估工具。如果您对如何更好地提示/使用Falcon-40B或更多我们可以参考的外部HumanEval分数有建议,请联系我们!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/677722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索C语言的内存魔法:动态内存管理解析

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 静态开辟内存 通过前面的学习,我们已经掌握了两种开辟内存的方…

拟合案例1:matlab积分函数拟合详细步骤及源码

本文介绍一下基于matlab实现积分函数拟合的过程。采用的工具是lsqcurvefit和nlinfit两个函数工具。关于包含积分运算的函数,这里可以分为两大类啊。我们用具体的案例来展示:一种是积分运算中不包含这个自变量,如下图的第一个公式,也就是说它这个积分运算只有R和Q这两个待定…

用Python动态展示排序算法

文章目录 选择冒泡插入排序归并排序希尔排序 经常看到这种算法可视化的图片,但往往做不到和画图的人心灵相通,所以想自己画一下,本文主要实现归并排序和希尔排序,如果想实现其他算法可参考这篇 C语言实现各种排序算法[选择&#x…

[C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法

【创建圆形进度条流程】 在C# WinForms应用程序中创建一个圆形进度条(通常用作仪表盘的显示)可以通过多种方式实现。下面是一个简单的例子,演示如何使用System.Drawing命名空间中的图形绘制功能来绘制一个基本的圆形进度条。 首先&#xff0…

基于springboot超市进销存系统源码和论文

随着信息化时代的到来,管理系统都趋向于智能化、系统化,超市进销存系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而超…

python+django学习交流论坛系统244t6

系统可以提供信息显示和相应服务,其管理员管理用户发布的博客文章以及用户之间的论坛交流信息,管理留言以及文章分类信息。用户在论坛交流模块发布帖子以及评论帖子,在前台查看和评论其他用户发布的博客文章,收藏博客文章&#xf…

【Java多线程案例】实现阻塞队列

1. 阻塞队列简介 1.1 阻塞队列概念 阻塞队列:是一种特殊的队列,具有队列"先进先出"的特性,同时相较于普通队列,阻塞队列是线程安全的,并且带有阻塞功能,表现形式如下: 当队列满时&…

fast.ai 深度学习笔记(四)

深度学习 2:第 2 部分第 8 课 原文:medium.com/hiromi_suenaga/deep-learning-2-part-2-lesson-8-5ae195c49493 译者:飞龙 协议:CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它,这…

4核8g服务器能支持多少人访问?- 腾讯云

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线?通用型-4核8G-180G-2000G,2000GB月流量,系统盘为180GB SSD盘,12M公网带宽,下载速度峰值为1536KB/s,即1.5M/秒,假设网站内页平均大小为60KB…

HiveQL——不借助任何外表,产生连续数值

注:参考文章: HiveSql一天一个小技巧:如何不借助其他任何外表,产生连续数值_hive生成连续数字-CSDN博客文章浏览阅读1.3k次。0 需求描述输出结果如下所示:12345...1001 问题分析方法一:起始值(…

C#在窗体正中输出文字以及输出文字的画刷使用

为了在窗体正中输出文字,需要获得输出文字区域的宽和高,这使用MeasureString方法,方法返回值为Size类型; 然后计算输出的起点的x和y坐标,就可以输出了; using System; using System.Collections.Generic; …

基于css-vars-ponyfill实现换肤

文章目录 一、换肤二、换肤调研2.1、ElementUI2.2、ant.design 三、换肤痛点和思考四、换肤架构五、换肤技术选型和实现5.1、该方案的亮点和规则5.2、核心原理5.3、色组 & 色值平台设计5.4、获取在当前主题自定义变量颜色 六、总结七、最后 一、换肤 网站或者应用一键切换…

最简单的基于 FFmpeg 的音频编码器(PCM 编码为 AAC)

最简单的基于 FFmpeg 的音频编码器(PCM 编码为 AAC) 最简单的基于 FFmpeg 的音频编码器(PCM 编码为 AAC)正文结果工程文件下载其他参考链接 最简单的基于 FFmpeg 的音频编码器(PCM 编码为 AAC) 参考雷霄骅…

Android SystemConfig相关

SystemConfig在哪里初始化 它声明在PackageManagerService类的静态方法main()中。在该方法中间定义Injector类对象时,作为它的构造参数。它是调用的SystemConfig.getInstance()实现初始化,之后能通过Injector类对象的getSystemConfig()得到SystemConfig类…

nginx添加lua模块

目录 已安装了nginx,后追加lua模块nginx 重新编译知识参考: 从零安装一、首先需要安装必要的库(pcre、zlib、openssl)二、安装LUA环境及相关库 (LuaJIT、ngx_devel_kit、lua-nginx-module)注意:…

STM32——OLED(2)

目录 一、OLED显示屏介绍 引脚说明: 二、OLED驱动 1. 基本认识 2. OLED 驱动原理 及过程 三、SSD1306工作时序 (8080时序) 1. 8080并口读/写过程 2. SSD1306工作时序 (8080时序) 四、屏幕显示 1. GRAM 补: 2. 画点原理 3. 显示字…

一周学会Django5 Python Web开发-Django5创建项目(用PyCharm工具)

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频,包括:2024版 Django5 Python we…

【C++从0到王者】第四十一站:特殊类的设计

文章目录 一、设计一个类,不能被拷贝1.C98方法2.C11方法 二、设计一个类,只能在堆上创建对象1.析构函数私有化2.构造函数私有化 三、请设计一个类,只能在栈上创建对象四、设计一个类不能被继承1.C98方式2.C11方式 五、设计一个类,…

【JavaScript 漫游】【013】Date 对象知识点摘录

文章简介 本文为【JavaScript 漫游】专栏的第 013 篇文章,记录了 JS 语言中 Date 对象的重要知识点。 普通函数的用法构造函数的用法日期的运算静态方法,包括:Date.now()、Date.parse() 和 Date.UTC()实例方法,包括:…

156基于Matlab的光纤陀螺随机噪声和信号

基于Matlab的光纤陀螺随机噪声和信号,利用固定步长和可调步长的LMS自适应滤波、最小二乘法、滑动均值三种方法进行降噪处理,最后用阿兰方差评价降噪效果。程序已调通,可直接运行。 156 信号处理 自适应滤波 降噪效果评估 (xiaohongshu.com)