关于Tensorflow分布式并行策略


Posted in Python onFebruary 03, 2020

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

数据并行

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

关于Tensorflow分布式并行策略

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

关于Tensorflow分布式并行策略

模型并行

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

关于Tensorflow分布式并行策略

模型计算流水线并行

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

关于Tensorflow分布式并行策略

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

Python 相关文章推荐
用Python脚本来删除指定容量以上的文件的教程
May 04 Python
Python中的多行注释文档编写风格汇总
Jun 16 Python
python MySQLdb使用教程详解
Mar 20 Python
Python时间和字符串转换操作实例分析
Mar 16 Python
python仿evething的文件搜索器实例代码
May 13 Python
python实现随机漫步方法和原理
Jun 10 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
python中的global关键字的使用方法
Aug 20 Python
opencv设置采集视频分辨率方式
Dec 10 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
python中get和post有什么区别
Jun 19 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
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
js模拟微博发布消息
2017/02/23 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
SVG实现时钟效果
2018/07/17 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
python实现的简单抽奖系统实例
2015/05/22 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
2014年小学植树节活动方案
2014/03/02 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
开学典礼演讲稿
2014/05/23 职场文书
培训研修方案
2014/06/06 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
运动会主持词大全
2015/07/02 职场文书
公司仓库管理制度
2015/08/04 职场文书
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python