分布式TensorFlow集群local server使用详解
通過local server理解分布式TensorFlow集群的應(yīng)用與實(shí)現(xiàn)。
??簡(jiǎn)介
TensorFlow從0.8版本開始,支持分布式集群,并且自帶了local server方便測(cè)試。
Local server和分布式服務(wù)的接口一樣,我們將從local server入手,詳細(xì)解讀分布式機(jī)器學(xué)習(xí)集群的用法。
Local server的最簡(jiǎn)單用法
TensorFlow官方文檔提供了local server的最簡(jiǎn)單用法,安裝TensorFlow后直接在交互式Python終端中執(zhí)行即可。
注意這里server和client啟動(dòng)在同一個(gè)進(jìn)程了,為什么這么說呢?我們都了解TensorFlow客戶端可以用Python或C++編寫,本質(zhì)上就是構(gòu)建一個(gè)可執(zhí)行的Graph,而Graph需要在Session中執(zhí)行,因此代碼中只要包含Session()的就是客戶端,這時(shí)通過server.target選擇本地剛創(chuàng)建的server來執(zhí)行op。大家可能會(huì)好奇server.target是什么,我們?cè)诮K端可以輸出是'grpc://localhost:38612',一個(gè)字符串表示服務(wù)端的ip和端口,同時(shí)也確認(rèn)它的協(xié)議是Google開源的gRPC。
如果你愿意搭建環(huán)境測(cè)試,只要一行命令即可docker run -it tobegit3hub/ml-dev bash,其中ml-dev是我開發(fā)的機(jī)器學(xué)習(xí)鏡像包含大量工具庫(kù),當(dāng)然你也可以使用官方的tensorflow/tensorflow鏡像。
啟動(dòng)local server服務(wù)
前面提到local server和client在同一個(gè)進(jìn)程,輸出結(jié)果后服務(wù)端和客戶端都退出了,實(shí)際上服務(wù)端應(yīng)該以daemon的形式提供服務(wù),local server也可以的。
我們編寫local_server.py文件,注意這里調(diào)用join()是為了避免進(jìn)程退出,同樣會(huì)暴露一個(gè)grpc的端口。
啟動(dòng)客戶端服務(wù)
啟動(dòng)local server后,我們可以在本地起一個(gè)客戶端來調(diào)用,注意這里local server的地址是
注意要啟動(dòng)客戶端,我們需要開另一個(gè)終端進(jìn)入local server的容器,例如“docker exec -it 100cd4fb5bca bash”。
我們看到constant的字符串已經(jīng)正常輸出,有人發(fā)現(xiàn)這與單機(jī)版的TensorFlow例子很像,實(shí)際上Session的參數(shù)不同,并且這個(gè)op是在local server進(jìn)程中執(zhí)行并返回的,如果使用錯(cuò)誤端口就會(huì)報(bào)RPC請(qǐng)求連接錯(cuò)誤。
最后總結(jié)
我們總結(jié)一下,TensorFlow的local server實(shí)現(xiàn)了與分布式server一樣的接口,通過了解local server的使用和實(shí)現(xiàn)我們就更容易理解分布式TensorFlow的使用了。其中server對(duì)象有比較重要的概念就是server.targe,客戶端通過targe找到對(duì)應(yīng)的集群,還有兩個(gè)函數(shù)分別是server.start()和server.join(),就是啟動(dòng)服務(wù)和避免進(jìn)程退出的。
本文介紹了分布式TensorFlow集群中的local server,歡迎大家關(guān)注,下期將介紹完整分布式集群的部署和應(yīng)用。????
總結(jié)
以上是生活随笔為你收集整理的分布式TensorFlow集群local server使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 禁用GPU版本TensorFlow,切换
- 下一篇: 理解和实现分布式TensorFlow集群