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为分布式运行时,设计了一个精巧的结构。共分为三级。

  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
7edce7ea06eb5464a35b5c853824b0a2.png
谢杨易:Tensorflow源码解析2 -- 前后端连接的桥梁 - Session​zhuanlan.zhihu.com
425d77d63e56bec5db1665e7f65bf0c2.png
谢杨易:Tensorflow源码解析3 -- TensorFlow核心对象 - Graph​zhuanlan.zhihu.com
0f764bc058e263bfc172ef35c14da3c3.png
谢杨易:Tensorflow源码解析4 -- 图的节点 - Operation​zhuanlan.zhihu.com
8dfd7366a90859120e9fdb339d221e43.png
谢杨易:Tensorflow源码解析5 -- 图的边 - Tensor​zhuanlan.zhihu.com
8dfd7366a90859120e9fdb339d221e43.png
谢杨易:Tensorflow源码解析6 -- TensorFlow本地运行时​zhuanlan.zhihu.com
3080a3f043ba1a2b3e95c3162724baa7.png
谢杨易:Tensorflow源码解析7 -- TensorFlow分布式运行时​zhuanlan.zhihu.com
e72c8e334e2cd7c710088c5d7fa750b0.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell swt 样式_SWT之路:SWT图像显示

简明现代魔法 -> Java编程语言 -> SWT之路:SWT图像显示SWT之路:SWT图像显示2009-10-03程序演示还是先用SWT Desiner创建界面程序。然后创建一个Display对象和Image对象,和一个GC对象。类org.eclipse.swt.graphics.GC是一个封装了所有可…

xamarin和mysql_Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

一、前言在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的。所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提示方式,让用户决定…

python 绝对值误差小于10-6_Python 被低估了的 10 个小技巧

hi,各位朋友们,小帅b回来啦,几日不见,想我了么?今天给大家分享几个我认为不错的 Python 小技巧,有些可能被你低估了哟,get 起来!那么接下来就是:学习 Python 的正确姿势俗…

释放tcp连接的命令是_最实用的6个网络命令,网络故障不求人

很多弱电工程师朋友在项目中经常遇到一些网络故障,需要通过一些一些命令去检测、定位故障点,通过使用网络命令,故障解决的工作取得了事半功倍的效果。下面就一起温故而知新吧!一、ping命令(因特网包探索器)…

airpods2怎么查正品 ios11系统_拼多多AirPods2开箱评测,4种办法教你验真假,10个AirPods技巧教你玩...

大家好,Apple今天给大家分享一下拼多多上车AirPods 2无线充电盒版的经验,顺便整理了一波AirPods使用技巧,希望你用得上。入手理由自从去年10月份入手了iPhone XR,其实就挺想入款无线耳机的,所以一直在等AirPods升级换代…

windows文件保护_Windows系统下媲美时间机器的系统备份工具,统统免费

Windows和macOS系统谁更美?不同的人有不同的见解。但体验过macOS之后很多电脑玩家会感叹,TimeMachine时间机器太好用了,Windows下有没有同类功能呢?TimeMachine提供了全盘完整备份、增量备份、文件历史版本等功能。它们在Windows …

JAVA结课_一点心情,写java结课考试之前

突然发现,已经好久没有上来写blog了,本来还以为能够天天写,后来发现,确是心有余力而不足啊。学期进入中段,课业慢慢多了,各种各样的事情也接踵而来了。本学期的java课程也已经结课了,8周32个学时…

sql怎么撤回update_腾讯SQL“现役运动员”给你的实践小技巧

引言SQL的全称是Structured Query Language(结构化查询语言),是一种古老而简洁的程序设计语言。看似平平无奇,一直被各种吐槽,但却有着众多语言所难得的漫长寿命,并展现出极好的拓展性,在不同时期衍生出不同的子语言。…

小程序input wxss_19. 教你零基础搭建小程序:wxss-尺寸单位

这章以后的四章都是介绍小程序样式文件——wxss 的使用,分为以下三个部分一、尺寸方案二、样式导入三、选择器这章先来讲wxss的尺寸单位—— rpxwxss的定义:WXSS( WeiXin Style Sheets )是⼀套样式语言,用于描述 WXML 的组件样式。与 CSS 相比…

