想做大模型开发前,先来了解一下MoE

为了实现大模型的高效训练和推理,混合专家模型MoE便横空出世。

大模型发展即将进入下一阶段但目前仍面临众多难题。为满足与日俱增的实际需求,大模型参数会越来越大,数据集类型越来越多,从而导致训练难度大增,同时也提高了推理成本。为了实现大模型的高效训练和推理,混合专家模型MoE便横空出世。

MoE结构的发展

Vanilla MoE

Export Network,用于学习不同数据,一个Gating Network用于分配每个Expert的输出权重。

Sparse MoE

Experts的输出是稀疏的,只有部分的 experts 的权重> 0,其余=0 的 expert 直接不参与计算

Expert Balancing问题

不同 experts 在竞争的过程中,会出现"赢者通吃"的现象:前期变现好的 expert 会更容易被 gating network 选择,导致最终只有少数的几个 experts 真正起作用

Transformer MoE

GShard

  • Transformer的encoder和decoder中,每隔一个(every other)FFN层,替换成position-wise MoE层
  • Top-2 gating network

Switch Transformer

简化了MoE的routing算法,gating network 每次只 route 到 1 个 expert

GLaM

  • Gshard结构
  • Scale参数量
  • 降低训练推理成本

MoE的分布式通信和MindSpore优化

MoE结构和普通的Dense模型的差异在于,其需要额外的AllToAll通信,来实现数据的路由(Gating)和结果的回收。而AllToAll通信会跨Node(服务器)、跨pod(路由),进而造成大量的通信阻塞问题

MindSpore的MoE优化

大模型训练主要瓶颈在于片上内存与卡间通信。常用的内存优化手段:

1)MoE并行:将不同的专家切分到不同的卡上,由于MoE的路由机制,需要使用AllToAll通信,将token发送到正确的卡上。对AllToAll的优化:分级AllToAll、Group-wise AllToAll等。

2)优化器异构:大模型训练常使用的adam系列优化器,其占用的内存往往是模型参数本身的2倍或以上,可以将优化器状态存储在Host内存上。

3)多副本并行:将串行的通信、计算拆分成多组,组件流水,掩盖通信时间。

MindSpore已使能上述优化,大幅提升了万亿参数稀疏模型的训练吞吐

Mixtral 8x7b MoE大模型

Mixtral的基础模型Mistral

  • RoPE
  • RMSNorm
  • Transformer decoder
  • Grouped Multi-Query Attention
  • Sliding window attention: 优化随着序列长度增加而增长的显存占用和计算消耗

Mixtral

  • 8个expert(类GPT-4)
  • Top2 gating

MoE Layer的MindSpore实现

Mindformers的Mixtral支持

  • 基于MindFormers实现Mixtral-8x7B MoE模型。关键结构: GQA, RoPE, RMSNorm, SiluMoE配置: 8 Experts, TopK=2, capacity c=1.1加载开源的Mixtral权重和tokenizer,推理结果对齐HF.
  • 4机32卡EP,PP等多维混合并行,基于自有数据集试验性训练收敛符合预期。200 epoch loss 100.02

EP=8,MP=1时性能最佳,约1147 tokens/s/p。

MoE和lifelong learning

终身学习/持续学习的性质

|------------------------------|---------------|
| 性质 | 定义 |
| 知识记忆(knowledge retention) | 模型不易产生遗忘灾难 |
| 前向迁移(forward transfer) | 利用旧知识学习新任务 |
| 后向迁移(backward transfer) | 新任务学习后提升旧任务 |
| 在线学习(online learning) | 连续数据流学习 |
| 无任务边界(No task boudaries) | 不需要明确的任务或数据定义 |
| 固定模型容量(Fixed model capacity) | 模型大小不随任务和数据变化 |

MoE模型+终身学习

|------------------------------|---|
| 性质 | |
| 知识记忆(knowledge retention) | √ |
| 前向迁移(forward transfer) | √ |
| 后向迁移(backward transfer) | - |
| 在线学习(online learning) | × |
| 无任务边界(No task boudaries) | √ |
| 固定模型容量(Fixed model capacity) | √ |

MoE的特点:

  • 多个Expert分别处理不同分布(domain/topic)的数据
  • 推理仅需要部分Expert

LLM的终身学习:

  • 世界知识底座持续学习。
  • Expert可插拔
  • Gating Network可增删。

MoE+终身学习的典型工作

  • Lifelong-MoE
  • 扩展expert和gating network的维度
  • 冻结旧的expert和gating network维度
  • 使用正则克服遗忘灾难

Pangu-sigma

Random Routed Experts:

  • 第一层,根据任务分配给不同的专家组(多个expert构成一个专家组,供一个task/domain使用)
  • 第二层,使用组内随机Gating,让专家组的expert可以负载均衡。

这样可以保证某个领域对应的expert可以直接被抽取出来作为单个模型使用。

Mixtral 8x7b Demo

Mistral-MindSpore: https://github.com/lvyufeng/mistral-mindspore

Mindformer(MoE预训练):https://gitee.com/mindspore/mindformers/

点击关注,第一时间了解华为云新鲜技术~

相关推荐
angleboy820 小时前
【LLM Agents体验 1】Dify框架的安装指南
人工智能·语言模型·大模型·nlp
AI_小站21 小时前
LLM——10个大型语言模型(LLM)常见面试题以及答案解析
人工智能·程序人生·语言模型·自然语言处理·大模型·llm·大模型面试
GPUStack1 天前
制作并量化GGUF模型上传到HuggingFace和ModelScope
大模型·huggingface·modelscope·genai·gguf
AI_小站2 天前
多模态大模型微调实践!PAI+LLaMA Factory搭建AI导游
人工智能·程序人生·语言模型·大模型·llm·产品经理·多模态大模型
小嗷犬2 天前
【论文笔记】Dense Connector for MLLMs
论文阅读·人工智能·语言模型·大模型·多模态
AI_小站2 天前
【AI工作流】FastGPT - 深入解析FastGPT工作流编排:从基础到高级应用的全面指南
人工智能·程序人生·语言模型·大模型·llm·fastgpt·大模型应用
微学AI3 天前
关于基于AGI和大模型技术下养老服务高质量发展解决方案项目,以及实现代码过程实战
人工智能·python·大模型·agi
黑客-雨3 天前
AI时代的产品经理修炼手册:《人工智能产品经理》
人工智能·学习·大模型·产品经理·大模型学习·大模型入门·大模型教程
发菜君4 天前
2024年大厂AI大模型面试题精选与答案解析
人工智能·学习·大模型·产品经理·大模型学习·大模型入门·大模型教程
大数据AI人工智能培训专家培训讲师叶梓4 天前
自适应对话式团队构建,提升语言模型代理的复杂任务解决能力
人工智能·语言模型·自然语言处理·chatgpt·大模型·agent·智能体