AWS上实现超大规模模型训练的近线性扩展
AWS上实现超大规模模型训练的近线性扩展
当前最先进的语言模型具有数十亿参数。要在可控时间内训练这些模型,需要将工作负载分配到大型计算集群上。理想情况下,训练时间应随着集群规模扩大而线性减少。但由于节点间协调工作所需的通信会抵消并行化带来的收益,实现线性扩展非常困难。
我们近期优化了微软DeepSpeed分布式训练库的通信效率,在最多64个GPU上显著提升了性能。但当规模从数十个GPU扩展到数百个GPU时,在公有云环境中通信开销再次成为效率瓶颈。
在即将于2023年VLDB会议上发表的论文中,我们提出了一种名为MiCS(最小化通信规模)的方法,可在云环境中实现数百个GPU的高效模型训练。与DeepSpeed和FairScale等现有框架将模型状态划分到所有GPU不同,MiCS会创建模型状态的多个副本,并将每个副本划分到GPU子集中。
实验结果显示,在不同规模的BERT模型上,使用p3dn.24xlarge实例集群评估时,MiCS在吞吐量和扩展效率方面都有显著提升。该方法能实现近线性扩展(如下图矩形框所示),相比DeepSpeed-v0.5.6内置的ZeRO优化器,吞吐量最高提升2.82倍。
规模感知的模型分区
MiCS将集群中的GPU划分为多个"分区组",每个组持有完整的模型状态副本。这种方法将频繁的通信操作(如参数收集)限制在固定数量的GPU内,有效控制了通信开销随集群规模增长的问题。
分层通信策略
当单个模型状态副本的内存需求超过单节点GPU总内存时,MiCS采用分层通信策略减少节点间通信参与者的数量。例如在双节点四GPU场景下,通信量因子从3/4降至1/2。
两跳梯度同步
MiCS通过将梯度同步开销分摊到多个微步中,实现了高效的两跳梯度同步机制。这使得在p4de.24xlarge机器上训练1750亿参数模型时,每个GPU能达到169万亿次浮点运算(理论峰值的54.2%)。
当集群规模从128GPU扩展到512GPU时,MiCS实现了99.4%的弱扩展效率,而DeepSpeed ZeRO第三阶段仅达到72%。我们正在将MiCS开源,相信它将大幅降低在Amazon EC2平台上训练大模型的时间和成本。
致谢:Yida Wang, Justin Chiu, Roshan Makhijani, RJ, Stephen Rawls, Xin Jin
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

