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

tensorflow 启动多个session_Tensorflow源码解析7 -- TensorFlow分布式运行时相关推荐

  1. oracle job 每月前十天运行_Tensorflow源码解析7 -- TensorFlow分布式运行时

    1 概述 TensorFlow架构设计精巧,在后端运行时这一层,除了提供本地运行时外,还提供了分布式运行时.通过分布式训练,在多台机器上并行执行,大大提高了训练速度.前端用户通过session.run ...

  2. [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush

    [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 文章目录 [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 0 ...

  3. [源码解析] 深度学习分布式训练框架 horovod (11) --- on spark --- GLOO 方案

    [源码解析] 深度学习分布式训练框架 horovod (11) - on spark - GLOO 方案 文章目录 [源码解析] 深度学习分布式训练框架 horovod (11) --- on spa ...

  4. [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark

    [源码解析] 深度学习分布式训练框架 horovod (10) - run on spark 文章目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark ...

  5. [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构

    [源码解析] 模型并行分布式训练Megatron (2) - 整体架构 文章目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...

  6. [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行

    [源码解析] 模型并行分布式训练 Megatron (4) - 如何设置各种并行 文章目录 [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 0x00 摘要 0x0 ...

  7. Tensorflow源码解析3 -- TensorFlow核心对象 - Graph

    1 Graph概述 计算图Graph是TensorFlow的核心对象,TensorFlow的运行流程基本都是围绕它进行的.包括图的构建.传递.剪枝.按worker分裂.按设备二次分裂.执行.注销等.因 ...

  8. Tensorflow源码解析6 -- TensorFlow本地运行时

    1 概述 TensorFlow后端分为四层,运行时层.计算层.通信层.设备层.运行时作为第一层,实现了session管理.graph管理等很多重要的逻辑,是十分关键的一层.根据任务分布的不同,运行时又 ...

  9. Tensorflow源码解析3 -- TensorFlow核心对象 - Graph 1

    1 Graph概述 计算图Graph是TensorFlow的核心对象,TensorFlow的运行流程基本都是围绕它进行的.包括图的构建.传递.剪枝.按worker分裂.按设备二次分裂.执行.注销等.因 ...

最新文章

  1. 一个分析“文件夹”选择框实现方法的过程
  2. zookeeper脑裂
  3. Linux系统下软件包管理四
  4. show in Breadcrumb
  5. java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具
  6. P2237 [USACO14FEB]自动完成Auto-complete
  7. 分析JobInProgress中Map/Reduce任务分配
  8. 蓝桥杯 省赛 python_第十一届蓝桥杯软件省级大赛第二场python3,类省赛,Python3
  9. arraylist的remove()循环删除问题
  10. bat之启动与禁用网卡
  11. MTV模型—urls和view
  12. POJ 3020 Antenna Placement(无向二分图的最小路径覆盖)
  13. 第三次个人作业—“K米”评测
  14. Linux学习总结(60)——Linux系统常用命令速查手册
  15. 2021-07-06淘宝,天猫超市
  16. Allegro PCB设计中Etch层走线阻焊开窗的一种方法
  17. version magic ‘5.15.0 SMP mod_unload aarch64‘ should be ‘5.15.0-xilinx-v2022.2 SMP mod_unload aarch6
  18. Python3学习3 格式化 % format
  19. Windows间歇性高ping(高延迟)解决办法
  20. 5G发展的五大动力和四大挑战

热门文章

  1. 国内厂商 Onyx 违反 GPL 协议,中国开源何去何从?
  2. 详谈ARM架构与ARM内核发展史
  3. 雾计算精华问答 | 雾计算与云计算的区别?
  4. 微电台│Get产品信息管理指南,和客户谈一场全渠道恋爱!
  5. 老板怒了,“我们赚钱你们花钱,还总出毛病!”
  6. mysql表全连接_关于mysql 实现表连接(左,右,内,全连接)
  7. java传递实例_Java方法的参数传递机制实例详解
  8. [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause 的问题 MySQL
  9. tomcat不重启java文件自动编译
  10. NB企业级微服务框架