【深度解析】图解Deepseek-V3模型架构-混合专家模型(MoE)

news2025/3/14 12:27:11

一、引言

最近非常火爆的DeepSeek-V3模型,是一个包含6710亿总参数的强大混合专家模型(MoE),其中每个token激活370亿参数。该模型在DeepSeek-V2验证有效的核心架构基础上,采用多头潜在注意力(MLA)机制DeepSeekMoE架构,显著提升推理效率并降低训练成本。DeepSeek-V3创新性地引入无辅助损失的负载均衡策略,并采用多标记预测训练目标以增强模型性能。
混合专家模型(MoE) 作为突破传统密集模型瓶颈的核心架构,通过任务分治理念实现计算效率与模型容量的双重突破。
DeepSeekMoE的突破性表现印证了该技术的战略价值。MoE架构通过专家拆分、无辅助损失负载均衡等创新,使国产大模型首次在参数效率、训练稳定性等维度超越国际竞品,为构建多模态通用智能底座开辟新路径。
本文将采用图解的方式详细介绍一下混合专家模型(MoE) 的技术原理。


二、什么是混合专家MoE模型

混合专家(Mixture of Experts,简称 MoE)模型,是一种利用多个不同的子模型(或“专家”)来提升大语言模型(LLM)质量的技术。
在这里插入图片描述

MoE模型的主要组成部分包括:
专家(Experts): 模型中的每个专家都是一个独立的神经网络,专门处理输入数据的特定子集或特定任务。例如,在自然语言处理任务中,一个专家可能专注于处理与语言语法相关的内容,而另一个专家可能专注于语义理解。

路由或者门控网络(Gating Network): 门控网络的作用是决定每个输入样本应该由哪个专家或哪些专家来处理。它根据输入样本的特征计算出每个专家的权重或重要性,然后根据这些权重将输入样本分配给相应的专家。门控网络通常是一个简单的神经网络,其输出经过softmax激活函数处理,以确保所有专家的权重之和为1。
在这里插入图片描述
“专家”并不是专门针对某个领域,如“心理学”或“生物学”。它只是语法层面的专家,具体来说,它们的专长是在特定的上下文中处理特定的标记。
在这里插入图片描述
路由器(门控网络)来选择最适合给定输入的专家(们):
在这里插入图片描述
每个专家并不是一个完整的 LLM,而是 LLM 架构中的子模型部分。


三、发展历程

  • 早期探索:理论奠基与原型构建
    混合专家模型(MoE)的起源可追溯至1991年Michael Jordan与Geoffrey Hinton的开创性研究。在论文《Adaptive Mixture of Local Experts》中,他们首次提出通过多个独立网络(专家)协同处理数据子集,并引入门控网络动态分配任务。这一架构突破性地解决了传统神经网络中不同任务间的干扰问题,为后续研究奠定基础。早期MoE模型虽受限于算力和数据规模,但已展现出任务分治思想的潜力——通过专家网络专业化分工,门控网络竞争性选择最优处理路径,显著提升了模型学习效率。

  • 关键突破:稀疏计算与动态激活
    2017年成为MoE发展的分水岭。谷歌团队在《Sparsely-Gated Mixture-of-Experts》中提出两项革命性创新:
    其一,将稀疏门控机制引入LSTM网络,仅激活2-4个专家处理每个token,使模型参数量突破千亿级时仍保持高效推理;
    其二,采用token级路由策略,实现细粒度计算资源分配。
    这两项突破使MoE在自然语言处理领域大放异彩,Google的GShard项目更将MoE成功整合至Transformer架构,为后续大模型时代铺平道路。

  • 当代演进:架构革新与国产突破
    GPT-4的发布标志着MoE进入工业化应用阶段。其采用8个220B参数的专家模块,通过动态路由实现万亿级参数规模下的高效推理。这种"模型堆叠"策略突破单一模型扩展瓶颈,使推理成本降低至传统密集模型的1/8。而国产DeepSeekMoE进一步加速了MoE领域的技术创新。该架构通过三大技术创新实现跨越式发展:
    首创无辅助损失的负载均衡策略,消除传统路由算法对平衡性约束的依赖;
    采用多token预测训练目标,提升专家协作效率;
    参数效率达到国际领先水平,6B模型以40%计算量实现LLaMA2 7B性能,145B版本更以28.5%资源匹配67B密集模型表现。

