深度求索开源国内首个 MoE 大模型 | DeepSeekMoE:在专家混合语言模型中实现终极专家专业化

news2024/11/18 22:31:33

文章目录

  • 一、前言
  • 二、主要内容
  • 三、总结

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一、前言

在大语言模型时代,混合专家模型(MoE)是一种很有前途的架构,用于在扩展模型参数时管理计算成本。然而,传统的 MoE 架构(如 GShard)会激活 N 位专家中的 top-K 专家,但在确保专家专业化(即每位专家获取的知识不重叠且重点突出)方面面临挑战。作为回应,研究者提出了 DeepSeekMoE 架构,以实现终极的专家专业化。它涉及两个主要战略:

  • 将专家细分为 m N mN mN 个,并从中激活 m K mK mK 个,使激活的专家组合更加灵活;
  • K s K_{s} Ks 专家隔离为共享专家,旨在捕获共同知识并减少路由专家中的冗余。

从 2B 参数的适度规模开始,研究者证明 DeepSeekMoE 2B 的性能可与 GShard 2.9B 相媲美,后者的专家参数和计算量为 GShard 2.9B 的 1.5 倍。此外,在参数总数相同的情况下,DeepSeekMoE 2B 的性能几乎接近其密集型对应模型,这为 MoE 模型设定了上限。随后,研究者将 DeepSeekMoE 扩展到 16B 参数,结果表明其性能与 LLaMA2 7B 相当,计算量仅为 LLaMA2 7B 的 40%。此外,研究者将 DeepSeekMoE 的参数扩展到 145B 的初步尝试,不断验证了其相对于 GShard 架构的巨大优势,并显示其性能可与 DeepSeek 67B 相媲美,只需 28.5%(甚至可能是 18.2%)的计算量。

多重发布。模型、代码、论文均已同步发布:

  • 模型下载:https://huggingface.co/deepseek-ai
  • 微调代码:https://github.com/deepseek-ai/DeepSeek-MoE
  • 技术报告:https://github.com/deepseek-ai/DeepSeek-MoE/blob/main/DeepSeekMoE.pdf

DeepSeekMoE 架构


二、主要内容

这篇论文试图解决什么问题?

这篇论文旨在解决大语言模型(LLMs)在扩展参数规模时所面临的计算成本问题。具体而言,它提出了一种名为 DeepSeekMoE 的新型 Mixture-of-Experts(MoE)架构,以实现专家的终极专业化。

MoE 架构通过将模型分解为多个专家,每个专家专注于特定任务,从而在保持参数规模的同时降低计算成本。然而,现有的 MoE 架构在确保专家专业化方面面临挑战,即每个专家获取的知识应该是不重叠且专注的。DeepSeekMoE 通过以下两个主要策略来解决这一问题:

  • 细粒度划分专家:通过将专家划分为更小的单元,更灵活地激活专家组合,从而实现更精细的知识分解和专业化。
  • 共享专家隔离化:将部分专家设定为共享专家,它们始终处于激活状态,用以捕获和整合不同上下文中的共同知识,从而降低其他路由专家中的参数冗余。

在这项研究中,通过实验验证了 DeepSeekMoE 在不同规模(2B、16B 和 145B 参数)上的性能。与此同时,研究者将其性能与现有的 MoE 模型(如 GShard)和密集模型(如 Dense×16)进行了比较。结果表明,DeepSeekMoE 在保持计算效率的同时,能够实现接近甚至超越现有模型的性能水平。

有哪些相关研究?

