DeepSeek-V3 的核心架构: DeepSeekMoE

打印 上一主题 下一主题

主题 915|帖子 915|积分 2745

一. 弁言

对于最近大火的 DeepSeek,我只能说天时地利人和,在 2024 年初,在工作的时候接触过 DeepSeek LLM,有发展潜力,但在代码和数学范畴,还是 GPT, Kimi,智谱清言等大模子性能更好,社会上也都押宝在大厂大投资累计起来的模子上,不成想 2025 年让 DeepSeek 这匹黑马闯了出来。(以我自己的立场来看,DeepSeek 影响这么大是由于突破了某些骗人的虚假泡泡,纯个人观点)
最近大火的是 DeepSeek 发布的两个参数为 660B 的 DeepSeek-R1-Zero 和 DeepSeek-R1,其中 R1 在几天前也开源了。


  • R1-Zero 基于 DeepSeek-V3-Base,纯粹通过 RL(强化学习)练习,无 STF(监督微调)。
  • R1 则基于 R1-Zero,先使用少量人工标注的高质量数据举行冷启动微调,然后再举行 RL。
(DeepSeek-R1 蒸馏出六个小模子,参数从小到大分别为 1.5B、7B、8B、14B、32B 以及 70B,这六个模子完全开源。感兴趣的可以点击地址下载模子玩一玩: https://huggingface.co/deepseek-ai?continueFlag=f18057c998f54575cb0608a591c993fb)

本日简朴先容一下 DeepSeek-V3 的核心架构: DeepSeekMoE,那么必要先理解一下混合专家模子 MoE(Mixture of Experts)。
二. 混合专家模子(Mixture of Experts, MoE)

在深度学习里,想让模子变得更强,往往就得让它变得更大、更复杂。但这样一来,盘算资源的需求就会蹭蹭往上涨。混合专家模子(MoE)通过引入希奇盘算,以及根据任务动态分配资源的机制,高效的解决了在有限的盘算资源下最大化模子性能这一问题。
混合专家模子(MoE)是一种基于 Transformer 架构的模子,重要由希奇MoE层门控网络/路由机制(Router)两个核心组件构成。
图1

1. 希奇 MoE 层



  • 替换传统 FFN : 在 Transformer 架构中,希奇 MoE 层通常用于替换尺度的前馈神经网络(FFN)层。传统 FFN 必要处理所有输入类型,而 MoE 通太过工协作的专家网络实现更高效的盘算。
  • 专家网络布局: 

    • 每个专家(Expert)是一个独立的子网络,通常为轻量级 FFN(参数更少),专注于特定输入特性或任务。图1中表现两组专家体系,每组4个FFN专家(FFN 1-4)。
    • 专家可以是分层或嵌套布局(如多层 MoE),相互独立,可以并行盘算,进一步加强表达本领。

2. 门控网络/路由机制(Router)




  • 路由策略(Router): 

    • 输入隐藏状态通过路由模块(如线性层或留意力机制)生成专家权重(图1中的 p 值),选择当前输入最相关的少数专家。
    • 例如: 对输入 h_t​,路由输出权重向量,仅激活权重最高的专家。

  • 动态盘算: 

    • 每次前向流传仅激活部分专家(如1-4个),其余专家处于"关闭"状态,大幅低落盘算量。
    • 这种希奇性使得模子参数规模能够扩展至万亿级别,而实际盘算量仅呈线性增长。
    • 最终输出 = 选中的 FFN 专家的输出 × 门控值(图1中虚线表现的值)

3. MoE层完整工作流程: 

Input Token → Router评估 → 专家选择 → 专家处理 → 门控加权 → Output
举个例子,假设有一个 MoE 模子,用于文本分类,模子中有三个专家:
专家1: 善于处理科技类文本
专家2: 善于处理体育类文本
专家3: 善于处理娱乐类文本
输入文本:"苹果公司发布了最新的iPhone 15"
分词结果:["苹果公司", "发布", "最新", "的", "iPhone", "15"]
Token向量:[T1, T2, T3, T4, T5, T6]  # 每个Ti是d维向量
# 拿两个 token 举例,其他 token 同理(假设都路由到专家权重最高的专家i中)
For token "苹果公司" (T1):
  专家1: 0.8
  专家2: 0.1
  专家3: 0.1 → 选择Top-1专家(专家1)
For token "iPhone" (T5):
  专家1: 0.9
  专家2: 0.05
  专家3: 0.05 → 选择Top-1专家(专家1)
# 专家处理
专家1处理T1 → E1(T1) = [0.9, 0.2, ...]  # 输出d维向量
专家2处理T2 → E1(T2) = [0.3, 0.8, ...]
...
专家1处理T5 → E1(T5) = [0.95, 0.1, ...]
# 门控机制,对每个 token 举行加权组合
最终表现 = ∑(门控权重 * 专家输出)
所有token处理后得到:
[0.8*E1(T1), 0.7*E1(T2), 0.6*E1(T3), 0.5*E1(T4), 0.9*E1(T5), 0.8*E1(T6)]
# 通过 Transformer 层整合上下文
上下文表现 = Transformer(MoE_output)
# 池化得到句子表现
句子向量 = MeanPooling(上下文表现)
# 最终分类
分类得分 = LinearLayer(句子向量) → [科技类: 0.92, 体育类: 0.05, 娱乐类: 0.03]
三. DeepSeek-V3 的核心架构: DeepSeekMoE

DeepSeekMoE 不仅继续了 MoE 架构的诸多优势,更在多个关键环节举行了巧妙的改进,实现了服从与性能的完善平衡,为大规模模子的高效练习与推理开辟了新的门路。

1. DeepSeekMoE 的根本架构:在 Transformer 和 MoE 机制上的创新升级



  • 细粒度专家划分: 每个 MoE 层包含 1 个共享专家和 256 个路由专家,每个 token 激活 8 个路由专家。这种设计让共享专家处理通用特性,路由专家处理具体任务,提升了模子机动性和服从。
  • 希奇激活机制: 每个 token 只激活少数专家,低落了盘算开销,同时让模子能机动处理差别类型输入,尤其得当必要高度专业化知识的场景。
2. 动态负载均衡

传统 MoE 中,负载(某些专家大概会由于处理过多的 token 而负载过高)不均衡会导致资源浪费甚至路由瓦解。DeepSeekMoE 的解决方案如下:


  • 动态偏置调解: 在练习中,体系监控专家负载,自动调解偏置项:负载高的专家低落偏置,负载低的专家增长偏置,从而实现自然负载均衡。
  • 无辅助损失优势: 不引入额外损失函数,避免对模子性能的负面影响,同时有效防止路由瓦解。
3. 序列级负载均衡

传统 MoE 关注全局(数据集级)和局部(Batch 级)负载均衡,而 DeepSeekMoE 首创序列级均衡。


  • 序列级平衡损失: 在练习中,体系监控专家负载,自动调解偏置项: 负载高的专家低落偏置,负载低的专家增长偏置,从而实现自然负载均衡。
  • 极小化平衡因子: 不引入额外损失函数,避免对模子性能的负面影响,同时有效防止路由瓦解。
4. 节点级负载均衡



  • 限定路由节点: 每个 token 最多发送到 4 个节点,节点亲和度通过专家节点的汗青协作服从动态盘算,选择亲和度高的节点,优先选择通讯耽误低、缓存命中率高的节点,减少跨节点通讯的开销。
5. 推理保障机制

传统 MoE 推理中,负载不均衡大概导致 token 被扬弃。DeepSeekMoE 的解决方法如下: 


  • 冗余专家摆设: 在推理阶段,高负载专家冗余摆设在差别 GPU 上,平衡 GPU 负载。
  • 动态负载迁移: 动态选择激活专家,进一步优化推理服从,确保推理过程完整。
四. 总结

实践结果:在671B总参数目下实现单 token 仅激活3.7%参数,推理速度提升2.1倍,练习资本低落67%。
以上纯个人总结及观点, 如有错误, 还请大佬们指教

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表