TensorFlow分布式部署【多机多卡】
让TensorFlow们飞一会儿
前一篇文章说过了TensorFlow单机多卡情况下的分布式部署,毕竟,一台机器势单力薄,想叫兄弟们一起来算神经网络怎么办?我们这次来介绍一下多机多卡的分布式部署。
其实多机多卡分布式部署在我看来相较于单机多卡分布式更容易一些,因为一台机器下需要考虑我需要把给每个device分配哪些操作,这个过程很繁琐。多台机器虽然看起来更繁琐,然而我们可以把每一台机器看作是一个单卡的机器,并且谷歌爸爸已经把相对复杂的函数都给封装好了,我们直接拿来用就行。为什么这么说呢?我们首先介绍两个概念In-graph模式和Between-graph模式:
In-graph模式: 这个模式跟单机单卡是差不多的,我们需要把不同的节点分配给不同的设备,比如说我让某台机器的某个GPU做一部分卷积,另外某台机器的某个GPU做另外一部分卷积,这样大家都有活干。想象总是美好的,在实际情况中会出现什么问题呢?数据搬移量太大,会有相当一部分时间耗费再数据搬移之下,Tensor翻山越岭,穿过网线,来到一个设备中,凳子还没坐热,有出发去另外一个设备。在大量训练数据的情况下,这种方法往往是不可取的。
Between-graph模式: 这个模式下每一个设备都相当于独立的完成整个卷积神经网络的操作,只是在开始时从参数服务器中取到参数,然后结束的时候送回参数。所以除了chief节点以外,所有人都可以在训练过程中随时退出,随时加入,但是刚开始时,大家都要响应一下chief节点的号召。这样显然更合理一点,在大量数据的情况下我们会选用这个方法,下面的代码也会以Between-graph模式作为例子。
上文提到在Between-graph模式下我们需要在训练过程中从参数服务器中获取参数,那么问题来了,什么是参数服务器?接下来我们再引入两个概念(忍一下忍一下,很简单):
参数服务器:顾名思义,参数服务器嘛,保存参数用的服务器,简称ps(paramEter severs)。参数服务器可以不止一个,如果参数量过大的话,我们可以多叫几台计算机过来充当参数服务器,用来更新参数。
工作服务器: 顾名思义,工作服务器嘛,干活的,简称worker。一般为GPU们,能够进行快速并行计算的设备,它可以从参数服务器中把参数荡下来,然后计算出来以后在传上去。
基础的介绍完了,同样的每个工作模式下都会有参数同步更新和异步更新,下面放张就是那么个意思的图(现在没图都不好写博客了…)。
好,总结一下,我们可以设置多个参数服务器(ps)用来存储更新参数,同时我们也可以设置多个工作服务器(worker)用来进行计算。这样就组成了一个多机多卡分布式的Tensorflow开发环境。
TensorFlow分布式部署【多机多卡】的更多相关文章
- TensorFlow分布式部署【单机多卡】
让TensorFlow飞一会儿 面对大型的深度神经网络训练工程,训练的时间非常重要.训练的时间长短依赖于计算处理器也就是GPU,然而单个GPU的计算能力有限,利用多个GPU进行分布式部署,同时完成一个 ...
- Tensorflow分布式部署和开发
关于tensorflow的分布式训练和部署, 官方有个英文的文档介绍,但是写的比较简单, 给的例子也比较简单,刚接触分布式深度学习的可能不太容易理解.在网上看到一些资料,总感觉说的不够通俗易懂,不如自 ...
- [翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed Systems"
[翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed ...
- Jmeter 压力测试笔记(4)--分布式部署
分布式部署:坑,大坑~ 超级坑~~~~ 在这里坑了2天,整整2天.其它略过不表下面只写经验: 在linux下,centos7系统 1主 14执行机. jmeter版本 5.2.1 所有机器在同一 ...
- [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇
[源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇 目录 [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇 1. ...
- Zabbix监控和分布式部署实施方案
最近在研究Zabbix监控,由于机房分布在多个城市,因此采用zabbix proxy做为监控方案,在每 个节点部署zabbix proxy,由zabbix proxy收集agentd数据,然后将采集到 ...
- 深度学习多机多卡解决方案-purine
未经允许请不要转载,原作者:zhxfl,http://www.cnblogs.com/zhxfl/p/5287644.html 目录: 一.简介 二.环境配置 三.运行demo 四.硬件配置建议 五. ...
- Hadoop 2.6.0分布式部署參考手冊
Hadoop 2.6.0分布式部署參考手冊 关于本參考手冊的word文档.能够到例如以下地址下载:http://download.csdn.net/detail/u012875880/8291493 ...
- Apache/nginx转发设置-分布式部署
Apache转发设置1. Weblogic安装 Weblogic8和Weblogic10默认安装,选择完全安装即可,如果是Weblogic9则选择自定义安装,勾选WebService plugin 2 ...
随机推荐
- EJB3 事物
在ejb3中事物分为两种类型:容器管理的事物(CMT).Bean管理的事物(BMT) 1.容器管理的事物(CTN) 是EJB默认的事物管理方式,即以对应的方法起始和结束来由EJB容器确定事务的始末边界 ...
- 漫谈NIO(2)之Java的NIO
1.前言 上章提到过Java的NIO采取的是多路IO复用模式,其衍生出来的模型就是Reactor模型.多路IO复用有两种方式,一种是select/poll,另一种是epoll.在windows系统上使 ...
- javascript闭包获取table中tr的索引 分类: JavaScript 2015-05-04 15:10 793人阅读 评论(0) 收藏
使用javascript闭包获取table标签中tr的索引 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...
- Fiddler Web Debugger安装后与浏览器之间的常用设置(辅助爬虫)(图文详解)
不多说,直接上干货! 怎么让我们的浏览经过代理服务呢?如下来正确设置: 这里有个经验,最好用历史低版本的火狐浏览器.比如 http://ftp.mozilla.org/pub/firefox/rele ...
- arm处理器启动流程分析
2440: 启动方式:nor , nand 地址布局: 启动流程: 开发板在上电后,会从0x0地址处运行. 如果从nor flash启动,则代码要放在nor 的0地址处: 如果从nand flash启 ...
- C#合并两个Dictionary的方法
直接代码: public Dictionary<string, string> MergeDictionary(Dictionary<string, string> first ...
- Mahout实战---运行第一个推荐引擎
创建输入 创建intro.csv文件,内容如下 1,101,5.0 1,102,3.0 1,103,2.5 2,101,2.0 2,102,2.5 2,103,5.0 2,104,2.0 3,101, ...
- PTA (Advanced Level) 1024 Palindromic Number
Palindromic Number A number that will be the same when it is written forwards or backwards is known ...
- 微信小程序动态生成保存二维码
起源:最近小程序需要涉及到一些推广方面的功能,所以要写一个动态生成二维码用户进行下载分享,写完之后受益良多,特此来分享一下: 一.微信小程序动态生成保存二维码 wxml: <view class ...
- BATJ面试必会之 Spring 篇(一)
译者:深海 校对:方腾飞 出自并发编程网 – ifeve.com 目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP ...