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

文章目录

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

🍉 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.mzph.cn/news/632834.shtml

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

相关文章

旅游项目day03

1. 前端整合后端发短信接口 2. 注册功能 后端提供注册接口,接受前端传入的参数,创建新的用户对象,保存到数据库。 接口设计: 实现步骤: 手机号码唯一性校验(后端一定要再次校验手机号唯一性&#xff09…

Vray渲染效果图材质参数设置

渲染是创造出引人入胜视觉效果的关键步骤,在视觉艺术领域尤为重要。不过,渲染作为一个资源密集型的过程,每当面对它时,我们往往都会遭遇到时间消耗和资源利用的巨大挑战。幸运的是,有几种方法能够帮助我们优化渲染&…

【51单片机】数码管的静态与动态显示(含消影)

数码管在现实生活里是非常常见的设备,例如 这些数字的显示都是数码管的应用。 目录 静态数码管:器件介绍:数码管的使用:译码器的使用:缓冲器: 实现原理:完整代码: 动态数码管&#…

Apache安全及优化

配置第一台虚拟机 VM1网卡 yum仓库 挂载磁盘 上传3个软件包到/目录 到/目录下进行解压缩 tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar -xjf httpd-2.4.29.tar.bz2 mv apr-1.6.2 httpd-2.4.29/srclib/apr mv apr-util-1.6…

【Redis】基于Token单点登录

基于Token单点登录 获取验证码 流程图 #mermaid-svg-DLGHgCofEYXVSmI5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-DLGHgCofEYXVSmI5 .error-icon{fill:#552222;}#mermaid-svg-DLGHgCofEYXVSmI5 .error-text{f…

Spring Boot 单体应用升级 Spring Cloud 微服务

作者:刘军 Spring Cloud 是在 Spring Boot 之上构建的一套微服务生态体系,包括服务发现、配置中心、限流降级、分布式事务、异步消息等,因此通过增加依赖、注解等简单的四步即可完成 Spring Boot 应用到 Spring Cloud 升级。 *Spring Cloud …

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用

目录 一、概述 1. Nginx介绍 2. Nginx优势 3. Nginx的工作原理 二、容器创建 1. Mysql容器 2. Tomcat容器 3. Nginx容器 每篇一获 一、概述 1. Nginx介绍 Nginx(发音为 "engine x")是一个开源的、高性能的 HTTP 服务器和反向代理服务…

[二]rtmp服务器搭建

[二]rtmp服务器搭建 一.测试二.使用Nginx搭建自己的rtmp服务器1.nginx是什么?2.环境准备 三、搭建过程1.安装编译 nginx 所需要的库2.下载 nginx-1.21.6.tar.gz3.下载 nginx-rtmp-module 4.解压5.编译6.启动nginx,检测nginx是否能成功运行7.配置nginx使用…

OpenCV-Python(47):支持向量机

原理 线性数据分割 如下图所示,其中含有两类数据,红的和蓝的。如果是使用kNN算法,对于一个测试数据我们要测量它到每一个样本的距离,从而根据最近的邻居分类。测量所有的距离需要足够的时间,并且需要大量的内存存储训…

uni-app小程序 uni.showToast字数超过两行自动省略显示不全问题

在实际开发过程中如果用户提交某些文件时,如果缺少某些条件我们要提醒用户缺少那些条件才能提交,但是如果我们用uni.showToast提醒的次数超过7个字的时候就会导致文字显示不全,达不到提醒的效果,这种时候我们就需要使用uni.showMo…

文心一言使用分享

ChatGPT 和文心一言哪个更好用? 一个直接可以用,一个还需要借助一些工具,还有可能账号会消失…… 没有可比性。 通用大模型用于特定功能的时候需要一些引导技巧。 import math import time def calculate_coordinate(c, d, e, f, g, h,…

springcloud +Vue 前后端分离的onlinejudge在线评测系统

功能描述: 本系统的研究内容主要是设计并实现一个一个在线测评系统(OJ),该系统集成了博客、竞赛、刷题、教学,公告,个人管理六大功能,用户注册后登录系统,可以浏览本站的全部文章、发…

【JVM】并发的可达性分析详细解释

​ 🍎个人博客:个人主页 🏆个人专栏:JVM ⛳️ 功不唐捐,玉汝于成 ​ 目录 前言 正文 可达性分析的基本原理: 根集合(Root Set): 对象引用关系: 标记…

PyCharm 快捷键(Ctrl + R)正则表达式批量替换

目录 一、使用快捷键CtrlR,打开替换界面 二、输入替换格式 三、点击全部替换 一、使用快捷键CtrlR,打开替换界面 二、输入替换格式 在第一个框输入 (.*): (.*) 第二个框输入 $1:$2, 三、点击全部替换

spring boot学习第八篇:kafka监听消费

为了实现监听器功能 pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoc…

论文阅读:Vary论文阅读笔记

目录 引言整体结构图数据集构造Vary-tiny部分Document Data数据构造Chart Data构造Negative natural image选取 Vary-base部分 引言 论文&#xff1a;Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models Paper | Github | Demo 许久不精读论文了&#x…

Spring Boot 优雅实现统一数据返回格式+统一异常处理+统一日志处理

在我们的项目开发中&#xff0c;我们都会对数据返回格式进行统一的处理&#xff0c;这样可以方便前端人员取数据&#xff0c;当然除了正常流程的数据返回格式需要统一以外&#xff0c;我们也需要对异常的情况进行统一的处理&#xff0c;以及项目必备的日志。 1. 统一返回格式 …

linux 安装ffmpeg

一、下载 ffmpeg-4.3.1 下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1xbkpHDfIWSCbHFGJJHSQcA 提取码&#xff1a;3eil 二、上传到服务器root目录下 三、给ffmpeg-4.3.1 读写权限 chmod -R 777 /root/ffmpeg-4.3.1 四、创建软连接 1.进入/bin 目录 2.…

用js做个转盘

样式 <style>.wheel {position: relative;width: 400px;height: 400px;border: 1px solid black;border-radius: 50%;overflow: hidden;margin: auto;}.slice {position: absolute;left: 0;top: 0;width: 0;height: 0;border: 200px solid red;/* border-width: 100px 10…

Spring Boot整合Druid(druid 和 druid-spring-boot-starter)

引言 在现代的Web应用开发中&#xff0c;高性能的数据库连接池是确保应用稳定性和响应性的关键因素之一。Druid是一个开源的高性能数据库连接池&#xff0c;具有强大的监控和统计功能&#xff0c;能够在Spring Boot应用中提供出色的数据库连接管理。本文将研究在Spring Boot中…