1 概述

TensorFlow架构设计精巧,在后端运行时这一层,除了提供本地运行时外,还提供了分布式运行时。通过分布式训练,在多台机器上并行执行,大大提高了训练速度。前端用户通过session.run()启动系统执行时,target默认为空字符串"",对应的是本地运行模式。若target以"grpc://"开头,则对应的是分布式运行模式,target指定了要连接的TensorFlow执行引擎。

分布式运行时同样分为client master和worker,只是三者不在同一进程内。分布式运行时同样是围绕计算图Graph来进行的,流程也与本地运行时几乎相同。client负责图的构造,并传递给master。master接收后,启动图的剪枝和分裂,将分裂后的子图发送给多个worker进程。worker进程负责执行计算子图,它会先按照自己所在机器包含的设备,先按照设备进行子图的二次分裂,然后在每个设备上进行子图执行。所有设备执行完毕后,从计算图的终止节点sink中取出数据。

本地运行时通过DirectSession同时管理client master和worker,而分布式运行时则不同。client对应GrpcSession,master对应MasterSession,worker对应WorkerSession。三者使用同一个句柄session_handle进行协同工作。

2 数据交换

和本地运行时类似,分布式运行时也存在跨设备的数据依赖。对于跨设备的数据边,将其分裂,在发送方插入send节点,接收方插入recv节点。如果二者跨进程通信(比如两台不同的服务器),则通过GrpcRemoteRendezvous进行数据交换。如果二者是进程内通信(比如同一台服务器的CPU0和CPU1),则通过IntraProcessRendezvous进行数据交换。上节讲过的本地运行时在运行前,就创建了一个IntraProcessRendezvous对象。

3 分布式集群结构

TensorFlow为分布式运行时,设计了一个精巧的结构。共分为三级。

  1. 集群cluster,可包含多台服务器,通过ClusterSpec对象描述。它包含多个job,一个job又包含多个Task。一个Task对应一个server。
  2. Job。将目的相同的Task划归为一个job,使用job_id唯一标示。一般存在两种job。ps将数据发送给worker,待worker运算完毕后再返回给ps,ps再进行数据更新。
    - ps:数据存储,负责存储和更新模型的参数,比如w和b。比较适合CPU
    - worker:数据计算,负责train和inference时的数据计算工作。比较适合GPU
  3. Task。Task是提供服务的最小单位,它一般单独在一个进程内,通过job_id:task_index唯一标示。一个Task对应一个server,提供MasterService和WorkerService两种服务。

下面是一个集群配置的例子。

tf.train.ClusterSpec({"worker": ["worker0:1111", # /job:worker/task:0"worker1:2222", # /job:worker/task:1"worker2:3333" # /job:worker/task:2],"ps": ["ps0:1111", # /job:ps/task:0"ps1:2222" # /job:ps/task:1
]})
​

这个集群cluster内包含2个job,一个ps和一个worker。ps又包含2个task,worker则包含3个task,共计5个task。

系列文章,欢迎阅读

谢杨易:Tensorflow源码解析1 -- 内核架构和源码结构​zhuanlan.zhihu.com

谢杨易:Tensorflow源码解析2 -- 前后端连接的桥梁 - Session​zhuanlan.zhihu.com

谢杨易:Tensorflow源码解析3 -- TensorFlow核心对象 - Graph​zhuanlan.zhihu.com

谢杨易:Tensorflow源码解析4 -- 图的节点 - Operation​zhuanlan.zhihu.com

谢杨易:Tensorflow源码解析5 -- 图的边 - Tensor​zhuanlan.zhihu.com

谢杨易:Tensorflow源码解析6 -- TensorFlow本地运行时​zhuanlan.zhihu.com

谢杨易:Tensorflow源码解析7 -- TensorFlow分布式运行时​zhuanlan.zhihu.com

