巴蜀网

 找回密码
 免费注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

开启左侧
查看: 30|回复: 0
 上官123 发表于: 2018-1-31 16:35:00|显示全部楼层|阅读模式

[纪实·新闻] IBM高级研发工程师武维:如何分布式训练深度学习模型?| 分享总结

 [复制链接]
源自:雷锋
  雷锋网AI研习社按:随着深度学习神经网络规模越来越大,训练一个深度神经网络(Deep Neural Networks,DNNs)往往需要几天甚至几周的时间。为了加快学习速度,经常需要分布式的 CPU/GPU 集群来完成整个训练。本文就就来为大家简单简单介绍一下如何进行分布式训练深度学习模型。
  在近期雷锋网 AI 研习社的线上公开课上,来自 IBM 系统部研发工程师武维博士为大家做了一期主题为「深度学习中的分布式训练」的在线分享,错过了直播的同学们如果看了本文有疑惑之处还可以到雷锋网(公众号:雷锋网)AI 慕课学院观看视频回放。
  以下是雷锋网对视频直播内容做的简要回顾:
  武维,IBM 系统部研发工程师,曾就职于华为大数据产品部及 IBM 中国研究院,担任系统工程师/研究员;西安交通大学系统工程博士,目前主要研发方向为深度学习中的分布式训练框架与模型。
  分享提纲:
  为什么要分布式训练深度学习模型及分布式TensorFlow架构。
  TensorFlow图内复制和图间复制。
  深度学习模型异步训练和同步训练。
  Case Study:如何把单机模型分布式化。
  分布式模型训练性能介绍。
  分享内容:
  大家好,我是武维,今天分享的第一部分介绍一下为什么要采用分布式训练以及分布式 TensorFlow 的架构,第二部分讲 TensorFlow 图内复制和图间复制,第三部分是关于分布式训练中的同步训练和异步训练的简要介绍。第四部分是关于如何把单机模型分布式化成分布式模型,第五部分是关于分布式训练的性能介绍。
  为什么要采用分布式训练呢,分布式训练主要处理什么问题,以及如何处理的?
  下图是关于TPU架构数据中心的图
j_Jk-fyqzcxi2301451.jpg
第一个原因,是增加训练的吞吐量;第二个原因是是针对大模型训练,大模型通常在一个设备中放不下。
  下面左图中的横坐标可以认为是 GPU 个数,纵坐标为处理图片的速度。
bpEW-fyqzcxi2301874.jpg
针对大模型怎么去训练?现在的办法是把模型拆解到不同的GPU卡里面,每个GPU卡里面训练一部分,这样就可以把一个大模型分布式训练起来。
krRv-fyqzcxi2302310.jpg
如何实现这个流程
2P72-fyqzcxi2302899.jpg
左边是TensorFlow的一个基本的运行流程。
fMae-fyqzcxi2303140.jpg
TensorFlow 的发展过程
FZ5N-fyqzcxi2303549.jpg
分布式TensorFlow架构,它的架构是基于Master 和 Slaver的架构。
yC8D-fyqzcxi2303989.jpg
以上是从master 和slaver 的角度讲深度学习分布式架构,下面从worker 的角度来看:
Hyq9-fyqzcxi2304296.jpg
深度学习首先要训练参数,在分布式里面会把参数存放在参数服务器,如果 worker 需要运算的话,首先从参数服务器读取参数到到 CPU 上。目前来说,大多数的深度学习训练都是在 GPU 设备上进行的,所以需要把读取的数据复制到 GPU 上,GPU 就可以从左往右开始运算。最后通过求导找到变量所对应的梯度,然后在将梯度复制到机器上所对应的的 CPU 上,CPU 再通过网络通信把他发送给参数服务器,这是从整个 worker 角度去看分布式架构。
qOnn-fyqzcxi2304681.jpg
TensorFlow 在分布式训练里面有两个比较重要的概念分别是「图内复制」和「图间复制」。分布式训练意味着有一个集群,先定义一个分布式集群。下面是图内复制,这种情况适合单机多卡。
opgN-fyqzcxi2304892.jpg
如果是多台计算机的时候,分发数据带来的数据瓶颈就会比较大,如果采用图内复制,数据传输会产生瓶颈。这个时候需要用图间复制,两个图可以中间共享变量,解决了训练数据分发的问题,这种方式适用于多机多卡训练。图间复制有多个客户端,图内复制只有一个客户端。
Id0T-fyqzcxi2305237.jpg
TensorFlow 封装了高级 API,会自动把参数部署到参数服务器上,把运算操作设定到 worker 上,这些就实现了一份代码可在多个 worker 上运行,简化了客户端程序的编写。
3wKf-fyqzcxi2305589.jpg
如何分布式寻找最优W?同步训练和异步训练有什么区别?
  随机梯度下降法:第一个式子数值求偏导,计算量太大,不实际。通常用微积分求导,解析解。
Qisq-fyqzcxi2306004.jpg
分布式随机梯度下降法
4kT3-fyqzcxi2306566.jpg
异步训练过程:异步训练为TensorFlow上每个节点上的任务为独立训练方式,不需要和其他节点在参数服务器上同步梯度。
VFt3-fyqzcxi2307163.jpg
同步训练过程:同步训练需要和其他节点在参数服务器上Reduce梯度。
vWZh-fyqzcxi2307789.jpg
第四部分是如何编写分布式训练模型示例,大家可以观看视频回放。
  下图是单机版线性回归模型示例
-LUD-fyqzcxi2308188.jpg
第五部分是分布式训练的性能比较
  评价指标通常分为模型方面和平台方面。在模型方面常用指标是:准确率、召回率、AP等。平台方面
  主要看吞吐量、加速比。
Xu7o-fyqzcxi2308597.jpg
异步训练的吞吐量比同步训练好,所以异步训练要比同步训练的快。
vs2m-fyqzcxi2308989.jpg
同步算法和异步算法的比较
Jb2y-fyqzcxi2309067.jpg
以上就是本次分享的主要内容,代码实现部分建议同学们直接观看回放视频,也可关注嘉宾武维的GitHub地址。
  微信公众号:「AI 研习社」长期提供免费视频直播课程,欢迎关注!
『 巴蜀网 』提醒,在使用本论坛之前您必须仔细阅读并同意下列条款:
  1. 遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规,并遵守您在会员注册时已同意的《『 巴蜀网 』管理办法》;
  2. 严禁发表危害国家安全、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容;
  3. 本帖子由 上官123 发表,享有版权和著作权(转帖除外),如需转载或引用本帖子中的图片和文字等内容时,必须事前征得 上官123 的书面同意;
  4. 本帖子由 上官123 发表,仅代表用户本人所为和观点,与『 巴蜀网 』的立场无关,上官123 承担一切因您的行为而直接或间接导致的民事或刑事法律责任。
  5. 本帖子由 上官123 发表,帖子内容(可能)转载自其它媒体,但并不代表『 巴蜀网 』赞同其观点和对其真实性负责。
  6. 本帖子由 上官123 发表,如违规、或侵犯到任何版权问题,请立即举报,本论坛将及时删除并致以最深的歉意。
  7. 『 巴蜀网 』管理员和版主有权不事先通知发帖者而删除其所发的帖子。
分享到:
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

© 2002-2018, 蜀ICP备12031014号, Powered by 5Panda
GMT+8, 2018-2-21 07:10, Processed in 0.249600 second(s), 12 queries, Gzip On, MemCache On
快速回复 返回顶部 返回列表