首页 > 其他分享 >LLM训练5-MoE并行

LLM训练5-MoE并行

时间:2024-07-18 22:07:06浏览次数:11  
标签:expert 并行 网络 token 溢出 LLM 1st logits MoE

前置知识

MOE(MixerOfExpert)

image-20240718194134029

moe的主要原理是替换attention层后的MLP层, 通过将不同类型的token按照门控单元计算出的概率分配给最大概率处理的专家网络处理, 对比单一MLP更适合处理复杂多样化的数据集. 主要思想和集成学习感觉很像, 而且扩展性(遇到新的目标任务可以新增专家网络)和可解释性(每个专家分开调整)都比较强. MOE前向步骤(以最简单的top2 Expert为例):

  1. 门控网络, 输入是attention的输出, dim为(batch_size, tokens, emb_size), 输出dim为(batch_size, tokens, experts_num)
topkgate_linear = nn.Linear(n_embed, num_experts) # 从emb_size->专家个数的映射, 根据这个线性层计算每个token进入各个专家网络的概率
logits = topkgate_linear(mh_output)
top_k_logits, top_k_indices = logits.topk(top_k, dim=-1)  # 从4个专家网络里取top2,
zeros = torch.full_like(logits, float('-inf'))
sparse_logits = zeros.scatter(-1, top_k_indices, top_k_logits) #把除了top2剩余的位置置-inf
gating_output= F.softmax(sparse_logits, dim=-1)   #softmax计算进入各个专家网络的概率
  1. 稀疏化Experts

这部分每个expert的网络结构都可以根据场景设计的不一样, 因为在fp/bp计算的时候, 每个token都是只进入了topk的网络进行计算, 剩余的网络没有计算. 大部分的参数都没参与更新, 所以也被称为稀疏化的dense. 因为这个特性也给moe网络的并行化改造提供了基础.

expert负载不均匀问题

因为expert的概率纯粹是训练出来的参数决定的, 没法用LALB类似的负载均衡策略强制使每个expert接收到的token是均匀的, 极有可能出现某几个expert接收到了很多, 其他的基本没啥token的问题..主要有以下这么几个解决办法:

TokenBuffer: 给每个expert设置固定容量, 容量设置公式如下, 当这个expert收满token后就不再接受token

\[

标签:expert,并行,网络,token,溢出,LLM,1st,logits,MoE
From: https://www.cnblogs.com/sunstrikes/p/18310517

相关文章

  • LLM Attack | 对抗攻击
    总览:“这次我们从一道题目入手体会对抗学习以及Decoder生成过程的细节”题目链接:https://github.com/USTC-Hackergame/hackergame2023-writeups/tree/master/official/......
  • 大型语言模型的 MOE 和 MOA
    AI生成   欢迎来到雲闪世界。大型语言模型(LLM)无疑席卷了科技行业。它们的迅速崛起得益于来自维基百科、网页、书籍、大量研究论文以及我们喜爱的社交媒体平台的用户内容的大量数据。数据和计算密集型模型一直在狂热地整合来自音频和视频......
  • Datawhale AI 夏令营——CPU部署大模型(LLM天池挑战赛)——Task2与3学习笔记
        Task2的任务是组队+寻找灵感,这里不作阐述;Task3的任务是实现RAG应用,阅读文档并观看卢哥的直播后,结合个人经验做个分享。    运行大语言模型,对LLM使用的加深,我们发现,在使用过程中,大模型会有很多幻觉出现。为了解决幻觉,科研人员提出了各种各样的方案......
  • LLM大模型新手训练指南
    基础用于语言建模的最常见架构是Transformer架构,由Vaswani等人在著名论文《AttentionIsAllYouNeed》中提出。我们不会在这里讨论该架构的具体细节,因为我们必须讨论导致并促成其创建的所有旧技术。Transformer使我们能够训练具有惊人推理能力的大型语言模型(LLM......
  • 【LLM大模型】《开源大模型食用指南》全网发布,轻松助你速通llm大模型!
    前言《开源大模型食用指南》是一个围绕开源大模型、针对国内初学者、基于AutoDL平台的中国宝宝专属大模型教程,针对各类开源大模型提供包括环境配置、本地部署、高效微调等技能在内的全流程指导,简化开源大模型的部署、使用和应用流程,让更多的普通学生、研究者更好地使用......
  • 探索混合专家(MoE)模型预训练:开源项目实操
    探索混合专家(MoE)模型预训练:开源项目实操Mantaverse 来自知乎​目录收起MOE模型是什么实现Moe模型实现步骤拆解1.初始化和形状调整2.计算路由器的logits3.初始化和创建专家掩码4.循环计算专家层输出5.恢复形状并返回结果预训练效果对比DeepseekMoE结语......
  • 提升PHP并行处理效率:深入解析数组排序算法及优化策略
    本文由ChatMoney团队出品在PHP开发中,数组排序是一个常见的操作。随着互联网技术的不断发展,对数据处理速度和效率的要求越来越高,如何在保证排序质量的同时提高处理速度成为了一个值得探讨的问题。本文将分析PHP数组排序算法对并行处理的影响,并提供一些优化建议。一、PHP......
  • PHP 数组排序算法对并行处理的影响
    本文由ChatMoney团队出品在PHP开发中,数组排序是一个常见的操作。随着互联网技术的不断发展,对数据处理速度和效率的要求越来越高,如何在保证排序质量的同时提高处理速度成为了一个值得探讨的问题。本文将分析PHP数组排序算法对并行处理的影响,并提供一些优化建议。一、PHP......
  • 大语言模型(Large Language Models, LLMs)是否需要进行数据校正
    大语言模型(LargeLanguageModels,LLMs),如GPT-3,并不总是免于数据校正的过程。实际上,即使是这些大语言模型,在数据预处理中也会涉及到一定的处理和调整。以下是为什么大语言模型在某些情况下不需要明显的批效应校正,同时在某些情况下仍然需要数据校正的原因:为什么大语言模型不需要显......
  • 知识图谱与LLMs:实时图分析(通过其关系的上下文理解数据点)
    大型语言模型(LLM)极大地改变了普通人获取数据的方式。不到一年前,访问公司数据需要具备技术技能,包括熟练掌握各种仪表板工具,甚至深入研究数据库查询语言的复杂性。然而,随着ChatGPT等LLM的兴起,随着所谓的检索增强型LLM应用程序的兴起,隐藏在私人数据库中或可通过各种AP......