DeepSeekMoE的成功实践证明,通过专家专业化分工与智能路由机制的深度结合,MoE正在重塑大模型的技术范式,为通用人工智能时代的到来提供关键基础设施。


四、架构设计

4.1 专家架构
  • 密集层 (Dense Layer)
    为了探讨专家(MoE中的E)的代表意义和它们的工作方式,我们首先需要了解 MoE 原本要替代的密集层。
    混合专家(MoE)起始于 LLM 相对基础的功能,即前馈神经网络(FFNN)。
    在这里插入图片描述
    密集层(Dense Layer)是前馈神经网络(FFNN)中的全连接层,每个神经元通过权重矩阵与前一层的所有输出相连,利用激活函数实现特征的非线性组合,用于学习输入数据的高阶抽象表示。
    在这里插入图片描述
    传统 Transformer 中的前馈神经网络(FFNN)被称为密集模型,因为所有参数(权重和偏置)都会被激活。没有任何参数被遗漏,所有参数都参与输出计算。
    如果我们更仔细地观察这种密集模型,可以发现输入会在某种程度上激活所有参数:
    在这里插入图片描述
  • 稀疏层 (Sparse Layers)
    与此相对,稀疏模型仅激活一部分参数,并且与混合专家(MoE)紧密相关。
    可以将密集模型切割成多个部分(所谓的专家),重新训练它,并且在给定时间内只激活一组专家:
    在这里插入图片描述
    其底层思想是每个专家在训练过程中学习不同的信息。然后,在进行推理时,仅使用与给定任务最相关的特定专家。
    96074b10cd71dda74cc0890dc3a853a9.png
  • 专家的架构
    将专家视为密集模型中的隐藏层并将其切分成块,它们通常本身就是完整的前馈神经网络(FFNN),
    在这里插入图片描述
    由于大多数 LLM 具有多个解码器块,因此给定文本将在多个专家之间传递,直到文本生成:
    在这里插入图片描述
    所选的专家很可能在标记之间有所不同,这就导致了不同的“路径”被选择:
    在这里插入图片描述
    如果我们更新解码器块的可视化,它现在会包含更多的 FFNN(每个专家一个):
    在这里插入图片描述
    解码器块现在有多个 FFNN(每个都是一个“专家”),可以在推理时使用。
4.2 路由机制

现在我们有了一组专家,那么模型是如何知道应该使用哪些专家的呢?

在专家之前,添加了一个路由器(也叫网关网络),它经过训练来选择哪个专家适合给定的标记。

  • 路由器
    路由器(或门控网络)也是一种前馈神经网络(FFNN),它根据特定的输入来选择专家。它输出概率,并利用这些概率来选择最匹配的专家:
    在这里插入图片描述
    专家层返回所选专家的输出,并乘以门值(选择概率)。
    路由器与专家(其中只有少数几个被选中)一起构成了 MoE 层:
    在这里插入图片描述
    给定的 MoE 层有两种大小,分别是稀疏的混合专家或密集的混合专家模型。
    这两者都使用路由器来选择专家,但稀疏 MoE 只选择几个,而密集 MoE 则选择所有专家,但可能以不同的分布进行选择。

在这里插入图片描述给定一组标记,密集MoE 会将标记分配给所有专家,而稀疏 MoE 只选择少数专家。

  • 专家的选择
    门控网络可以说是任何 MoE 模型中最重要的组成部分,因为它不仅决定了在推理过程中选择哪些专家,还决定了在训练过程中选择哪些专家。
    在最基本的形式中,我们将输入(x)与路由器权重矩阵(W)相乘:
    在这里插入图片描述然后,我们对输出应用 SoftMax 操作,为每个专家创建概率分布 G(x):
    在这里插入图片描述
    路由器使用这种概率分布来选择与给定输入最匹配的专家。
    最后,我们将每个路由器的输出与每个选定的专家相乘,并对结果进行求和。

在这里插入图片描述

4.3 混合专家模型流程图

下图显示了输入是如何通过路由器和专家进行流动的。
在这里插入图片描述
在这里插入图片描述