AWS上实现超大规模模型训练的近线性扩展的更多相关文章
- ML.NET 示例:图像分类模型训练-首选API(基于原生TensorFlow迁移学习)
ML.NET 版本 API 类型 状态 应用程序类型 数据类型 场景 机器学习任务 算法 Microsoft.ML 1.5.0 动态API 最新 控制台应用程序和Web应用程序 图片文件 图像分类 基 ...
- tflearn kears GAN官方demo代码——本质上GAN是先训练判别模型让你能够识别噪声,然后生成模型基于噪声生成数据,目标是让判别模型出错。GAN的过程就是训练这个生成模型参数!!!
GAN:通过 将 样本 特征 化 以后, 告诉 模型 哪些 样本 是 黑 哪些 是 白, 模型 通过 训练 后, 理解 了 黑白 样本 的 区别, 再输入 测试 样本 时, 模型 就可以 根据 以往 ...
- 如何对SAP Leonardo上的机器学习模型进行重新训练
Jerry之前的两篇文章介绍了如何通过Restful API的方式,消费SAP Leonardo上预先训练好的机器学习模型: 如何在Web应用里消费SAP Leonardo的机器学习API 部署在SA ...
- 阿里巴巴稀疏模型训练引擎-DeepRec
导读:DeepRec从2016年起深耕至今,支持了淘宝搜索.推荐.广告等核心业务,沉淀了大量优化的算子.图优化.Runtime优化.编译优化以及高性能分布式训练框架,在稀疏模型的训练方面有着优异性能的 ...
- 如何借助分布式存储 JuiceFS 加速 AI 模型训练
传统的机器学习模型,数据集比较小,模型的算法也比较简单,使用单机存储,或者本地硬盘就足够了,像 JuiceFS 这样的分布式存储并不是必需品. 随着近几年深度学习的蓬勃发展,越来越多的团队开始遇到了单 ...
- [Kaggle] dogs-vs-cats之模型训练
上一步建立好模型之后,现在就可以训练模型了. 主要代码如下: import sys #将当期路径加入系统path中 sys.path.append("E:\\CODE\\Anaconda\\ ...
- AI佳作解读系列(一)——深度学习模型训练痛点及解决方法
1 模型训练基本步骤 进入了AI领域,学习了手写字识别等几个demo后,就会发现深度学习模型训练是十分关键和有挑战性的.选定了网络结构后,深度学习训练过程基本大同小异,一般分为如下几个步骤 定义算法公 ...
- 机器学习使用sklearn进行模型训练、预测和评价
cross_val_score(model_name, x_samples, y_labels, cv=k) 作用:验证某个模型在某个训练集上的稳定性,输出k个预测精度. K折交叉验证(k-fold) ...
- 谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)
本文转自:http://mp.weixin.qq.com/s/Xe3g2OSkE3BpIC2wdt5J-A 谷歌大规模机器学习:模型训练.特征工程和算法选择 (32PPT下载) 2017-01-26 ...
- 人脸检测及识别python实现系列(3)——为模型训练准备人脸数据
人脸检测及识别python实现系列(3)——为模型训练准备人脸数据 机器学习最本质的地方就是基于海量数据统计的学习,说白了,机器学习其实就是在模拟人类儿童的学习行为.举一个简单的例子,成年人并没有主动 ...
随机推荐
- Github如何创建添加开源许可license
我们点击项目上方的 Add file,选择 creat new file 名称填写 LICENSE, 右侧便会出现按钮 Choose a license template 选择你要的证书,填写 年份 ...
- 金融科技应用:基于XGBoost与SHAP的信用评分模型构建全流程解析
引言 在传统金融体系中,信用评估高度依赖央行征信数据,但全球仍有约20亿人口处于"信用隐形"状态.随着金融科技发展,通过整合社交数据.消费行为等替代数据源构建智能信用评估系统,已成 ...
- Spring Boot 整合 ActiveMQ 实现手动确认和重发消息
消息队列中间件是分布式系统中重要的组件,已经逐渐成为企业系统内部通信的核心手段.主要功能包括松耦合.异步消息.流量削锋.可靠投递.广播.流量控制.最终一致性等.实现高性能,高可用,可伸缩和最终一致性架 ...
- 导航栏激活态下划线效果的CSS实现
一.鼠标移入效果图如下: 二.div结构 <div class="navbar"> <ul> <li>首页</li> </ul ...
- Shell常用指令操作
sed命令 替换目录下所有文件的某个字符串 sed -i 's/test/yuhaohao/g' `grep -lr yuhaohao *` export 函数到外部使用 functon test() ...
- FastAPI权限配置:你的系统真的安全吗?
url: /posts/96b6ede65030daa4613ab92da1d739a6/ title: FastAPI权限配置:你的系统真的安全吗? date: 2025-06-26T07:35:3 ...
- Kong入门学习实践(6)HTTPS与TCP流代理
最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看.由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版. 本篇,我们学习快速配置 ...
- C# WinForm NumericUpDown 控件全选其中文字 (Numeric 全选文本) 全选文本Numeric
num_length.Focus(); UpDownBase updbText = (UpDownBase)num_length; ...
- C# 调用 WebServices Api接口 WSDL 通过WebResponse 请求
https://www.cnblogs.com/Sheldon180621/p/14498646.html 方法一.引用*.wsdl文件 WebService服务端会提供wsdl文件,客户端通过该文件 ...
- Power BI: 设置切片器只能影响到指定的图表
如下所示: 表一和表二的数据都来源于Staff表,切片器也来源于Staff表,但是希望当切片器的值发生变化时,只会影响到表二,表一永远显示所有的数据,不受切片器的影响. 做法如下: 选中切片器,菜单栏 ...