本文介绍有关 TensorFlow 分布式的两个实际用例,分别是数据并行(将数据分布到多个 GPU 上)和多服务器分配。

玩转分布式TensorFlow:多个GPU和一个CPU
展示一个数据并行的例子,其中数据被切分到多个 GPU 上。
具体做法
考虑在单个 GPU 上运行矩阵乘法的这段代码:

通过图内拷贝模式中对代码进行了分割,如以下两个不同 GPU 的代码片段所示。请注意,CPU 充当 master 节点,分配计算图,并收集最终结果:

这是一个非常简单的案例,其中计算图由作为 master 的 CPU 分成两部分,并分配给作为 worker 的两个 GPU,计算结果由 CPU 收集。

玩转分布式TensorFlow:多服务器
在这个案例中学习如何将 TensorFlow 计算分配到多个服务器中,其中需假设 worker 和参数服务器的代码是相同的,因此每个计算节点的作用就是传递命令行参数。

具体做法
考虑以下这段代码,所采用的集群架构包括一个在 192.168.1.1:1111 上运行的master和两个分别在 192.168.1.2:1111 和 192.168.1.3:1111 上运行的 worker。

请注意,代码被复制到多台机器上,因此知道当前执行节点的角色是很重要的,从命令行中能得到这些信息。机器可以是一个 worker 或一个参数服务器。

给定一个集群,运行训练服务,每个计算节点都能够有一个角色(worker 或者 ps)和一个 id。

根据计算节点的角色,计算是不同的:

如果角色是参数服务器,则条件是加入服务。请注意,在这种情况下,没有要执行的代码,因为 worker 将不断推送更新,而参数服务器必须执行的唯一操作就是等待。
相反,worker 代码将在集群内的特定设备上执行。这部分代码与第一次构建模型然后进行本地训练的单个机器上执行的代码类似。TensoFlow 轻松地完成了所有的工作分配以及更新结果的收集,并且提供了非常方便的 tf.train.replica_device_setter,可自动将运算操作分配给设备。
解读分析
在这个案例中,已经看到了如何创建一个具有多个计算节点的集群。节点既可以扮演参数服务器的角色,也可以扮演 worker 的角色。

在这两种情况下,执行的代码是相同的,但是根据从命令行收集的参数,代码的执行则是不同的。参数服务器只需要等待 worker 发送更新。tf.train.replica_device_setter(..) 的作用是自动将运算操作分配给可用设备,而 tf.train.ClusterSpec(..) 用于集群设置。

另外请注意,出于效率原因,可以使用多个参数服务器。利用参数,服务器可以提供更好的网络利用率,并允许将模型扩展到更多的并行机器。