相关研究主要集中在以下几个方面:

  • Mixture-of-Experts(MoE)架构:MoE 是一种用于处理不同样本的独立专家模块的技术,最早由 Jacobs 等人(1991 年)提出。在自然语言处理(NLP)领域,Shazeer 等人(2017 年)引入了 MoE 到语言模型训练中,并构建了基于 LSTM 的大规模 MoE 模型。
  • Transformer 语言模型的 MoE 扩展:随着 Transformer 成为 NLP 中最流行的架构,许多研究尝试将 Transformer 中的前馈网络(FFN)替换为 MoE 层来构建 MoE 语言模型。例如,GShard(Lepikhin 等人,2021 年)和 Switch Transformer(Fedus 等人,2021 年)使用可学习的 top-2 或 top-1 路由策略来扩展 MoE 语言模型。而 Hash Layer(Roller 等人,2021年)和 StableMoE(Dai 等人,2022 年)则采用固定路由策略以实现更稳定的路由和训练。
  • MoE 训练策略和挑战:Zoph(2022)关注了 MoE 模型在训练过程中出现的不稳定性和微调困难,并提出了 ST-MoE 来应对这些挑战。此外,还有一些研究如 Flan-MoE(Shen 等人,2023)专注于使用稀疏 MoE 扩展指令微调语言模型。
  • 大规模语言或多模态模型:近年来,基于现有 MoE 架构涌现出许多大规模语言或多模态模型,例如 Falcon-40B(Almazrouei 等人,2023)、GPT-Neo(Black 等人,2021)和 BLOOM(Scao 等人,2022)。
  • 专家专业化:DeepSeekMoE 架构旨在通过细粒度分割专家和隔离共享专家来提高专业化水平。相较于现有基于 top-1 或 top-2 路由策略的 MoE 模型,该架构提供了改进专家专业化的新途径。

这些研究为 DeepSeekMoE 提供了理论基础和实践经验。DeepSeekMoE 在这些研究的基础上,通过创新的架构设计,旨在实现更高水平的专家专业化和性能。

这项研究如何解决这个问题?

论文提出了 DeepSeekMoE 架构,旨在解决当前 Mixture-of-Experts(MoE)模型在专家专业化方面所面临的挑战。DeepSeekMoE 采用了两个主要策略来提高专家的专业化程度:

  • 精细分割专家(Fine-Grained Expert Segmentation):

    1. 该策略将专家划分为更小的单元,通过减少 FFN(Feed-Forward Network)中间隐藏层的维度,同时保持参数数量不变。
    2. 同时增加激活的专家数量,以保持相同的计算成本,从而允许更灵活和适应性的激活专家组合。
    3. 这种分割策略允许更精细地分解和学习不同专家的多样化知识,使每个专家能够保留更高的专业化水平。
  • 隔离共享专家(Shared Expert Isolation):

    1. 该策略将一部分专家隔离为共享专家,这些专家始终被激活,旨在捕获和整合不同上下文中的共同知识。
    2. 通过将共同知识压缩到这些共享专家中,减轻其他路由专家之间的参数冗余,提高参数效率,并确保每个路由专家能够专注于独特方面。

通过这两个策略,DeepSeekMoE 的目标是训练一个参数高效的 MoE 语言模型,其中每个专家都高度专业化。论文首先从 2B 参数规模开始验证 DeepSeekMoE 架构的优势,并在后续实验中将模型参数扩展到 16B 和 145B,展示了与现有的 MoE 模型(例如 GShard)和密集模型(例如 Dense×16)相比显著的性能提升,同时保持较低的计算成本。

DeepSeekMoE 模型效果领人印象深刻:

  • DeepSeekMoE 2B 可接近 MoE 模型的理论上限 2B Dense 模型性能(即相同 Attention / {/} /FFN 参数配比的 2B Dense 模型),仅用了17.5% 计算量。
  • DeepSeekMoE 16B 性能比肩 LLaMA2 7B 的同时,仅用了 40% 计算量(如下图),也是本次主力开源模型,40G 显存可单卡部署。
  • DeepSeekMoE 145B 上的早期实验进一步证明该 MoE 架构明显领先于 Google 的 MoE 架构 GShard,仅用 28.5%(甚至 18.2%)计算量即可匹配 67B Dense 模型的性能。

在这里插入图片描述

  • 不同激活参数量的模型(横轴)
  • 在 Open LLM Leaderboard 上的效果(纵轴)

开源 MoE 模型表现

在相同语料下训练了 2 万亿 tokens,DeepSeekMoE 16B 模型(实际激活参数量为 2.8B)性能匹敌 DeepSeek 7B Dense 模型(左下图),而同时节省了 60% 的计算量。

与目前 Dense 模型的开源代表 LLaMA2 相比,DeepSeekMoE 16B 在大部分数据集上的性能依旧领先 LLaMA2 7B(右下图),但仅用了 40% 计算量。

在这里插入图片描述

多尺度模型进阶

DeepSeekMoE 包含三个模型规模:2B → \rightarrow 16B → \rightarrow 145B。

DeepSeekMoE 2B(性能验证)。研究者首先基于 2B 总参数的规模,对 DeepSeekMoE 的架构进行了充分的探索和研究,相同总参数量的对比下,DeepSeekMoE 大幅优于相同总参数下的其他 MoE 架构。

