Pytorch分布式训练/多卡训练(六) —— Expert Parallelism (MoE的特殊策略)

MoE 区别于传统的 Transformer 是其参数分布极为不均

复制代码
传统Transformer (175B GPT-3):
├─ 96层,每层参数量相近
├─ Layer 1: 1.8B参数
├─ Layer 2: 1.8B参数
├─ ...
└─ Layer 96: 1.8B参数
特点:参数分布均匀 ✅

MoE模型 (Switch Transformer-1.6T):
├─ Embedding: 1B参数
├─ Layer 1 (标准Attention): 1B参数
├─ Layer 2 (MoE层): 128B参数!⚠️
│   ├─ 64个Expert,每个2B参数
│   └─ 路由器:0.01B参数
├─ Layer 3 (标准Attention): 1B参数
├─ Layer 4 (MoE层): 128B参数!⚠️
├─ ...
└─ Layer 32 (MoE层): 128B参数
特点:参数分布极不均匀!❌

如果使用 ZeRO-3,当计算的时候all-gather 所有模型参数,如果 expert 数量很多,例如 64 个,那么总显存可能带 256G, 远超一个 GPU所能承载的

Expert Parallelism

核心思想

Expert并行 (EP):

  • 不同GPU负责不同的Expert

  • 只加载被本GPU负责的Expert参数

  • Token根据路由结果发送到对应GPU

    配置:EP=64(64个GPU,每个负责1个Expert)

    参数分配:
    ├─ GPU 0: Expert 0 (2GB)
    ├─ GPU 1: Expert 1 (2GB)
    ├─ GPU 2: Expert 2 (2GB)
    ├─ ...
    └─ GPU 63: Expert 63 (2GB)

    每个GPU显存占用:

    • Expert参数:2GB(只有1个Expert)✅
    • 共享层参数:1GB(Attention等)
    • 激活值:根据收到的token数量
相关推荐
gregmankiw7 分钟前
公理引擎(Project Axiom):基于神经符号验证的可执行智能体架构设计方案
人工智能
火山引擎开发者社区12 分钟前
ArkClaw 社群挑战赛|群虾整活大赏
人工智能
Ulyanov17 分钟前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真
云烟成雨TD32 分钟前
Spring AI Alibaba 1.x 系列【31】集成 Studio 模块实现可视化 Agent 调试
java·人工智能·spring
kimi-22244 分钟前
CLIP 与 Qwen-VL 模型架构主要区别
人工智能·语言模型
刀法如飞1 小时前
一款Python语言Django框架DDD脚手架,助你快速搭建项目
python·ddd·脚手架
刀法如飞1 小时前
一款Python语言Django框架DDD脚手架,适合中大型项目
后端·python·领域驱动设计
与芯同行1 小时前
单声道音频Codec在语音交互产品中的工程设计要点与常见问题分析
人工智能·语音识别·ai语音对话芯片·tp9311·天源中芯tpower
citi1 小时前
OpenViking 源代码编译指南
人工智能·context
MediaTea1 小时前
Scikit-learn:数据集
人工智能·python·机器学习·scikit-learn