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.pswp.cn/news/529228.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529228.shtml
英文地址,請注明出處:http://en.pswp.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是一個封裝了所有可…

swool tcp mysql_swoole/mysql(異步)

# 異步Swoole\Mysql**(要求Workerman版本>3.3.6)**## 注意:此組件由swoole底層提供,由C語言編寫,具有超高性能。## 安裝:安裝有swoole擴展即可## 示例:phprequire_once ../Autoloader.php;use Workerman\Worker;use \Swoole\My…

xamarin和mysql_Xamarin.Android 使用 SQLiteOpenHelper 進行數據庫操作

一、前言在手機中進行網絡連接不僅是耗時也是耗電的,而耗電卻是致命的。所以我們就需要數據庫幫助我們存儲離線數據,以便在用戶未使用網絡的情況下也可以能夠使用應用的部分功能,而在需要網絡連接的功能上采用提示方式,讓用戶決定…

python 絕對值誤差小于10-6_Python 被低估了的 10 個小技巧

hi,各位朋友們,小帥b回來啦,幾日不見,想我了么?今天給大家分享幾個我認為不錯的 Python 小技巧,有些可能被你低估了喲,get 起來!那么接下來就是:學習 Python 的正確姿勢俗…

java bean驗證_javaBean--登錄驗證

packagecom.JAVABean;importjava.util.HashMap;importjava.util.Map;publiccla***egister{privateStringname;privateStringage;privateStringemail;privateMaperrorsnull;//聲明一個保存全部錯誤信息的map集合publicRegister(){//在構造方法中初始化屬性this.name""…

java讀取src xml文件路徑_Java獲取路徑方法相對路徑讀取xml文件方法

(1)、request.getRealPath("/");//不推薦使用獲取工程的根路徑(2)、request.getRealPath(request.getRequestURI());//獲取jsp的路徑,這個方法比較好用,可以直接在servlet和jsp中使用(3)、request.getSession().getServletContext().getRealPa…

釋放tcp連接的命令是_最實用的6個網絡命令,網絡故障不求人

很多弱電工程師朋友在項目中經常遇到一些網絡故障,需要通過一些一些命令去檢測、定位故障點,通過使用網絡命令,故障解決的工作取得了事半功倍的效果。下面就一起溫故而知新吧!一、ping命令(因特網包探索器)…

airpods2怎么查正品 ios11系統_拼多多AirPods2開箱評測,4種辦法教你驗真假,10個AirPods技巧教你玩...

大家好,Apple今天給大家分享一下拼多多上車AirPods 2無線充電盒版的經驗,順便整理了一波AirPods使用技巧,希望你用得上。入手理由自從去年10月份入手了iPhone XR,其實就挺想入款無線耳機的,所以一直在等AirPods升級換代…

java中for break的用法_java break語句的使用方法

在switch語中,break語句用來終止switch語句的執行。使程序 switch語句后的第一個語句 開始執行。在Java中,可以為每個代碼塊加一個括號,一個代碼塊通常 用大括號{}括起來的一段 代碼。加標號的格式break語句有兩種形式:無標簽和有標簽。無標簽的break語句用來跳出單…

windows文件保護_Windows系統下媲美時間機器的系統備份工具,統統免費

Windows和macOS系統誰更美?不同的人有不同的見解。但體驗過macOS之后很多電腦玩家會感嘆,TimeMachine時間機器太好用了,Windows下有沒有同類功能呢?TimeMachine提供了全盤完整備份、增量備份、文件歷史版本等功能。它們在Windows …

JAVA結課_一點心情,寫java結課考試之前

突然發現,已經好久沒有上來寫blog了,本來還以為能夠天天寫,后來發現,確是心有余力而不足啊。學期進入中段,課業慢慢多了,各種各樣的事情也接踵而來了。本學期的java課程也已經結課了,8周32個學時…

sql怎么撤回update_騰訊SQL“現役運動員”給你的實踐小技巧

引言SQL的全稱是Structured Query Language(結構化查詢語言),是一種古老而簡潔的程序設計語言。看似平平無奇,一直被各種吐槽,但卻有著眾多語言所難得的漫長壽命,并展現出極好的拓展性,在不同時期衍生出不同的子語言。…

mysql 同一帳號多次登錄_freeradius2.1.3 防止用戶帳號重復登錄

freeradius2.1.3 防止用戶帳號重復登錄一、修改 etc/raddb/sites-enabled 目錄中的default 及inner-tunnel 這兩個文件中的# Session database, used for checking Simultaneous-Use. Either the radutmp# or rlm_sql module can handle this.# The rlm_sql module is *much…

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

這章以后的四章都是介紹小程序樣式文件——wxss 的使用,分為以下三個部分一、尺寸方案二、樣式導入三、選擇器這章先來講wxss的尺寸單位—— rpxwxss的定義:WXSS( WeiXin Style Sheets )是?套樣式語言,用于描述 WXML 的組件樣式。與 CSS 相比…

java 最優算法_java 問題 求個最優算法

不知道是不是你要的package test;import java.util.Scanner;public class Number {/*** param args*/public static void main(String[] args) {int count 15;int val 5;Scanner input new Scanner(System.in);System.out.print("請輸入開始數:");int …

某一個接口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 自動關閉問題 沒有阻塞問題_微信新版本自動更新?趕緊關閉這個功能...

前不久安卓用戶也迎來了微信新版本的更新不少伙伴驚呼“猝不及防,一覺醒來發現微信自動更新了”一時間還沖上了話題的熱搜榜究竟是怎么肥事?小移了解到:原來是因為部分用戶設置了“微信自動更新”那么問題來了,如何關閉微信自動更…

java 動態生成getset_通過get、set方法,動態生成對象

最近在看Java的反射,把學習的東西整理一下,大家共同研究,有需要改進的地方,請大家指正。import java.beans.PropertyDescriptor;import java.lang.reflect.Field;import java.lang.reflect.Method;public class ReflectionTest {p…

list steam_在 Steam 中國版上玩單機游戲也會受到防沉迷系統管控

今天看到一個消息,Steam 中國版,也就是所謂的“蒸汽平臺”,最近正在測試。重點在于,哪怕你玩“理論上無需聯網”的單機游戲,游玩時間也會受到著名的防沉迷系統的限制。以下是我在動點科技編寫的新聞全文(原文鏈接是界面…