本文介绍有关 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. mac系统 PHP Nginx环境变量修改

    场景:php默认的环境变量不是我们实际工作中想要的 执行命令:which php 查看默认的php指向的目录 :  /usr/bin/php 修改· ~/.bash_profile 文件 添加php环 ...

  2. SpringCloud之远程调用OpenFeign和Ribbon

    Ribbon.Feign和OpenFeign的区别 SpringCloudAlibaba微服务实战教程系列 Spring Cloud 微服务架构学习记录与示例 一 简介 Feign是Netflflix ...

  3. HR:“最喜欢阿里出来的程序员了,技术又好又耐艹!” 我:???

    面试造火箭,进厂拧螺丝?真的是这样吗? 缘起 估计不少同学都是被标题吸引进来的.事先声明,这句话不是我虚构的,而是我实实在在从同事的口中听到的,而且还不止一次. 当时的场景就是很正常的交谈,别人也并没 ...

  4. 浅谈Java中的公平锁和非公平锁,可重入锁,自旋锁

    公平锁和非公平锁 这里主要体现在ReentrantLock这个类里面了 公平锁.非公平锁的创建方式: //创建一个非公平锁,默认是非公平锁 Lock lock = new ReentrantLock( ...

  5. 全套AutoCAD版本安装教程及下载地址

    1:AutoCAD 2004 安装教程及下载地址 https://mp.weixin.qq.com/s/4So2zmJ6nWu6Z3bSo3W19Q 2:AutoCAD 2005 安装教程及下载地址 ...

  6. OCR-Form-Tools项目试玩记录(二)产品评测

    这是一篇软工课程作业博客 项目 内容 这个作业属于哪个课程 北航2020春软件工程 006班(罗杰.任健 周五) 这个作业的要求在哪里 个人博客作业-软件案例分析 个人课程目标 系统地学习软件工程理论 ...

  7. 在微信框架模块中,基于Vue&Element前端的事件和内容的管理

    在微信后台管理中,我们需要定义好菜单对应的事件管理,因为微信通过菜单触发相关的事件,因此菜单事件的响应关系,我们如果处理好,就能构建出我们的微信应用入口了.通过入口,我们可以响应用户菜单的事件,如响应 ...

  8. Spring Boot 2.5.0 重新设计的spring.sql.init 配置有啥用?

    前几天Spring Boot 2.5.0发布了,其中提到了关于Datasource初始化机制的调整,有读者私信想了解这方面做了什么调整.那么今天就要详细说说这个重新设计的配置内容,并结合实际情况说说我 ...

  9. Mybatis-plus在原有的select查询语句中动态追加查询条件

    一.适用场景 1.使用了xml形式的mapper.2.不想在select查询中大量使用<if>标签来判断条件是否存在而加入条件. 二.步骤 1.自定义wrapper继承QueryWrapp ...

  10. Flutter 2.2 更新详解

    Flutter 2.2 版已正式发布!要获取新版本,您只需切换到 stable 渠道并更新目前安装的 Flutter,或前往 flutter.cn/docs/get-started 从头开始安装. 虽 ...