当前位置: 首页 > news >正文

DeepSeek 细节之 MoE

DeepSeek 细节之 MoE

DeepSeek 团队通过引入 MoE(Mixture of Experts,混合专家) 机制,以“分而治之”的思想,在模型容量与推理成本之间找到了精妙的平衡点,其中的技术实现和细节值得剖思

Transformer 演变至 MoE

标准的 Transformer 层


T表示序列长度,Self-Att(·) 表示自注意力模块,FFN(·) 表示前馈网络 (FFN)

MOE 的 Transformer 层

混合专家模型 (MoE) 是一种利用稀疏门控机制的深度学习模型,它由一组专家模型和一个门控模型组成。MoE 的核心思想是将输入数据根据任务类型划分为多个区域,并为每个区域分配一个或多个专家模型。这样,每个专家模型可以专注于处理特定区域的数据,从而提升模型的整体性能。

MoE 架构的基本原理相对简单,主要包括两个关键组件:GateNet 和 Experts。GateNet 的功能是决定输入样本应由哪个专家模型进行处理。而 Experts 则是由多个相对独立的专家模型组成的集合,每个专家负责处理特定的输入子空间。


如上图右上所示,构建 MoE 语言模型的典型做法通常是用 MoE 层以指定的间隔替换 Transformer 中的FFN。MoE 层由多位专家组成,其中每个专家在结构上与标准 FFN 相同。然后,每个 token 将被分配给一位或两位专家。如果用 MoE 层替换 FFN 层,则其输出隐藏状态如下

门控网络

GateNet:混合专家模型中“门”是一种稀疏门网络,它接收单个数据元素作为输入,然后输出一个权重,这些权重表示每个专家模型对处理输入数据的贡献。一般是通过softmax门控函数通过专家或token对概率分布进行建模,并选择前K个。例如,如果模型有三个专家,输出的概率可能为0.5和0.4、0.1,这意味着第一个专家对处理此数据的贡献为50%,第二个专家为40%,第三个专家为10%,这个时候的K就可以选择为2,我们认为前两个专家模型的建议会更好,可以用于更加精确的回答中,而第三个专家模型的建议可以用于更加富有创意性的答案中。

专家

Experts:在训练的过程中,输入的数据被门控模型分配到不同的专家模型中进行处理;在推理的过程中,被门控选择的专家会针对输入的数据,产生相应的输出。这些输出最后会和每个专家模型处理该特征的能力分配的权重进行加权组合,形成最终的预测结果。

无辅助损失的负载平衡 DeepSeekMoE

对于前馈网络(FFNs),DeepSeek-V3 采用DeepSeekMoE 架构。与传统的MoE 架构如 GShard 相比,DeepSeekMoE 使用更细粒度的专家,并将一些专家隔离为共享的,演化历程如下图从左至右所示。

DeepSeek 中的 MoE 机制如下图所示:

共享专家和路由专家如下式所示进行加权求和,DeepSeek-V3 使用sigmoid 函数来计算亲和度得分,并在所有选定的亲和度得分之间应用归一化以生成门控值。

  • 对于MoE 模型,不平衡的专家负载会导致路由崩溃并在专家并行场景中降低计算效率
    • 传统解决方案通常依赖于辅助损失(例如专家级平衡损失,设备级平衡损失)来避免负载不平衡。然而,过大的辅助损失会损害模型性能
    • 为了在负载平衡和模型性能之间实现更好的权衡,他们首创了一种无辅助损失的负载平衡策略

具体而言,为每个专家引入一个偏置项,并将其添加到相应的亲和度分数中以确定前K个路由,但该偏置项仅用于路由。与FFN 输出相乘的门控值仍然来自原始的亲和度分数,在训练过程中,作者持续监控每个训练步骤的整个批次上的专家负载,在每一步结束时,如果对应的专家超负荷,则该专家将偏置项减少,如果对应的专家负载不足,我们将其偏置项增加,通过动态调整,DeepSeek-V3 在训练过程中保持了平衡的专家负载,并且比通过纯辅助损失鼓励负载平衡的模型表现更好

更多 DeepSeek 技术细节 ~~ DeepSeek 细节之 MLA (Multi-head Latent Attention)

参考文献

一文读懂:混合专家模型 (MoE)-deepseek
一文通透让Meta恐慌的DeepSeek-V3:在MoE、GRPO、MLA基础上提出Multi-Token预测(含FP8训练详解)
一文了解DeepSeek-MoE 架构

http://www.dtcms.com/a/35449.html

相关文章:

  • 什么是将应用放在边缘服务器上创建?应用不是在用户手机上吗?边缘计算究竟如何优化?通过两个问题来辨析
  • 2020年蓝桥杯Java B组第二场题目+部分个人解析
  • Maven 基础环境搭建与配置(二)
  • Orange 开源项目 - 集成阿里云大模型
  • 【信息系统项目管理师-案例真题】2008下半年案例分析答案和详解
  • 自定义Spring Boot Starter(官网文档解读)
  • 测试学习java第二天
  • 国标28181协议在智联视频超融合平台中的接入方法
  • BugKu练习记录:这不是md5
  • 实现实时数据仓库开源项目
  • 使用VS Code远程开发OpenAI API
  • 【第二天】零基础学习量化基础代码总览-持续更新
  • 【Rust中级教程】2.8. API设计原则之灵活性(flexible) Pt.4:显式析构函数的问题及3种解决方案
  • Spring Boot面试题
  • 【Linux内核】【锁机制】RCU机制入门
  • Python天梯赛系统备考-字符串篇
  • Android之图片保存相册及分享图片
  • 新型物联网电瓶车充电桩在居民区的应用优势
  • Git 常用指令及其说明
  • FutureTask 和 CompletableFuture
  • 更好用更现代的字模软件
  • 9.【线性代数】—— 线性相关性, 向量空间的基,维数
  • vue 3D 翻页效果
  • Vscode编辑器获取更新远程最新分支
  • 新民主主义革命理论的形成依据
  • AdapterBias
  • Rk3568驱动开发_驱动实现流程以及本质_3
  • P4282--高精度加减,进制
  • Debain12.9安装大模型微调基础环境
  • 数据驱动未来!天合光能与永洪科技携手开启数字化新篇章