关于Tensorflow分布式并行策略


Posted in Python onFebruary 03, 2020

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

数据并行

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

关于Tensorflow分布式并行策略

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

关于Tensorflow分布式并行策略

模型并行

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

关于Tensorflow分布式并行策略

模型计算流水线并行

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

关于Tensorflow分布式并行策略

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

Python 相关文章推荐
python使用range函数计算一组数和的方法
May 07 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
Python贪心算法实例小结
Apr 22 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
Python-接口开发入门解析
Aug 01 Python
Python面向对象之多态原理与用法案例分析
Dec 30 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
Python turtle库的画笔控制说明
Jun 28 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
python利用platform模块获取系统信息
Oct 09 Python
python 机器学习的标准化、归一化、正则化、离散化和白化
Apr 16 Python
python 三边测量定位的实现代码
Apr 22 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
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
JSON相关知识汇总
2015/07/03 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
Python构建网页爬虫原理分析
2017/12/19 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
linux 下selenium chrome使用详解
2020/04/02 Python
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
电气自动化专业职业规划范文
2014/02/16 职场文书
农村葬礼主持词
2014/03/31 职场文书
创先争优活动心得体会
2014/09/04 职场文书
少先队中队工作总结
2015/08/14 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android