五、技术优势详解

5.1 计算效率:条件计算带来的FLOPs优化

混合专家模型(MoE)通过稀疏激活机制实现计算效率质的飞跃。每个token仅激活2-4个专家(总专家量可达数千),避免传统密集模型的全参数计算。例如,DeepSeekMoE 16B模型激活参数仅6.5B,却以40%计算量达到LLaMA2 7B的性能。这种效率源于:

  • 动态路由:门控网络实时筛选相关性最高的专家
    简单的函数常常导致路由器会选择相同的专家,因为某些专家可能比其他专家学习得更快:在这里插入图片描述
    选择的专家分布不均,会导致一些专家几乎不会被训练到,这导致在训练和推理过程中都会出现问题。
    因此,希望在训练和推理过程中,专家之间具有相等的重要性,这就是我们所说的负载均衡。从某种意义上说,这是为了防止对同一专家的过拟合。

  • 负责均衡:KeepTopK
    为了平衡专家的重要性,我们需要关注路由器,因为它是决定在特定时刻选择哪些专家的主要组成部分。
    负载均衡路由器的一种方法是通过一个简单的扩展,叫做 KeepTopK。通过引入可训练的(高斯)噪声,我们可以防止总是选择相同的专家:
    在这里插入图片描述然后,除了你想激活的前 k 个专家(例如 2 个)之外,其余专家的权重将被设置为 -∞:
    在这里插入图片描述
    通过将这些权重设置为 -∞,这些权重上的 SoftMax 输出将导致概率为 0:
    2d232fa3ea0bd5a6378fa55f022aa884.png

  • 辅助损失
    为了在训练期间获得更均匀的专家分布,辅助损失(也称为负载均衡损失)被添加到网络的常规损失中。
    这个辅助损失的第一个组成部分是对整个批次中每个专家的路由器值进行求和:
    在这里插入图片描述
    这给出了每位专家的重要性分数,表示无论如何输入,某位专家被选择的可能性。
    我们可以使用这个来计算变异系数(CV),它告诉我们不同专家之间的重要性分数差异有多大。

使用这个 CV 分数,我们可以在训练过程中更新辅助损失,目的是尽可能降低 CV 分数(从而给每个专家相等的重要性):
在这里插入图片描述

5.2 扩展能力:模型容量与计算成本的解耦

MoE架构突破参数规模与计算资源的线性关系。DeepSeekMoE 145B模型通过专家拆分策略,在保持计算成本28.5%的情况下,性能超越Google GShard。关键技术包括:

  • 专家并行:将专家分布在不同计算节点
    不平衡不仅存在于被选择的专家中,也存在于分配给专家的 token 分布中。
    例如,如果输入 token 不成比例地分配给某个专家,而忽视了其他专家,那么也可能导致训练不足:
    在这里插入图片描述
    这里的问题不仅是哪些专家被使用,而是它们被使用的频率。
    解决这个问题的一种方法是限制每个专家可以处理的 token 数量,即专家容量。当一个专家的容量达到上限时,剩余的 token 会被发送到下一个专家:
    在这里插入图片描述
    如果两个专家的容量都已满,那么 token 将不会被任何专家处理,而是被发送到下一层,这就是 token 溢出。
    在这里插入图片描述
  • 容量因子调节:动态调整专家处理token上限
  • Token 选择
    KeepTopK 策略是将每个 token 路由发送到少数几个选定的专家。这种方法称为 Token Choice,允许将给定的 token 发送到一个专家(top-1 路由):
    在这里插入图片描述或发送到多个专家(top-k 路由):
    在这里插入图片描述

六、训练优化技术解析

1. 联合训练策略

专家-路由器协同优化采用双路径反向传播:
DeepSeek创新的多token预测目标
在这里插入图片描述

  • 同时预测当前token及后续n个token
  • 迫使专家学习长程依赖关系
  • 训练效率提升30%(相同epoch数下困惑度降低18%)
6.2 分布式训练实践

专家并行架构实现超大规模训练:

输入数据
Split into Shards
GPU1: Expert A
GPU2: Expert B
GPU3: Expert C
Gather Outputs
Final Output

