DeepSpeed-MoE:训练更大及更复杂的混合专家网络

news2024/9/25 3:23:45

这是微软发布在2022 ICML的论文,MoE可以降低训练成本,但是快速的MoE模型推理仍然是一个未解决的问题。所以论文提出了一个端到端的MoE训练和推理解决方案DeepSpeed-MoE:它包括新颖的MoE架构设计和模型压缩技术,可将MoE模型大小减少3.7倍;通过高度优化的推理系统,减少了7.3倍的延迟和成本;与同等质量的密集模型相比,推理速度提高4.5倍,成本降低9倍。

MoE

MoE架构使用了类似GPT-3的NLG模型。包括350M/1.3B/6.7B(24/24/32层,1024/2048/4096隐藏尺寸,16/16/32注意头)。例如:“350M+MoE-128”是指以350M密集模型为基础模型,128位专家组成的MoE模型。

训练使用了128个A100 gpu。令牌数量为300B。

下图显示了MoE模型的验证损失明显优于其密集对应部分(例如,1.3B+MoE-128 vs 1.3B dense)。

并且MoE模型与基数大4 - 5倍的dense模型的验证损失相当(例如,1.3B+MoE-128 vs . 6.7B dense)。

在零样本评估方面,模型质量也不相上下:1.3 b +MoE-128模型所需的训练计算量与13 b密集模型大致相同,但模型质量要好得多。1.3 b +MoE-128模型可以用13B密集模型的训练成本达到6.7B密集模型的模型质量,而训练计算量减少5倍。

Proposed Pyramid-Residual-MoE (PR-MoE)

1、所有的层都学习相同的表示吗?

这个问题在计算机视觉(CV)中已经有了很好的研究:浅层(接近输入)学习一般表示,深层(接近输出)学习更客观的特定表示。

论文研究了两种不同的Half-MoE结构。

First-Half-MoE:MoE层在模型的前半层

Second-Half-MoE:MoE层在模型的后半层

结果可以看到,“Second-Half”的表现好。这也可以证明并非所有的MoE层都学习相同级别的表示。更深层的人从大量的专家中获益更多:或者说浅层的一般表示都是通用的。

2、是否有一种方法可以在获得泛化性能增益的同时保持训练/推理效率?

为了提高MoE模型的泛化性能,通常有两种方法:(1)增加专家数量,增加内存;(2)采用Top-2专家选择,这样计算量会多33%。

论文对比了两种moe

1、Top2-MoE使用Top2专家将参数提高一倍,2、Residual-MoE固定一个专家,然后并在不同的专家之间改变第二个专家,也就是说将来自MoE模块的专家视为误差校正项(或者叫一个主要专家,一个辅助专家)。

这两种模型的泛化性能相当。但是因为计算方式不同,Residual-MoE比Top2-MoE快10%以上。

3、PR-MoE

根据上面的研究结果,论文的新体系结构在最后几层使用了更多的专家。并且使用Residual-MoE架构,每个令牌分别传递一个固定的MLP模块和一个选定的专家。

PR-MoE使用更少的参数,但达到与标准moe模型相当的精度。

Proposed Mixture-of-Student (MoS)

对于损失函数,使用KD损失的一般公式来迫使学生模型模仿教师的输出:

损失函数测量预测与给定硬标签之间的交叉熵损失的加权和,以及预测与教师软标签之间的KL散度损失。

左图显示虽然KD损失最初提高了验证的准确性,但它在训练结束时开始损害准确性。由于PR-MoE与标准MoE相比已经降低了容量,这回导致学生模型进入欠拟合状态。

所以作者建议在训练过程中逐渐减弱KD的影响或尽早停止KD。

右图在400K步停止KD后,学生模型现在具有与教师相似的验证曲线。也就是说,在训练的后期可以不需要再让学生模型模仿教师模型,而是直接让学生模型自学。

如上上图(表格)所示,通过分段KD的MoS平均准确率为42.87和47.96,尽管层数减少了12.5%,但仍保持了350M(43.08)和13b教师模型(48.37)的99.5%和99.1%的性能。

DeepSpeed-MoE

DeepSpeed主要只在MT-NLG 530B等Transformer上进行研究,之前没有在MoE上进行研究。而MoE推理性能取决于两个主要因素:总体模型大小和总体可实现的内存带宽。

1、数据并行

张量切片(用于非专家参数),专家切片(用于专家参数)是将单个参数拆分到多个gpu上,可以充分利用gpu上的内存带宽。

