本文介绍有关 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. Laravel结构生成器

    简介 Laravel 的 Schema 类提供了一种与数据库无关的方式维护表.它和 Laravel 所支持的所有数据库都能很好的工作,并且提供了统一的接口. 创建和删除表 使用 Schema::cre ...

  2. 【VsCode】 实用插件列表

    1.IntelliJ IDEA Keybindings   -IDEA风格的 快捷键,熟悉JetBrain全家桶的不要错过: 2.Vue VSCode Snippets    -写Vue时好用的快捷键 ...

  3. Android木马病毒com.schemedroid的分析报告

    某安全公司移动病毒分析报告的面试题目,该病毒样本的代码量比较大,最大的分析障碍是该病毒样本的类名称和类方法名称以及类成员变量的名称被混淆为无法辨认的特殊字符,每个被分析的类中所有的字符串都被加密处理了 ...

  4. 用 edgeadm 一键安装边缘 K8s 集群和原生 K8s 集群

    背景 目前,很多边缘计算容器开源项目在使用上均存在一个默认的前提:用户需要提前准备一个标准的或者特定工具搭建的 Kubernetes 集群,然后再通过特定工具或者其他方式在集群中部署相应组件来体验边缘 ...

  5. 在Visual Studio 中使用git——文件管理-下(六)

    在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...

  6. 转: inline关键字使用

    1.inline用在函数声明时,还是函数定义时?还是两边都加? 首先,内联函数声明和定义最好在同一个文件中,其它的情况没有实用上的意义. 只要在同一个文件中,声明和定义至少其一加"inlin ...

  7. SE_Work3_结队项目

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求:求交点个数 结对项目作业 班级:005 Sample GitHub地址 intersect 北航网盘地址 SE结队项目 1. PS ...

  8. Serverless实践-静态网站托管

    Serverless实践-静态网站托管 超多图预警!!! 本文旨在帮助不懂运维/网络/服务器知识的小白,在不租用云服务器的情况下,实现Web站点的上线部署 适合边看文章边跟着动手做 包含使用Githu ...

  9. jekyll-admin的搭建和使用

    通过jekyll搭建好了自己的博客.写博客成为了日常,经过一段时间的摸索,发现jekyll-admin是个好东西,它是博客的后台管理系统,可以方便的管理和编写自己的博客 安装 运行命令gem inst ...

  10. [Java]数据分析--聚类

    距离度量 需求:计算两点间的欧几里得距离.曼哈顿距离.切比雪夫距离.堪培拉距离 实现:利用commons.math3库相应函数 1 import org.apache.commons.math3.ml ...