oracle job 每月前十天运行_Tensorflow源码解析7 -- TensorFlow分布式运行时相关推荐

  1. 判定两个tensor维度相同_Tensorflow源码解析5 -- 图的边 - Tensor

    1 概述 前文两篇文章分别讲解了TensorFlow核心对象Graph,和Graph的节点Operation.Graph另外一大成员,即为其边Tensor.边用来表示计算的数据,它经过上游节点计算后得 ...

  2. 【深度学习实战03】——YOLO tensorflow运行及源码解析

    本文章是深度学习实战系列第三讲文章,以运行代码+源码分析 为主: 转载请注明引用自:https://blog.csdn.net/c20081052/article/details/80260726 首 ...

  3. Handler消息机制(十):HandlerThread源码解析

    作为Android开发者都知道在子线程中使用Handler必须要创建Looper,其实HandlerThread就是在线程中封装了Looper的创建和循环,不用我们开发者自己去创建它,下面我们来看看源 ...

  4. Spring源码分析(十)依赖注入源码解析3:DefaultListableBeanFactory#doResolveDependency 真正开始解析依赖项

    4.2 真正开始解析依赖项(最核心方法) org.springframework.beans.factory.support.DefaultListableBeanFactory#doResolveD ...

  5. dubbo源码解析(三十五)集群——cluster

    集群--cluster 目标:介绍dubbo中集群容错的几种模式,介绍dubbo-cluster下support包的源码. 前言 集群容错还是很好理解的,就是当你调用失败的时候所作出的措施.先来看看有 ...

  6. dubbo源码解析(十)远程通信——Exchange层

    远程通讯--Exchange层 目标:介绍Exchange层的相关设计和逻辑.介绍dubbo-remoting-api中的exchange包内的源码解析. 前言 上一篇文章我讲的是dubbo框架设计中 ...

  7. 第十四课 k8s源码学习和二次开发原理篇-调度器原理

    第十四课 k8s源码学习和二次开发原理篇-调度器原理 tags: k8s 源码学习 categories: 源码学习 二次开发 文章目录 第十四课 k8s源码学习和二次开发原理篇-调度器原理 第一节 ...

  8. Java并发编程(十六):CyclicBarrier源码分析

    前言   CyclicBarrier可以建立一个屏障,这个屏障可以阻塞一个线程直到指定的所有线程都达到屏障.就像团队聚餐,等所有人都到齐了再一起动筷子.根据Cyclic就可以发现CyclicBarri ...

  9. Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树

    Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 文章目录 Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 0x00 摘要 0x01 背景概念 1.1 词向量 ...

最新文章

  1. Java泛型中? 和 ? extends Object的异同分析
  2. openLayers3 中实现多个Overlay
  3. 2021-03-15 final value theorem 终值定理
  4. Vue学习笔记(八) 组件进阶
  5. linux内核那些事之buddy
  6. 第七章 Android嵌入式组态软件
  7. 【图文】Latex 中文字体的使用
  8. jsp在线预览Word文档操作步骤(自己测试的)
  9. 图像坐标球面投影_从球面到平面的投影
  10. 利用 Python 优雅地将 PDF 转换成图片
  11. win10修复tcp驱动服务器,怎么解决tcpip.sys文件导致蓝屏|Win10的tcpip修复工具
  12. 【云计算】一文了解裸金属服务器(一)
  13. Unity实现相机漫游功能
  14. epoch, batch, iteration
  15. 管理经济学第一遍总结
  16. 前端面试必会 | 一文读懂 JavaScript 中的 this 关键字
  17. docker、K8S、k3s、rancher
  18. 柔性印刷电路板(PCB)的设计方法、类型等详细解析
  19. 智慧管廊综合管理系统设计方案
  20. 信息论复习—线性分组码的基本性质

热门文章

  1. 贝索斯前妻再捐2.81亿美元
  2. 网信办:网络音视频等平台不得诱导未成年人参与应援集资等活动
  3. 3499元被吐槽太贵!A15加持:新iPhone SE正式发布 还有“苍蝇绿”iPhone 13
  4. 苹果将允许iPhone直接使用NFC接受信用卡付款
  5. 微信支付推出限量红包封面 两大途径赢取
  6. 首发骁龙8 Gen1!联想陈劲:摩托罗拉edge X将给行业扔一颗大炸弹
  7. 大学生起诉小米获赔流量费1元
  8. 苏炳添成为小米代言人
  9. 5nm及3nm推动 台积电2024及2025年产能将主要集中在台南科学园
  10. 罗永浩抖音直播带货100天,糊了?