DeepSeek关键参数:

  • 通信压缩:采用1-bit梯度量化,通信量减少83%
  • 流水线并行:重叠计算与通信,GPU利用率达92%
  • 检查点策略:每30分钟自动保存,恢复训练仅需2分钟

资源消耗

  • 145B模型全量训练消耗278.8万H800 GPU小时
  • 同等规模密集模型需920万GPU小时(成本降低67%)

七、技术突破总结

MoE架构通过计算稀疏化参数专业化的双重革新,正在重塑大模型技术路线。DeepSeek系列实践证明,国产模型在专家拆分策略(如将单个专家拆分为两个子专家而不增加参数量)、动态路由算法等领域已形成独特技术优势。未来随着万亿级MoE模型的出现,这种架构将成为突破算力瓶颈的核心解决方案。

【参考文献】
本文参考了 Maarten Grootendorst的文章,其是“袋鼠书”Hands-On Large Language Models 的作者,你可以在《袋鼠书》中查看更多关于大语言模型可视化的内容。

在这里插入图片描述

英文版封面,中文版封面

《图解大模型》
Jay Alammar,Maarten Grootendorst | 著
李博杰 | 译
美亚 4.7 星评,畅销书 Hands-on 系列新作。只要具备 Python 基础,就可以通过本书学习大语言模型,并将大语言模型的能力应用到真正的 AI 实践中。

本书将为 Python 开发人员提供使用大模型的实用工具和概念,帮助大家掌握实际应用场景。你将学习如何利用预训练的大型语言模型进行文案撰写、文本摘要、语义搜索等任务,构建超越关键词匹配的智能系统。

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

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

相关文章

c#判断exe文件是不是7z或者rar的自解压文件

亲测可以实现检测7z的自解压,但是对于rar的自解压格式,最新版不支持,尝试修改回发现几乎检测成了exe文件,这显然是不正确的,其他版本未测试。 如下图所示,可以检测出自解压格式的7z文件,黑色显…

富士SC2022,C325,C328打印机扫描到网络详细教程

前言: 在开始教程之前,我先声明目前该教程适用于FujiXerox apeos C325Z和FujiXerox DocuCentre SC2022打印机。这次教程以FujiXerox DocuCentre SC2022为例,该打印机IP地址为10.40.11.240。 前提条件 : 1. 安装打印机所需打印机和扫…

人工智能3d点云之Pointnet++项目实战源码解读(点云分类与分割)

一.项目文件概述 二.数据读取模块配置 实际代码运行时是先定义与加载好模型,然后再去读取数据进来传入到模型网络中去训练。但现在反过来先读取数据开始。 进入ModelNetDataLoader类的_getitem方法, 做标准化的目的是处理异常大的数值 上面返回的cls是类别,相当于…

IP 路由基础 | 路由条目生成 / 路由表内信息获取

注:本文为 “IP 路由” 相关文章合辑。 未整理去重。 IP 路由基础 秦同学学学已于 2022-04-09 18:44:20 修改 一. IP 路由产生背景 我们都知道 IP 地址可以标识网络中的一个节点,并且每个 IP 地址都有自己的网段,各个网段并不相同&#xf…

java后端开发day16--字符串(二)

(以下内容全部来自上述课程) 1.StringBuilder 因为StringBuilder是Java已经写好的类。 java在底层对他进行了一些特殊处理。 打印对象不是地址值而是属性值。 1.概述 StringBuilder可以看成是一个容器,创建之后里面的内容是可变的。 作用…

LabVIEW危化品仓库的安全监测系统

本案例展示了基于LabVIEW平台设计的危化品仓库安全监测系统,结合ZigBee无线通信技术、485串口通讯技术和传感器技术,实现了对危化品仓库的实时无线监测。该系统不仅能提高安全性,还能大幅提升工作效率,确保危化品仓库的安全运营。…

深度学习框架探秘|Keras 应用案例解析以及 Keras vs TensorFlow vs PyTorch

引言 上一篇文章《深度学习框架探秘|Keras:深度学习的魔法钥匙》 我们初步学习了 Keras,包括它是什么、具备哪些优势(简洁易用的 API、强大的兼容性、广泛的应用领域),以及基本使用方法。本文,…

