一个用于分布式DNN训练加速的通用通信调度器
论文:https://i.cs.hku.hk/~cwu/papers/yhpeng-sosp19.pdf
译文:一个用于分布式DNN训练加速的通用通信调度器
摘要
我们提出ByteScheduler,一个用于分布式DNN训练加速的通用通信调度器。ByteScheduler基于我们最基本的分析:通过张量切分和重组来进行传输,可以得到理论上的最优结果,即使真实环境中有调度代价,性能表现也很不错。为了让ByteScheduler适用于各种DNN训练框架,我们介绍一种统一的抽象和一种依赖代理机制,使得可以在不破坏框架引擎原有依赖的基础上进行通信调度(注:这是什么东西?)。我们进一步介绍一种贝叶斯优化方法,可以在各种网络环境下,针对不同训练模型,来自动调整张量划分的尺寸,以及其他参数。ByteScheduler目前支持TensorFlow、PyTorch和MXNet,并且不用修改源码,兼容Parameter Server和all-reduce架构的梯度同步,TCP和RDMA网络都行。我们的实验证明,ByteScheduler训练的加速比是2.96。
介绍
深度神经网络(DNN)被广泛运用于各个领域,例如计算机视觉和自然语言处理等等。但是,训练DNN很耗时,主要是因为训练数据多,以及DNN模型的尺寸越来越大。加速DNN训练最常用的方法是数据并行。不幸的是,因为通信开销,它的性能常常比线性加速比差很远。作为一个大型在线服务提供商,在很多我们内部和公开训练任务中,通信通常占总训练时间的很大一部分。因此,很多通信加速方法被提出并且集成到
背景和动机
DNN训练和数据并行:
在深度学习中,DNN模型是通过迭代一个大数据集来训练的(也叫epoch),以最小化损失函数。
正向和反向传播:
在每个epoch期间,数据集被划分成mini-batch。在每次iteration,一个mini-batch逐层经过DNN并产生一个损失,这个过程叫正向传播(FP)。
张量划分:
实现细节
ByteScheduler是用C++11和Python实现的。核心是一个通用Python库,用于所有ML框架。对于每个框架,都需要一个插件,用于PS或者all-reduce架构。插件通常用C++和Python混编。
ByteScheduler Core:
MXNet plugin:
PyTorch plugin:
TensorFlow plugin:
评估
讨论和未来方向
相关工作
加速DNN训练的通信:
加速DNN训练的通信:
加速DNN训练的通信:
结论
ByteScheduler是一个用于分布式DNN训练加速的通用通信调度器。我们的实现,支持很多ML框架,包括MXNet、PyTorch和TensorFlow,兼容PS和all-reduce梯度同步,TCP和RDMA网络都行。ByteScheduler端到端可以加速196%。主要的设计思想包括:通信操作的统一抽象、依赖代理和系统参数自动调整。我们已经开源我们的实现,期待社区可以加入更多对已有和未来框架的支持。
转载于:https://www.cnblogs.com/yangwenhuan/p/11599258.html
一个用于分布式DNN训练加速的通用通信调度器相关推荐
- Hyperledger Grid:一个用于分布式供应链解决方案的框架
Hyperledger在最近的一篇博文中发布了一个名为Hyperledger Grid的新项目.Grid是一个用于集成分布式账本技术(DLT)解决方案与供应链行业企业业务系统的框架.该项目提供了一个参 ...
- 一个IO的传奇一生 (9) -- Noop和Deadline调度器
Linux中常见IO调度器 Noop调度器算法 Noop是Linux中最简单的调度器,这个调度器基本上没做什么特殊的事情,就是把邻近bio进行了合并处理.从IO的QoS角度来看,这个Noop调度器就是 ...
- 7种主流案例,告诉你调度器架构设计通用法则(干货!)
女主宣言 今天小编为大家转载一篇来自DBAplus社群的干货文章,希望能够帮助大家对关于调度器的理解.作者张晨,Strikingly数据平台工程师,算法.分布式系统和函数式编程爱好者.Shanghai ...
- sweetalert_用于将SweetAlert集成到Vuejs的小包装器
sweetalert VueSwal (VueSwal) A small wrapper for integrating SweetAlert to Vuejs. (Compatible with S ...
- 混合精度训练、分布式训练等训练加速方法
以Pytorch为例 混合精度训练 Pytorch自动混合精度(AMP)训练 Pytorch自动混合精度(AMP)介绍与使用 1. 理论基础 pytorch从1.6版本开始,已经内置了torch.cu ...
- PolarFS :一个用于共享存储云数据库的超低延迟和容错分布式文件系统
目录 1. 简介 2. 背景 3. 架构 4. I/O 执行模型 5. 一致性模型 6. FS中层的实现 7. 设计选择和经验教训 8. 价值评估 9. 相关工作 10. 结论 PolarFS : A ...
- 【论文翻译】SHINE 一个用于特定领域实体与异构信息网络链接的通用框架
SHINE 一个用于特定领域实体与异构信息网络链接的通用框架 摘要 由多种类型的互联对象组成的异构信息网络正变得越来越流行,例如社交媒体网络和书目网络.在异构信息网络中,将从非结构化文本中检测到的命名 ...
- Google用更少标签生成图像,还提出一个用于训练评估GAN的库
参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 译者 | 刘畅 责编 | 琥珀 出品 | AI科技大本营(ID:rgznai100) 生成对抗网络(GAN)是属于一种强有力的深度生成模型.G ...
- 【11分钟训练完ImageNet】DNN训练再破纪录,1024 CPU Caffe开源
此前,伯克利.TACC和UC戴维斯的研究人员使用新算法,在24分钟内训练完AlexNet,1小时训练完ResNet,创下了纪录.现在,他们继续推进,使用1024个CPU,在11分钟内训练完AlexNe ...
- 收藏 | PyTorch深度学习模型训练加速指南2021
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:LORENZ KUHN 编译:ronghuaiyang ...
最新文章
- 劣质代码评析——《写给大家看的C语言书(第2版)》附录B之21点程序(一)
- AI 一分钟 | 南京大学成立人工智能研究院;三星关联实体已收购 AI 搜索引擎创业公司Kngine的全部股份
- STM32-内存管理
- Javascript OrderBy
- IM群聊消息如此复杂,如何保证不丢不重?
- 7360清零方法_兄弟、联想、美能达、富士施乐全系列打印机加粉清零方法
- jenkins 集成java搅拌_java-Jenkins中的集成测试
- 华为谈“不造车” ,每辆车上赚1万元。王兴:特斯拉终于遇到真正的对手!...
- boot入门思想 spring_微服务架构之SpringBoot详解,夯实底层知识,带你轻松入门开发...
- Linux无盘工作站
- 再战图形,一图一世界
- 大学计算机基础通俗易懂教材,大学计算机基础(21世纪高等学校计算机规划教材)...
- 第18集丨不立志,天下无可成之事
- 蜡笔小新模拟器汉化版_蜡笔小新历险记PC电脑版-蜡笔小新历险记电脑版下载v1.12.20 官方最新版-西西软件下载...
- PIXI 精灵表和精灵动画
- 利用Matplotlib绘制各类图表
- 网易人工智能事业部:“悄无声息”再捞金!
- 儿童护眼灯怎么选?国家质检合格的儿童护眼灯
- 如何运用python画名字_[原创]如何使用Python在好友画我上画一个标准的汉字震惊朋友圈...
- 07 图形学——曲线曲面
热门文章
- mysql 清除主从_mysql主从同步及清除信息
- android listview 行高度自适应,Android ListView 长度自适应item的内容 计算listview的高度...
- 数据库的开窗函数学习
- vue项目实战环境的搭建 -- 项目创建及连接github(gitee同理)
- 算数基本定理 + 例题
- pve网卡直通虚拟机pve失联打不开解决方案,不用重新安装pve
- 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_5 自定义类型转换器演示异常
- python2.7.11 for iOS 苹果上的python27环境
- 总结(6)--- python基础知识点小结(细全)
- radio按钮样式美化和checkbox按钮样式美化