关于Tensorflow分布式并行策略


Posted in Python onFebruary 03, 2020

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

数据并行

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

关于Tensorflow分布式并行策略

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

关于Tensorflow分布式并行策略

模型并行

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

关于Tensorflow分布式并行策略

模型计算流水线并行

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

关于Tensorflow分布式并行策略

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

Python 相关文章推荐
Python3 正在毁灭 Python的原因分析
Nov 28 Python
Python中对象的引用与复制代码示例
Dec 04 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
Python常见内置高效率函数用法示例
Jul 31 Python
python使用多进程的实例详解
Sep 19 Python
python使用matplotlib画饼状图
Sep 25 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
python数据预处理方式 :数据降维
Feb 24 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
opencv读取视频并保存图像的方法
Jun 04 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面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
简约JS日历控件 实例代码
2013/07/12 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
详解python开发环境搭建
2016/12/16 Python
python脚本替换指定行实现步骤
2017/07/11 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
大二学生职业生涯规划书
2014/02/05 职场文书
高三霸气励志标语
2014/06/24 职场文书
商务经理岗位职责
2014/08/03 职场文书