在这里插入图片描述

与更大规模(总参数量或者计算量)的模型相比,DeepSeekMoE 2B 能匹配 GShard 2.8B (1.5 倍专家参数量和专家计算量)的性能,同时能非常接近 MoE 模型的理论性能上限,即相同 Attention/FFN 总参数量下 2B Dense 模型的性能。

在这里插入图片描述

消融实验进一步证明了共享专家分离和细粒度专家划分两个策略的有效性。

在这里插入图片描述

此外,研究者还验证了 DeepSeekMoE 相比于 GShard,有更好的专家化程度,体现在更少的专家知识冗余和更精准的专家知识命中上,具体请参见技术报告的第 4.5 节。

DeepSeekMoE 16B (开源版本)。基于在 2B 规模上建立的对模型架构的认知,研究者训练了总参数量为 16.4B 的 DeepSeekMoE 16B 模型,并将其开源以促进研究社区的发展。开源模型效果如下:

在仅用 40% 计算量的前提下,DeepSeekMoE 16B 能达到与 DeepSeek 7B(左图) 和 LLaMA2 7B(右图)相匹配的性能,在知识密集性任务上,DeepSeekMoE 16B 的优势尤其突出。

在这里插入图片描述

研究者同时还对 DeepSeekMoE 16B 进行了 SFT 以构建了一个对话模型,评测显示,其同样能够与基于 DeepSeek 7B 和 LLaMA2 7B 构建的对话模型性能相匹配。

在这里插入图片描述

DeepSeekMoE 145B(持续研究)。“DeepSeek” 正在持续研究更大规模的 DeepSeekMoE 模型,基于 200B 语料训练得到的初步实验结果显示,DeepSeekMoE 145B 依旧保持对 GShard 137B 的极大领先优势,同时能够以 28.5%(甚至18.2%) 的计算量达到与 DeepSeek 67B Dense 模型相匹配的性能。

🚀 👏 关于 DeepSeek。DeepSeek 始终坚持:

  • 长期主义,专注于人工智能的底层技术和基础研究,不断挑战前沿性难题。
  • 开放共享,以开源汇聚更多的创造力和生产力,促进应用的创新与生态的繁荣。
  • 怀抱雄心,致力于探索 AGI 的本质,带着对世界的好奇,务实地实现浪漫的目标。
  • DeepSeek 会持续为开源社区贡献更多优秀的作品,并共享他们的研究成果,不断发掘 AI 领域新的惊喜。

三、总结

🆕 🌟 DeepSeekMoE 在 MoE 架构上做了两大创新:

  • 细粒度专家划分:不同于传统 MoE 直接从与标准 FFN 大小相同的 N 个专家里选择激活 K 个专家(如 Mistral 7B×8 采取 8 个专家选 top-2 专家),研究者把 N 个专家粒度划分更细,在保证激活参数量不变的情况下,从 m N mN mN 个专家中选择激活 m K mK mK 个专家(如 DeepSeekMoE 16B 采取 64 个专家选 8 个专家),如此可以更加灵活地组合多个专家。
  • 共享专家分离:研究者把激活专家区分为共享专家(Shared Expert)和独立路由专家(Routed Expert),这种策略有利于将共享和通用的知识压缩进公共参数,减少独立路由专家参数之间的知识冗余。

有什么可以进一步探索的点?

