tensorflow 启动多个session_Tensorflow源码解析7 -- TensorFlow分布式运行时
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为分布式运行时,设计了一个精巧的结构。共分为三级。
- 集群cluster,可包含多台服务器,通过ClusterSpec对象描述。它包含多个job,一个job又包含多个Task。一个Task对应一个server。
- Job。将目的相同的Task划归为一个job,使用job_id唯一标示。一般存在两种job。ps将数据发送给worker,待worker运算完毕后再返回给ps,ps再进行数据更新。
- ps:数据存储,负责存储和更新模型的参数,比如w和b。比较适合CPU
- worker:数据计算,负责train和inference时的数据计算工作。比较适合GPU - 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 -- 前后端连接的桥梁 - Sessionzhuanlan.zhihu.com
谢杨易:Tensorflow源码解析3 -- TensorFlow核心对象 - Graphzhuanlan.zhihu.com
谢杨易:Tensorflow源码解析4 -- 图的节点 - Operationzhuanlan.zhihu.com
谢杨易:Tensorflow源码解析5 -- 图的边 - Tensorzhuanlan.zhihu.com
谢杨易:Tensorflow源码解析6 -- TensorFlow本地运行时zhuanlan.zhihu.com
谢杨易:Tensorflow源码解析7 -- TensorFlow分布式运行时zhuanlan.zhihu.com
tensorflow 启动多个session_Tensorflow源码解析7 -- TensorFlow分布式运行时相关推荐
- oracle job 每月前十天运行_Tensorflow源码解析7 -- TensorFlow分布式运行时
1 概述 TensorFlow架构设计精巧,在后端运行时这一层,除了提供本地运行时外,还提供了分布式运行时.通过分布式训练,在多台机器上并行执行,大大提高了训练速度.前端用户通过session.run ...
- [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush
[源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 文章目录 [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 0 ...
- [源码解析] 深度学习分布式训练框架 horovod (11) --- on spark --- GLOO 方案
[源码解析] 深度学习分布式训练框架 horovod (11) - on spark - GLOO 方案 文章目录 [源码解析] 深度学习分布式训练框架 horovod (11) --- on spa ...
- [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark
[源码解析] 深度学习分布式训练框架 horovod (10) - run on spark 文章目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark ...
- [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构
[源码解析] 模型并行分布式训练Megatron (2) - 整体架构 文章目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...
- [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行
[源码解析] 模型并行分布式训练 Megatron (4) - 如何设置各种并行 文章目录 [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 0x00 摘要 0x0 ...
- Tensorflow源码解析3 -- TensorFlow核心对象 - Graph
1 Graph概述 计算图Graph是TensorFlow的核心对象,TensorFlow的运行流程基本都是围绕它进行的.包括图的构建.传递.剪枝.按worker分裂.按设备二次分裂.执行.注销等.因 ...
- Tensorflow源码解析6 -- TensorFlow本地运行时
1 概述 TensorFlow后端分为四层,运行时层.计算层.通信层.设备层.运行时作为第一层,实现了session管理.graph管理等很多重要的逻辑,是十分关键的一层.根据任务分布的不同,运行时又 ...
- Tensorflow源码解析3 -- TensorFlow核心对象 - Graph 1
1 Graph概述 计算图Graph是TensorFlow的核心对象,TensorFlow的运行流程基本都是围绕它进行的.包括图的构建.传递.剪枝.按worker分裂.按设备二次分裂.执行.注销等.因 ...
最新文章
- 一个分析“文件夹”选择框实现方法的过程
- zookeeper脑裂
- Linux系统下软件包管理四
- show in Breadcrumb
- java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具
- P2237 [USACO14FEB]自动完成Auto-complete
- 分析JobInProgress中Map/Reduce任务分配
- 蓝桥杯 省赛 python_第十一届蓝桥杯软件省级大赛第二场python3,类省赛,Python3
- arraylist的remove()循环删除问题
- bat之启动与禁用网卡
- MTV模型—urls和view
- POJ 3020 Antenna Placement(无向二分图的最小路径覆盖)
- 第三次个人作业—“K米”评测
- Linux学习总结(60)——Linux系统常用命令速查手册
- 2021-07-06淘宝,天猫超市
- Allegro PCB设计中Etch层走线阻焊开窗的一种方法
- version magic ‘5.15.0 SMP mod_unload aarch64‘ should be ‘5.15.0-xilinx-v2022.2 SMP mod_unload aarch6
- Python3学习3 格式化 % format
- Windows间歇性高ping(高延迟)解决办法
- 5G发展的五大动力和四大挑战
热门文章
- 国内厂商 Onyx 违反 GPL 协议,中国开源何去何从?
- 详谈ARM架构与ARM内核发展史
- 雾计算精华问答 | 雾计算与云计算的区别?
- 微电台│Get产品信息管理指南,和客户谈一场全渠道恋爱!
- 老板怒了,“我们赚钱你们花钱,还总出毛病!”
- mysql表全连接_关于mysql 实现表连接(左,右,内,全连接)
- java传递实例_Java方法的参数传递机制实例详解
- [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause 的问题 MySQL
- tomcat不重启java文件自动编译
- NB企业级微服务框架