关于Tensorflow分布式并行策略


Posted in Python onFebruary 03, 2020

tensorFlow中主要包括了三种不同的并行策略,其分别是数据并行、模型并行、模型计算流水线并行,具体参考Tenssorflow白皮书,在接下来分别简单介绍三种并行策略的原理。

数据并行

一个简单的加速训练的技术是并行地计算梯度,然后更新相应的参数。数据并行又可以根据其更新参数的方式分为同步数据并行和异步数据并行,同步的数据并行方式如图所示,tensorflow图有着很多的部分图模型计算副本,单一的客户端线程驱动整个训练图,来自不同的设备的数据需要进行同步更新。这种方式在实现时,主要的限制就是每一次更新都是同步的,其整体计算时间取决于性能最差的那个设备。

关于Tensorflow分布式并行策略

数据并行还有异步的实现方式,如图所示,与同步方式不同的是,在处理来自不同设备的数据更新时进行异步更新,不同设备之间互不影响,对于每一个图副本都有一个单独的客户端线程与其对应。在这样的实现方式下,即使有部分设备性能特别差甚至中途退出训练,对训练结果和训练效率都不会造成太大影响。但是由于设备间互不影响,所以在更新参数时可能其他设备已经更好的更新过了,所以会造成参数的抖动,但是整体的趋势是向着最好的结果进行的。所以说这种方式更适用于数据量大,更新次数多的情况。

关于Tensorflow分布式并行策略

模型并行

一个模型并行训练的例子如图所示,其针对的训练对象是同一批样本数据,但是将不同的模型计算部分分布在不同的计算设备上同时执行。

关于Tensorflow分布式并行策略

模型计算流水线并行

此并行方式主要针对在同一个设备中并发实现模型的计算,如图是其并发计算步骤,可以发现它实际上与异步数据并行有些相似,但是唯一不同的是此方式的并行发生在同一个设备上,而不是在不同的设备之间。并且在计算一批简单的样例时,允许进行“填充间隙”,这可以充分利用空闲的设备资源。

关于Tensorflow分布式并行策略

以上这篇关于Tensorflow分布式并行策略就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python遍历类中所有成员的方法
Mar 18 Python
Python2.x与Python3.x的区别
Jan 14 Python
python3音乐播放器简单实现代码
Apr 20 Python
python 上下文管理器使用方法小结
Oct 10 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
Apr 23 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
python drf各类组件的用法和作用
Jan 12 Python
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 Python
基于python修改srt字幕的时间轴
Feb 03 #Python
Python实现不规则图形填充的思路
Feb 02 #Python
Python ORM编程基础示例
Feb 02 #Python
Python 面向对象之类class和对象基本用法示例
Feb 02 #Python
flask 框架操作MySQL数据库简单示例
Feb 02 #Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 #Python
使用Python操作ArangoDB的方法步骤
Feb 02 #Python
You might like
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
深入解析Python中的WSGI接口
2015/05/11 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
django之session与分页(实例讲解)
2017/11/13 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
财政专业求职信范文
2014/02/19 职场文书
2014年营销工作总结
2014/11/22 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python