尽管 DeepSeekMoE 在专家专业化和性能提升方面取得了显著成果,但仍有一些潜在的研究方向可以进一步探索。这些包括但不限于:

  • 专家分割的粒度:虽然论文中提到了对专家进行精细分割,但是否存在进一步优化专家分割的空间?是否存在一个最佳的粒度大小,能够在专业化和计算效率之间实现最佳平衡?
  • 共享专家的作用:论文中提到了共享专家用于捕获共同知识,但共享专家的数量和结构是否需要进一步调整?例如,是否可以通过动态调整共享专家的数量来适应不同的任务需求?
  • 训练策略的改进:论文中提到了专家级平衡损失和设备级平衡损失,但是否有其他训练策略可以进一步提高模型的性能和稳定性?例如,是否可以探索更复杂的路由策略或优化损失函数?
  • 当涉及到模型的泛化能力时,DeepSeekMoE 在多个任务上表现出色。然而,其在新领域或未见过的数据上的泛化能力尚待深入研究。或许可以探索一些方法来进一步提高模型的泛化能力。
  • 在计算效率的优化方面,虽然 DeepSeekMoE 已经在计算效率上有所提升,但仍存在进一步优化的空间。例如,研究者可以探索更高效的硬件加速或软件优化策略,以进一步提升模型的计算效率。
  • 关于模型的可解释性,我们需要深入探讨 DeepSeekMoE 的专家结构是否为我们提供了一种新的视角来理解模型的决策过程。通过分析专家的行为,或许可以提高模型的可解释性,并为模型决策过程带来更清晰的解释。
  • 在考虑模型的安全性和伦理性时,随着模型规模的扩大,我们需要确保模型能够产生安全和符合伦理标准的结果。或许可以设计机制来防止模型生成有害或偏见内容,从而确保模型的安全性和伦理性。
  • 最后,在跨领域应用方面,尽管 DeepSeekMoE 在语言任务上表现良好,但其在其他领域(如图像、视频处理)的应用潜力也值得进一步探索。或许可以将 DeepSeekMoE 架构扩展到多模态学习中,以实现跨领域应用并发挥其潜力。

这些潜在研究方向将有助于深化对 DeepSeekMoE 模型性能及其在实际应用中的潜力理解,并且为未来的研究提供了广阔的空间,有助于进一步推动大语言模型的发展。


📚️ 参考链接:

  • 深度求索开源国内首个 MoE 大模型,技术报告、模型权重同时发布
  • CSDN | DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models
  • 首个国产开源 MoE 大模型来了!性能媲美 Llama 2-7B,计算量降低 60%
  • 国产第一个基于混合专家技术的大模型开源:幻方量化旗下公司开源 DeepSeekMoE-16B,未来还有 1450 亿参数的 MoE 大模型
  • 沈向洋:致 AI 时代的我们 —— 请不要忽视写作的魅力

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

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

相关文章

【文本到上下文 #5】:RNN、LSTM 和 GRU

一、说明 欢迎来到“完整的 NLP 指南:文本到上下文 #5”,这是我们对自然语言处理 (NLP) 和深度学习的持续探索。从NLP的基础知识到机器学习应用程序,我们现在深入研究了神经网络的复杂世界及其处理语言的深刻能力。 在…

java springcloud中发布webservice 接口

java springcloud中发布webservice 接口 一、在pom文件中添加依赖&#xff1a; <!--webservice--><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.0</version></dependen…

Hardware-Aware-Transformers开源项目笔记

文章目录 Hardware-Aware-Transformers开源项目笔记开源项目背景知识nas进化算法进化算法代码示例 开源项目Evolutionary Search1 生成延迟的数据集2 训练延迟预测器3 使延时约束运行搜索算法4. 训练搜索得到的subTransformer5. 根据重训练后的submodel 得到BLEU精度值 代码结构…

干货满满!MES系统的功能及实施

万界星空科技MES系统的主要功能&#xff1a; &#xff08;1&#xff09;生产资源分配与监控&#xff1b; &#xff08;2&#xff09;作业计划和排产&#xff1b; &#xff08;3&#xff09;工艺规格标准管理&#xff1b; &#xff08;4&#xff09;数据采集&#xff1b; &…

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 蓝凌EIS智慧协同平台frm_form_upload.aspx接…

建筑能耗管理系统的解决方案研究

为什么要做能耗监测&#xff1f; 节约能源、降低成本 可帮助企业准确掌握能源的使用情况&#xff0c;找出能源浪费的地方&#xff0c;进而采取针对性措施减少能源的消耗。从而企业可降低能源成本&#xff0c;提高盈利能力。 提高能源利用效率 可帮助企业掌握那些设备消耗了…

助力工业园区作业违规行为检测预警,基于YOLOv5【n/s/m/l/x】全系列参数模型开发构建工业园区场景下作业人员违规行为检测识别系统

在很多工业园区生产作业场景下保障合规合法进行作业生产操作&#xff0c;对于保护工人生命安全降低安全隐患有着非常重要的作用&#xff0c;但是往往在实际的作业生产中&#xff0c;因为一个安全观念的淡薄或者是粗心大意&#xff0c;对于纪律约束等意思薄弱&#xff0c;导致在…

Python编辑开发---pycharm pro 2023 中文

