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开发环境。

来源: https://jinzequn.github.io/2017/12/05/tensorflow-distribute/

来自为知笔记(Wiz)

原文地址:https://www.cnblogs.com/jins-note/p/9674557.html

时间: 2024-11-02 20:11:52

TensorFlow分布式部署【多机多卡】的相关文章

TensorFlow分布式部署【单机多卡】

让TensorFlow飞一会儿 面对大型的深度神经网络训练工程,训练的时间非常重要.训练的时间长短依赖于计算处理器也就是GPU,然而单个GPU的计算能力有限,利用多个GPU进行分布式部署,同时完成一个训练任务是一个很好的办法.对于caffe来说,由于NCCL的存在,可以直接在slover中指定使用的GPU.然而对于Tensorflow,虽然Contrib库中有NCCL,但是我并没有找到相关的例子,所以,还是靠双手成就梦想. 原理简介 TensorFlow支持指定相应的设备来完成相应的操作,所以如

深度学习(五十五)tensorflow分布式训练

tensorflow分布式训练 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce   qq:1393852684 情况一.单机单卡 单机单卡是最普通的情况,当然也是最简单的,示例代码如下: #coding=utf-8 #单机单卡 #对于单机单卡,可以把参数和计算都定义再gpu上,不过如果参数模型比较大,显存不足等情况,就得放在cpu上 import tensorflow as tf with tf.device('/cpu:0'):#也可以放在gpu上 w

tensorflow分布式训练

转自:https://blog.csdn.net/daydayup_668819/article/details/80006229 一.单机单卡 单机单卡是最普通的情况,当然也是最简单的,示例代码如下: #coding=utf-8 #单机单卡 #对于单机单卡,可以把参数和计算都定义在gpu上,不过如果参数模型比较大,显存不足等情况,就得放在cpu上 import tensorflow as tf with tf.device('/cpu:0'):#也可以放在gpu上 w=tf.get_varia

Apache/nginx转发设置-分布式部署(转)

转自http://blog.csdn.net/fujianianhua/article/details/8062234 Apache转发设置 1.  Weblogic安装 Weblogic8和Weblogic10默认安装,选择完全安装即可,如果是Weblogic9则选择自定义安装,勾选WebService plugin 2.apache服务器安装 安装说明详见文档<Apache服务器搭建说明.doc> 版本对应关系: Weblogic版本   Apache版本 weblogic8     Ap

【G】开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析

G.系列导航 [G]开源的分布式部署解决方案 - 预告篇 [G]开源的分布式部署解决方案(一) - 开篇 [G]开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的 [G]开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析 抱歉 首先我先说声抱歉,因为上一篇结尾预告第三篇本该是“部署项目管理”,那为什么变成本篇呢? 请容我解释一下,在预告篇到现在为止,经常会有人问我这个项目到底是干什么的.或许之前写的比较粗糙.那我相信目前定稿后的功能概览图应该会给大家一个比较清晰的认识.

Zabbix监控和分布式部署实施方案

最近在研究Zabbix监控,由于机房分布在多个城市,因此采用zabbix proxy做为监控方案,在每 个节点部署zabbix proxy,由zabbix proxy收集agentd数据,然后将采集到的数据主动推送给zabbix server,zabbix server将数据存入数据库,并在WEB前端显示. 1.Zabbix主要功能和优劣势说明 1.1 Zabbix主要功能: 1)Application monitoring 应用监控 数据库/SSH/Apache/Nginx等应用程序的监控.

深度学习多机多卡解决方案-purine

未经允许请不要转载,原作者:zhxfl,http://www.cnblogs.com/zhxfl/p/5287644.html 目录: 一.简介 二.环境配置 三.运行demo 四.硬件配置建议 五.其他 一.简介 深度学习多机多卡集群已经成为主流,相对于caffe和mxnet这两个比较活跃的开源,purine显得更值得在高校的学生细读,因为purine的代码显得更加短小精悍,作者的C++功力也相当浑厚,其采用的思想也是非常有价值和启发性的.但是purine已经停止维护,所以其实并不适合企业用户

ActiveMQ伪分布式部署

本文借鉴http://www.cnblogs.com/guozhen/p/5984915.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 介绍如何在同一台虚拟机上搭建高可用的Activemq服务,集群数量包含3个Activemq,当Activemq可用数>=2时,整个集群可用. 本文Activemq的集群数量为3个,分别命名为mq1,mq2,mq3   二.概念介绍 1.伪集群 集群搭建在同一台虚拟机上,3个Activemq分别使用不同的端口提

[Error]分布式部署SCOM安装报错——Report Services实例无效

一般实验环境中,把SQL服务器和SCOM服务器安装在一台机器上的话,只要注意一下细节,安装的过程是不会有什么问题的.但是如果我不是在同一台机器上安装呢?我现有的环境里就有一个数据库,我就想用这个数据库来做SCOM的报表数据库,但我又不想在这台服务器上安装SCOM角色,那么这就可以分布式部署,就是数据库与SCOM分离. 过程也是差不多,只不过不用再在SCOM服务器上安装SQL Server,只需要安装两个组件: Microsoft Report Viewer 2012(点击下载) Microsof