某一个接口403 其他接口可以调通_Neo的务实外设指南 篇三十六:一个就够,65W快充+C口混插+最多6个设备 - 飞利浦65W摩天轮插座_插座...

2020-10-26 15:29:0623点赞23收藏2评论嗨,大家好!我是沈少!之前晒雷电3扩展坞的时候,已经有小伙伴注意到我用来提供PD充电的是一个很小巧的魔方插座。也有朋友私下提醒我,这类产品虽然支持PD快充协议,但一般…

linux java 获取路径怎么写_linux中java获取路径怎么写?

linux中java获取路径怎么写?在Unix/Linux中,路径的分隔采用正斜"/",比如"cd /home/java"。在java的代码开发中 是代表转义字符。相对路径和绝对路径. 指的是当前目录.. 指的是当前目录的上一级目录./book表示当前目录下的…

layerconfirm 自动关闭问题 没有阻塞问题_微信新版本自动更新?赶紧关闭这个功能...

前不久安卓用户也迎来了微信新版本的更新不少伙伴惊呼“猝不及防,一觉醒来发现微信自动更新了”一时间还冲上了话题的热搜榜究竟是怎么肥事?小移了解到:原来是因为部分用户设置了“微信自动更新”那么问题来了,如何关闭微信自动更…

list steam_在 Steam 中国版上玩单机游戏也会受到防沉迷系统管控

今天看到一个消息,Steam 中国版,也就是所谓的“蒸汽平台”,最近正在测试。重点在于,哪怕你玩“理论上无需联网”的单机游戏,游玩时间也会受到著名的防沉迷系统的限制。以下是我在动点科技编写的新闻全文(原文链接是界面…

java的默认访问权限_java类的访问权限

1.解析Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符。private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方…

github流程图_逆天插件,VSCode里也能画流程图了?Visio可以淘汰了?

vscode-drawio简介网络之大,人才百出,在开源背景下,一些功能只有你想不到,没有做不到。这不,对于写代码的程序员来说,竟然也可以在VSCode IDE里边写代码,边画逻辑流程图了。最近,在g…

spring aopalliance 包里都有什么_【九仓樱】翻包記 05 | 是什么让我的便当包里每天都带着小企鹅?!...

Sakura | 2020・05バッグ日記:< Whats in my bag ? >这里是一个全新的栏目&#xff0c;关于九仓樱の日常翻包初衷是想跟大家分享一些有趣好玩的东西想知道我到底有多少个包包吗&#xff1f;我的包包里都会有哪些你想不到的东西呢&#xff1f;LIST① MYKONOS 便当包② MY…

java setpaintmode 用法_详解Paint的各种set方法

(1) 在application配置文件中关闭硬件加速&#xff1a;android:allowBackup"true"android:hardwareAccelerated"false"android:icon"drawable/ic_launcher"android:label"string/app_name"android:theme"style/AppTheme" &g…

one more step_KDA新歌《MORE》的一些冷知识:伊芙琳换回原声,摩托车是定制的

原标题&#xff1a;KDA新歌《MORE》的一些冷知识&#xff1a;伊芙琳换回原声&#xff0c;摩托车是定制的KDA女团在2020年宣布回归后就引发了很多的关注&#xff0c;回归后也是推出了首支单曲《THE BADDEST》&#xff0c;这首歌在之后也引发了不少网友的模仿以及翻唱&#xff0c…

java jdbc连接 代码块_java 中JDBC连接数据库代码和步骤详解及实例代码

•创建一个以JDBC连接数据库的程序&#xff0c;包含7个步骤&#xff1a;1、加载JDBC驱动程序&#xff1a;在连接数据库之前&#xff0c;首先要加载想要连接的数据库的驱动到JVM(Java虚拟机)&#xff0c;这通过java.lang.Class类的静态方法forName(String className)实现。 例…

java数据库edit_Java数据库连接——JDBC基础知识(操作数据库:增删改查)

一、JDBC简介JDBC是连接java应用程序和数据库之间的桥梁。什么是JDBC?Java语言访问数据库的一种规范,是一套API。JDBC (Java Database Connectivity) API&#xff0c;即Java数据库编程接口&#xff0c;是一组标准的Java语言中的接口和类&#xff0c;使用这些接口和类&#xff…