PyCharm Pro 2023是一款功能强大的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在提高Python开发人员的生产力。它提供了智能代码编辑、实时代码分析和调试工具&#xff0c;支持版本控制和数据库工具&#xff0c;以及可扩展的插件系统。PyCharm Pro 2023可在多…

vue2嵌入高德地图选择地址后显示地址和经纬度

以高德地图为里&#xff0c;申请key&#xff0c;选择js api服务&#xff0c;获取key和密钥. vue2项目代码引入相关依赖&#xff1a; npm i amap/amap-jsapi-loader -S 封装成组件: <template><div><el-row :gutter"15" class""><…

Python项目——久坐提醒定时器(PySide6)编写

1、介绍 使用Python编写一个久坐提醒软件。功能&#xff1a; 设置工作时间。设置休息时间。选择休息时是否播放音乐。休息时&#xff0c;软件置顶&#xff0c;且不能关闭。 2、工具 语言&#xff1a;python3.11UI设计工具&#xff1a;Qt designer编译器&#xff1a;PyCharm包…

C#使用DateTime的Now静态属性动态获得系统当前日期和时间

目录 一实例 1.源码 2.生成效果 ​编辑 二、相关知识点 1. Thread类 &#xff08;1&#xff09;Thread.Sleep() &#xff08;2&#xff09;Thread(ThreadStart) &#xff08;3&#xff09;IsBackground &#xff08;4&#xff09;Invoke( &#xff09; 2. Create…

Elastic Stack 8.12:通过对 ES|QL 等的改进增强了向量搜索

作者&#xff1a;来自 Elastic Tyler Perkins, Shani Sagiv, Gilad Gal, Ninoslav Miskovic Elastic Stack 8.12 构建于 Apache Lucene 9.9&#xff08;有史以来最快的 Lucene 版本&#xff09;之上&#xff0c;基于我们对标量量化和搜索并发性的贡献&#xff0c;为文本、向量和…

【Java 设计模式】结构型之桥接模式

文章目录 1. 定义2. 应用场景3. 代码实现结语 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它将抽象部分与实现部分分离&#xff0c;使它们可以独立变化&#xff0c;从而降低它们之间的耦合。桥接模式通过将抽象部分和实现部分分离&#x…

基于arcgis js api 4.x开发点聚合效果

一、代码 <html> <head><meta charset"utf-8" /><meta name"viewport"content"initial-scale1,maximum-scale1,user-scalableno" /><title>Build a custom layer view using deck.gl | Sample | ArcGIS API fo…

Spring Boot自动配置原理

1.SpringBootApplication注解 springboot是基于spring的新型的轻量级框架&#xff0c;最厉害的地方当属**自动配置。**那我们就可以根据启动流程和相关原理来看看&#xff0c;如何实现传奇的自动配置 SpringBootApplication//标注在某个类上&#xff0c;表示这个类是SpringBo…

C++ Linux动态库的编译和调用

一、C动态库编译 采用g编译C动态库&#xff0c;命令如下&#xff1a; g -fPIC -shared -o 动态库名 cpp文件名1.1 关于fPIC选项 首先了解动态库的载入时重定位。 一般linux的可执行文件都是elf格式&#xff08;一种二进制文件格式&#xff09;&#xff0c;在可执行文件的头部包…

分享 GitHub 上的敏感词汇工具类:sensitive-word

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

快慢指针-Floyd判圈算法

对于环形链表是否存在环的做法&#xff0c;普通算法可以通过额外Hash数组来存储链表元素&#xff0c;直到Hash数组中出现重复元素。时间复杂度O(n)&#xff0c;空间复杂度O(n) Floyd判圈算法通过利用快慢指针的移动来实现&#xff0c;时间复杂度O&#xff08;n&#xff09;&am…

09 STM32 - PWM

9.1 PWM简介 脉冲宽度调制(Pulse Width Modulation,简称PWM)&#xff0c;是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点&#xff0c;就是对脉冲宽度的控制。 9.2 PWM波原理 如下图所示&#xff0c;使用定时器定时&#xff0c;从0开始&#x…

Linux grep命令(grep指令)grep --help各选项介绍(待更)

文章目录 grep --help英文中文 使用示例-E, --extended-regexp&#xff1a;此选项表示模式为扩展正则表达式。-F, --fixed-strings&#xff1a;此选项表示模式被视为固定字符串而不是正则表达式。-G, --basic-regexp&#xff1a;此选项表示模式为基础正则表达式。这是默认的模式…