为了将非专家计算扩展到相同数量的gpu,可以在没有通信开销的情况下使用数据并行。

2、将能分层的都进行分层

与all-reduce、broadcast等通信集合一起使用,可以将通信跳数从O§减少到O(G + p/G),其中G为节点中GPU的数量,p为GPU设备的总数,也就是说,GPU越多,减少的效果越明显

上图显示了该实现的设计概述。尽管通信量增加了2倍,但这种分层可以实现对小批量进行更好的扩展。

3、 并行通信和内核优化

这两部分比较深奥,并且更加专业,所以我这里只简单说明

由于张量并行度中的每个GPU都包含相同的数据,因此可以将所有对所有的通信限制在具有相同张量并行度等级的GPU之间。

将门控函数融合到单个内核中,并使用密集的令牌到专家映射表来表示令牌到专家的分配,大大降低了内核的启动开销。

这两部分如果是对这方面进行深入研究的建议阅读原文。

结果

随着gpu数量的增加,DeepSpeed-MoE和PyTorch都减少了推理延迟,但PyTorch比DeepSpeed-MoE慢得多。

DeepSpeed-MoE实现了7.3倍的延迟减少,同时实现了高达7.3倍的高吞吐量。

DeepSpeed-MoE可以减少执行推理所需的gpu的最小数量,并且可以进一步提高延迟和吞吐量。

一个520亿参数的DeepSpeed-MoE模型(1.3 b - moe -128)相当于一个67亿参数的密集模型。

一个1.5万亿参数的MoE模型相当于一个1750亿参数的密集模型。

总结

最后我们来总结一下论文的要点:

DeepSpeed是一个用于训练大规模神经网络的系统,可以实现模型并行训练。Mixture of Experts(MoE)是一种模型架构,可以将一个大模型拆分成多个专家(expert)子模型,在训练和预测时对输入采样分发给不同的专家模型。

DeepSpeed+MoE的组合利用了两者的优势:

  • DeepSpeed实现了高效的模型并行,可以训练数十亿参数的模型。将模型切分到不同的GPU上进行并行训练。
  • MoE通过将模型拆分成更小的专家子模型,减少了每个子模型的复杂度,降低了训练时间。并可以动态调整不同样本到不同专家的分配,提高模型效果。
  • 结合两者,可以训练超大规模的MoE模型,如Switch-Transformer, котор包含1.6万亿参数。DeepSpeed处理并行训练,MoE将模型拆分成多个专家。

主要创新:

  • 深度优化MoE在并行训练中的通信,减少通信开销。并行效率很高。
  • 提出了基于微调的专家排序机制,可以根据训练过程中专家的损失动态调整输入样本到专家的分配,提升效果。
  • 支持各种稀疏训练技术,如3D 模型并行,减少内存需求并加速训练。

总体而言,DeepSpeed+MoE可以有效训练数万亿参数规模的模型,并展现出良好的scalability。这为训练更大及更复杂的神经网络模型提供了可能。

https://avoid.overfit.cn/post/745c466e10d3494faa54b21191fa762c

作者:Sik-Ho Tsang

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/798145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基础篇

前言:此篇博客笔者参考了JavaGuide、三分恶等博主的八股文,结合Chat老师和自己的理解,整理了一篇关于Java基础的八股文。全篇图文并茂,每个知识点都有细致描述,详略得当,理解通透。希望对各位读者有所帮助&…

Python(四十二)流程控制语句——continue

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

reids集群删除某个集群节点

由于服务期调整,已经配好的集群,要删除几个节点,利用命令redis-cli --cluster del-node ip:prot 结果删除失败了,报错: ERR Unknown subcommand or wrong number of arguments for del-node。help查了下,没…

【数据结构】实验二:顺序表

实验二 顺序表 一、实验目的与要求 1)熟悉顺序表的类型定义; 2)熟悉顺序表的基本操作; 3)灵活应用顺序表解决具体应用问题。 二、实验内容 1)在一个整数序列a1,a2,…,an中,若存在一个数&…

调用post请求方式的feign接口怎么传递多个参数,包含对象和字符串

今天尝试把自己原来的项目上的权限管理相关的类抽离开来,并建立一个统一的权限管理平台,然后项目中要用到的权限相关资源通过feigin请求权限平台的对应接口获取。 现在有一个需求,页面上有一个一键获取资源权限的按钮,点击一下&a…

python_PyQt5开发验证K线视觉想法工具V1.0

