第一个100%开源的MoE大模型,7B的参数,1B的推理成本

2024-09-06 13:20

本文主要是介绍第一个100%开源的MoE大模型,7B的参数,1B的推理成本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

尽管大语言模型 (LM) 在各种任务上取得了重大进展,但在训练和推理方面,性能和成本之间仍然需要权衡。

对于许多学者和开发人员来说,高性能的 LM 是无法访问的,因为它们的构建和部署成本过高。改善成本 - 性能的一种方法是使用稀疏激活混合专家 (MoE)。MoE 在每一层都有几个专家,每次只激活其中的一个子集(参见图 2)。这使得 MoE 比具有相似参数量的密集模型更有效,因为密集模型为每个输入激活所有参数。

图片

出于这个原因,行业前沿模型包括 Gemini-1.5、 GPT-4 等在内的模型都使用了 MoE。

然而,大多数 MoE 模型都是闭源的,虽然有些模型公开发布了模型权重,但有关训练数据、代码等的信息却很有限,甚至有些研究没有提供这些信息。由于缺乏开放资源和对研究细节的深入探索,在 MoE 领域无法构建具有成本效益的开源模型,从而接近闭源前沿模型的能力。

为了解决这些问题,来自艾伦人工智能研究院、 Contextual AI 等机构的研究者引入了  OLMoE ,这是一个完全开源的混合专家语言模型,在类似大小的模型中具有 SOTA 性能。

图片

  • 论文地址:https://arxiv.org/pdf/2409.02060

  • 论文标题:OLMoE: Open Mixture-of-Experts Language Models

特别的,该研究使用 5.1 万亿个 token 预训练了 OLMoE-1B-7B 模型,该模型总共拥有 69 亿参数,其中每个输入 token 只激活 13 亿参数。 

结果是与使用具有约 1B 参数的密集模型(例如 OLMo 1B 或 TinyLlama 1B )实现了类似的推理成本,只是需要更多的 GPU 内存来存储约 7B 的总参数。实验表明,MoE 的训练速度比具有等效激活参数的密集 LM 快 2 倍左右。

如图 1 所示,OLMoE-1B-7B 显著优于所有开源 1B 模型,并且与推理成本和内存存储明显更高的密集模型相比表现出了竞争力。

图片

通过指令和偏好调优,该研究还创建了 OLMoE-1B-7B-INSTRUCT,它在常见基准 MMLU、GSM8k、HumanEval 等上超越了各种更大的指令模型,包括 Llama2-13B-Chat 、OLMo-7B-Instruct (0724) 和 DeepSeekMoE-16B。

受控实验强调了 MoE(见表 1)和一般 LM 的关键设计选择。结果表明使 MoE 性能卓越的一个关键设计决策是使用细粒度路由和粒度专家(granular experts):在每一层使用 64 个小专家,其中 8 个被激活。

此外,路由算法的选择也很重要:该研究发现无丢弃(dropless)基于 token 的路由优于基于专家的路由。最后,该研究分析了 OLMoE-1B-7B 中的路由行为,发现路由在预训练的早期就饱和了,专家很少被共同激活,并且专家表现出领域和词汇的专业化。

图片

最后,作者希望这个完全开源的 MoE 能够促进更多研究和分析,从而提高对这些模型的理解。训练代码、中间检查点(每 5000 step )、训练日志和训练数据都已经开源。

论文作者 Niklas Muennighoff 表示:OLMoE 是第一个 100% 开源的混合专家 LLM。

图片

预训练与自适应

预训练架构

OLMoE 是由 N_L 个 transformer 层组成的语言模型,仅包含解码器。对于 OLMo 这样的密集模型,原本模型中单一的前馈网络被 N_E 个小型前馈网络(专家)组成的混合专家网络所替代,对于每个输入 token x,只有 k 个专家会被选中并被激活,负责处理这个输入。

图片

其中,路由器(r)是一个经过训练的线性层,将输入的原始数据映射到被选中的 k 个专家上。对路由器的输出应用 softmax 函数,计算 N_E 个专家的路由概率。然后,每个被指定的专家 E_i 处理输入 x,其输出乘以其各自的路由概率。再将所有选定的

图片

专家的结果相加,构成模型单个层的 MoE 模块输出。