TensorFlow分布式(多GPU和多服务器)详解的更多相关文章

  1. NGINX高性能Web服务器详解(读书笔记)

    原文地址:NGINX高性能Web服务器详解(读书笔记) 作者:夏寥寥 第4章  Nginx服务器的高级配置 4.1 针对IPv4的内核7个参数的配置优化 说明:我们可以将这些内核参数的值追加到Linu ...

  2. 计算机网络: IP地址,子网掩码,默认网关,DNS服务器详解

    楔子: 以Windows系统中IP地址设置界面为参考(如图1), IP地址, 子网掩码, 默认网关 和 DNS服务器, 这些都是什么意思呢? 学习IP地址的相关知识时还会遇到网络地址,广播地址,子网等 ...

  3. 【转载】Hadoop历史服务器详解

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:过往记忆(http://www.iteblog.com/)     原文地址: ...

  4. Linux实现利用SSH远程登录服务器详解

    Linux实现利用SSH远程登录服务器详解 http://www.111cn.net/sys/linux/55152.htm

  5. 计算机网络: IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解

    楔子: 以Windows系统中IP地址设置界面为参考(如图1), IP地址, 子网掩码, 默认网关 和 DNS服务器, 这些都是什么意思呢? 学习IP地址的相关知识时还会遇到网络地址,广播地址,子网等 ...

  6. 【网络】IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解

    楔子: 以Windows系统中IP地址设置界面为参考(如图1), IP地址, 子网掩码, 默认网关 和 DNS服务器, 这些都是什么意思呢? 学习IP地址的相关知识时还会遇到网络地址,广播地址,子网等 ...

  7. IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解,DNS域名设计

    本文参考:<计算机网络: IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解> IP地址 概述 计算机要实现网络通信,就必须要有一个用于快速定位的网络地址.IP地址就是计算机在网络 ...

  8. Ngnix服务器详解(Windows版本)(非原创)

    文章大纲 一.Ngnix简介二.Ngnix安装三.Ngnix之静态资源访问四.Ngnix正向代理与反向代理五.Ngnix之虚拟主机配置六.Ngnix之负载均衡七.Ngnix之访问控制八.Ngnix日志 ...

  9. 《TensorFlow学习指南深度学习系统构建详解》英文PDF+源代码+部分中文PDF

    主要介绍如何使用 TensorFlow 框架进行深度学习系统的构建.涉及卷积神经网络.循环神经网络等核心的技术,并介绍了用于图像数据和文本序列数据的模型.给出了分布式深度学习系统在TensorFlow ...

  10. Linux中搭建一个ftp服务器详解

    来源:Linux社区  作者:luzhi1024 详解Linux中搭建一个ftp服务器. ftp工作是会启动两个通道:控制通道 , 数据通道在ftp协议中,控制连接均是由客户端发起的,而数据连接有两种 ...

随机推荐

  1. Docker 实践搭建php环境

    docker 安装 使用官方提供的安装脚本,安装最新版的Docker curl -sSL https://get.docker.com/ | sh 安装完成后,通过如下命令启动Docker的守护进程, ...

  2. hdu4915 判断括号匹配

    题意:       问你括号匹配是否唯一,三种字符'(','?',')',问号可以变成任何字符. 思路:       首先我们要学会判断当前串是否成立?怎么判断?我的方法是跑两遍,开三个变变量 s1 ...

  3. Nessus扫描器的使用

    目录 Nessus Scans Settings 一个基本扫描的建立 自定义扫描策略 Nessus的高级扫描方法 Nessus Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组 ...

  4. 《THE LEAN STARTUP》 《精益创业》

    书名:<THE LEAN STARTUP> <精益创业> 作者: [美] 埃里克·莱斯 IMVU:(3D人物场景聊天)https://secure.imvu.com 作者是这个 ...

  5. ERROR Invalid options in vue.config.js: "baseUrl" is not allowed

    vue项目 我的这个版本是 3.10.0 module.exports = { baseUrl: process.env.NODE_ENV === 'production' ? './' : '/' ...

  6. PHP 读取文件夹(比如某共享文件夹)中的图片并显示

    1.获取文件夹下图片public function albumList(){ $share_url = input('path'); $files = getImgList($share_url); ...

  7. Spring Security 入门(基本使用)

    Spring Security 入门(基本使用) 这几天看了下b站关于 spring security 的学习视频,不得不说 spring security 有点复杂,脑袋有点懵懵的,在此整理下学习内 ...

  8. 一道VM的逆向所引发的符号执行思路

    逆向虚拟机保护 虚拟机保护类的题目需要找到虚拟机的vm_code(字节码),各个handler,然后进一步分析虚拟机保护代码的流程. 用IDA打开程序,经分析后0x403040全局变量地址处存储的就是 ...

  9. python爬虫——《英雄联盟》英雄及皮肤图片

    还记得那些年一起网吧开黑通宵的日子吗?<英雄联盟>绝对是大学时期的风靡游戏,即使毕业多年的大学同学相聚,难免不怀念一番当时一起玩<英雄联盟>的日子. 今天就给大家分享一下英雄及 ...

  10. VSCode·备份&还原配置及拓展项

    阅文时长 | 0.54分钟 字数统计 | 924字符 主要内容 | 1.引言&背景 2.备份VSCode配置 3.还原VSCode配置 4.Syncing常用命令 5.声明与参考资料 『VSC ...