NAT(网络地址转换)技术详解:网络安全渗透测试中的关键应用与防御策略

目录 NAT的作用 NAT类型 NAT工作流程示例 NAT 转换技术的原理 源地址转换(SNAT,Source NAT): 目标地址转换(DNAT,Destination NAT): 端口地址转换(PAT&#xff0c…

容器化部署Kafka的最佳实践:基于KRaft模式的无ZooKeeper方案

一、docker 部署kafka单节点 1.1安装docker 可以参考这篇CentOS 7安装docker并配置镜像加速 1.3 运行kafka(注意修改zookeeper,kafka地址) docker run -d --name kafka -e KAFKA_ADVERTISED_LISTENERSPLAINTEXT://172.16.10.180:9092 -p …

【PHP】php+mysql 活动信息管理系统(源码+论文+数据库+数据库文件)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 【PHP】php 活动信息管理系统(源码论文…

thingboard告警信息格式美化

原始报警json内容: { "severity": "CRITICAL","acknowledged": false,"cleared": false,"assigneeId": null,"startTs": 1739801102349,"endTs": 1739801102349,"ackTs": 0,&quo…

OpenHarmonry 5.0.1源码下载与编译

预置环境:硬盘500G、内存32G、Ubuntu 20.04.6 LTS Ubuntu系统下载路径:ubuntu-releases安装包下载_开源镜像站-阿里云 一、必需环境 sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf…

STM32 外部中断和NVIC嵌套中断向量控制器

目录 背景 外部中断/事件控制器(EXTI) 主要特性 功能说明 外部中断线 嵌套向量中断控制器 特性 ‌中断线(Interrupt Line) 中断线的定义和作用 STM32中断线的分类和数量 优先级分组 抢占优先级(Preemption Priority) …

string类详解(上)

文章目录 目录1. STL简介1.1 什么是STL1.2 STL的版本1.3 STL的六大组件 2. 为什么学习string类3. 标准库中的string类3.1 string类3.2 string类的常用接口说明 目录 STL简介为什么学习string类标准库中的string类string类的模拟实现现代版写法的String类写时拷贝 1. STL简介 …

【Go并发编程】Goroutine 调度器揭秘:从 GMP 模型到 Work Stealing 算法

每天一篇Go语言干货,从核心到百万并发实战,快来关注魔法小匠,一起探索Go语言的无限可能! 在 Go 语言中,Goroutine 是一种轻量级的并发执行单元,它使得并发编程变得简单高效。而 Goroutine 的高效调度机制是…

【前端】Vue组件库之Element: 一个现代化的 UI 组件库

文章目录 前言一、官网1、官网主页2、设计原则3、导航4、组件 二、核心功能:开箱即用的组件生态1、丰富的组件体系2、特色功能亮点 三、快速上手:三步开启组件化开发1、安装(使用Vue 3)2、全局引入3、按需导入(推荐&am…

坐井说天阔---DeepSeek-R1

前言 DeepSeek-R1这么火,虽然网上很多介绍和解读,但听人家的总不如自己去看看原论文。于是花了大概一周的时间,下班后有进入了研究生的状态---读论文。 DeepSeek这次的目标是探索在没有任何监督数据的情况下训练具有推理能力的大模型&#…

UART(一)——UART基础

一、定义 UART(Universal Asynchronous Receiver/Transmitter)是一种广泛使用的串行通信协议,用于在设备间通过异步方式传输数据。它无需共享时钟信号,而是依赖双方预先约定的参数(如波特率)完成通信。 功能和特点 基本的 UART 系统只需三个信号即可提供稳健的中速全双工…

DeepSeek 的创新融合:多行业应用实践探索

引言 在数字化转型的浪潮中,技术的融合与创新成为推动各行业发展的关键力量。蓝耘平台作为行业内备受瞩目的创新平台,以其强大的资源整合能力和灵活的架构,为企业提供了高效的服务支持。而 DeepSeek 凭借先进的人工智能技术,在自然…

CentOS 7超详细安装教程(含镜像)

1. 安装前准备 1.1 CentOS简介 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是一种基于 Red Hat Enterprise Linux(RHEL)源代码构建的免费开源操作系统。它在稳定性、安全…