MoE 模型的训练往往涉及对一个已经存在的大型密集模型转换成一个稀疏模型,也就是所谓的「稀疏升级」。这个过程中,需要改变模型的训练目标,比如调整 auxiliary load balancing 以及路由器的损失函数。具体的方法如下表所示:

图片

在这项研究中,论文作者使用了总计 69 亿参数中的 13 亿活跃参数,每层有 64 个专家,其中有 8 个被激活。他们使用了一种名为「无丢弃 token」的路由方法:对于每个输入 token,路由器网络将分配 8 个专家来处理它。

论文作者引入了两个辅助损失函数:负载平衡损失(

图片

)和路由器 z 损失(

图片

),来训练 OLMoE-1B-7B。他们给这两个损失函数分别设定了权重(α 和 β),然后把它们和模型的主要学习目标(交叉熵损失

图片

结合起来,最终计算的损失函数为:

图片

预训练数据

训练数据方面,论文作者使用了来自两个不同来源的数据集:DCLM 和 Dolma 1.7。这些数据集包括了多种类型的数据,比如网络爬取的数据、编程问题解答、数学问题解答和学术论文等。他们将这些数据混合起来,创建了一个名为 OLMOE-MIX 的新数据集。

下表中展示了预训练数据的组成:

图片

对于数据的处理,论文作者使用了过滤器去除了包含太多重复 token 的内容、GitHub 上星标少于 2 的项目以及某些词出现频率过高的文档。他们将在每轮训练开始前随机混洗数据,总计超过 5 万亿个 token。在「退火」阶段(最后 100B 个 token),他们首先重新混洗整个数据集,然后按照此前 OLMo 论文中的方法,将学习率线性衰减到 0。

自适应

论文作者从指令调优和偏好调优两方面,基于之前的开放模型,构造了 OLMoE-1B-7B-INSTRUCT。在指令调优集中,他们增加了更多的代码和数学数据,以提高模型在这些领域的性能。

GPT-4 和 Llama 3 在预训练阶段使用了像 GSM8k 或 MATH 这样的数学数据集的样本。按照这个思路,论文作者还添加了「No Robots」和「Daring Anteater」的一个子集。这些数据集不仅质量高还更多样,这是拓展模型适应性的两个关键因素。

下表展示了 OLMoE-1B-7B-INSTRUCT 所使用的数据:

图片

实验

该研究的评估程序由三部分组成:预训练期间、预训练之后和自适应之后。

预训练期间:如图 3 所示,该研究在预训练期间使用当前最佳 OLMo 模型在常用下游任务上对 OLMoE-1B-7B 的性能进行了基准测试。

图片

研究团队发现,在所有任务中,OLMoE-1B-7B 比密集 OLMo 模型以更少的计算量 (FLOP) 获得了更好的性能。尽管 OLMoE-1B-7B 使用了不到一半的 FLOP 进行训练并且仅使用 1B 个激活参数,但 OLMoE-1B-7B 在训练结束时可与 OLMo-7B 媲美,甚至优于 OLMo-7B。

预训练之后:在表 4 中,该研究在常见的下游任务上对 OLMoE-1B-7B 进行基准测试。

研究发现 OLMoE-1B-7B 在使用少于 2B 个激活参数的模型中表现最好,使其成为许多 LM 用例中最经济的选择。

如果预算较大,Qwen1.5-3B-14B 具有更强的性能,但其激活参数和总参数比 OLMoE-1B-7B 多一倍以上。

研究发现,尽管每条前向传播所需的计算量减少了约 6-7 倍,但 OLMoE-1B-7B 的性能优于一些具有 7B 参数的密集 LM,例如 Llama2-7B ,但不如其他 LM,例如 Llama3.1-8B 。上图 1 比较了 OLMoE-1B-7B 和其他 LM 的 MMLU 性能和激活参数,表明 OLMoE-1B-7B 是其成本范围内最先进的。

图片

自适应之后:在表 5 中,该研究对 OLMoE-1B-7B 的指令 (SFT) 和偏好 (DPO) 调优进行了基准测试。SFT 在所有测量任务上都改进了本文的模型。

DPO 在大多数任务上都有帮助,尤其是 AlpacaEval,这与先前研究的结果一致。DPO 模型(称之为 OLMoE-1B-7B-INSTRUCT)在所有基准测试模型中具有最高平均值。

图片

这篇关于第一个100%开源的MoE大模型,7B的参数,1B的推理成本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142117

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}