目录 写在前面: 使用过程: 代码: 导入的包、字符型横坐标、K线控件 K线图控件 放置标记数据表格控件 输入并设置标记数据控件 主界面 运行代码 写在前面: 开发这个工具的初衷,是基于在分析股票实践中想批量计算…

Django实现音乐网站 ⑴

使用Python Django框架制作一个音乐网站。 目录 网站功能模块 安装django 创建项目 创建应用 注册应用 配置数据库 设置数据库配置 设置pymysql库引用 创建数据库 创建数据表 生成表迁移文件 执行表迁移 后台管理 创建管理员账户 启动服务器 登录网站 配置时区…

神码ai火车头伪原创设置【php源码】

大家好,给大家分享一下python考什么内容,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 火车头采集ai伪原创插件截图: 1、Python 计算机二级都考什么 Python要到什么程度 考试内容 一、Python语言的基本语法元素…

高算力AI模组前沿应用:基于ARM架构的SoC阵列式服务器

本期我们带来高算力AI模组前沿应用,基于ARM架构的SoC阵列式服务器相关内容。澎湃算力、创新架构、异构计算,有望成为未来信息化社会的智能算力底座。 ▌性能优势AI驱动,ARM架构服务器加速渗透 一直以来,基于ARM架构的各类处理器…

Tooltip文字提示(antd-design组件库)简单使用

1.Tooltip文字提示 简单的文字提示气泡框。 2.何时使用 鼠标移入则显示提示,移出消失,气泡浮层不承载复杂文本和操作。 可用来代替系统默认的 title 提示,提供一个 按钮/文字/操作 的文案解释。 组件代码来自: 文字提示 Tooltip -…

读写分离案例、Mysql主从复制 步骤

在开发大型应用程序时,数据库的性能通常是一个关键问题。读写分离是一种常见的数据库优化技术,可以显著提升数据库的读取操作性能。本文将介绍MySQL主从复制和一个读写分离案例。 1、MySQL主从复制 主从复制是MySQL数据库提供的一种数据复制机制&#…

免费商城搭建、免费小程序商城搭建、之java商城 电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

【黑马头条之内容安全第三方接口】

本笔记内容为黑马头条项目的文本-图片内容审核接口部分 目录 一、概述 二、准备工作 三、文本内容审核接口 四、图片审核接口 五、项目集成 一、概述 内容安全是识别服务,支持对图片、视频、文本、语音等对象进行多样化场景检测,有效降低内容违规风…

vue+ivew model框 select校验遇到的问题

iview model 点击关闭&#xff0c;校验没有通过也会关闭 解决办法&#xff1a; 第一步&#xff1a;自定义页脚内容 <div slot"footer"><Button type"primary" click"confirmCarryOver()">确认</Button><Button click&qu…

python绘制3D条形图

文章目录 数据导入三维条形图bar3d 数据导入 尽管在matplotlib支持在一个坐标系中绘制多组条形图&#xff0c;效果如下 其中&#xff0c;蓝色表示中国&#xff0c;橘色表示美国&#xff0c;绿色表示欧盟。从这个图就可以非常直观地看出&#xff0c;三者自2018到2022年的GDP变化…

智能制造:开启工业新纪元

随着科技的不断发展和人工智能的日益成熟&#xff0c;智能制造正成为当今工业界的热门话题。智能制造是一种以先进技术为支撑&#xff0c;通过数字化、网络化、智能化手段来提升生产效率、优化生产流程的现代化制造模式。 在智能制造中&#xff0c;物联网、大数据、云计算、人工…

OR-Tools工具安装(Python-Vs code)-自用

安装&#xff08;已安装python以及Vs code&#xff09; pip安装 python -m pip install --user ortools安装完成示意如下&#xff1a; 验证安装 python -c "import ortools; print(ortools.__version__)"输出结果为版本号

【Spring框架】@Resource注入以及与@Autowired的区别

目录 使用Resource设置name的方式来重命名注入的对象区别 使用Resource设置name的方式来重命名注入的对象 package com;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.spr…

Ansible自动化运维工具

Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。 Ansible能批量配置、部署、管理上千台主机。比如以前需要…

解读维达国际2023半年度财报:后续发力“高端、高利润、高质量”

随着国内直播电商市场的迅速发展&#xff0c;对于希望在国内市场取得成功的品牌来说&#xff0c;直播电商已经成为所有大众消费品牌的竞争关键。 以生活用纸品牌维达为例&#xff0c;截至2023年7月25日&#xff0c;据抖音平台直播动态显示&#xff0c;维达官方旗舰店今年上半年…