关于Tensorflow分布式并行策略


Posted in Python onFebruary 03, 2020

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

数据并行

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

关于Tensorflow分布式并行策略

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

关于Tensorflow分布式并行策略

模型并行

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

关于Tensorflow分布式并行策略

模型计算流水线并行

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

关于Tensorflow分布式并行策略

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

Python 相关文章推荐
python生成IP段的方法
Jul 07 Python
Windows中安装使用Virtualenv来创建独立Python环境
May 31 Python
python通过zabbix api获取主机
Sep 17 Python
python简易实现任意位数的水仙花实例
Nov 13 Python
DES加密解密算法之python实现版(图文并茂)
Dec 06 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
python性能测试工具locust的使用
Dec 28 Python
python中封包建立过程实例
Feb 18 Python
Python Parser的用法
May 12 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 和 HTML
2006/10/09 PHP
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
php的常量和变量实例详解
2017/06/27 PHP
推荐dojo学习笔记
2007/03/24 Javascript
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python中__name__的使用实例
2015/04/14 Python
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
python的常见矩阵运算(小结)
2019/08/07 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
python中re模块知识点总结
2021/01/17 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
货车司机岗位职责
2014/03/18 职场文书
社区志愿者活动总结
2014/06/26 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
小学推普周活动总结
2015/05/07 职场文书
《称赞》教学反思
2016/02/17 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
Python实现制作销售数据可视化看板详解
2021/11/27 Python