tensorflow 怎麼配置非數據並行分散式?
這裡是 AI 研習社,我們的問答版塊已經正式推出了!歡迎大家來多多交流~
https://club.leiphone.com/page/question
社長為你推薦來自 AI 研習社問答社區的精華問答。如有你也有問題,歡迎進社區提問。
話不多說,直接上題
@iresine問:tensorflow 怎麼配置非數據並行分散式?
假設模型有兩個conv層和1個fc層,有3台伺服器每台各一塊顯卡,請問要怎麼實現把計算圖拆成3部分,每塊顯卡分別計算一個層,而不是把計算圖完整複製3份放到3塊卡上獨立計算?
來自社友的回答
@王奇文:
你指的是in-graph模式的模型並行吧?思考以下幾個問題:
cpu和gpu的優勢和劣勢分別是什麼?cpu擅長指定操作,邏輯判斷,gpu擅長矩陣運算,二者相互補充,一邊用cpu執行參數更新、邏輯運算,gpu執行矩陣運算
tf的分散式實現有哪些類別?單機單卡,單機多卡,多機多卡。此處適用於多機多卡(單卡),3個伺服器分成兩類:參數伺服器ps,計算伺服器work,中間通過gRPC調用、傳輸
2個卷積核1個fc真的有必要分散在三台機器嗎?如果純粹為了做實驗,可以參考下tf官方的in-graph實現。基本方法是:
定義網路結構時,指定tf.device(""),如:
withtf.device("/job:ps/task:0"):#參數定義在機器D上
w=tf.get_variable("w",(2,2),tf.float32,initializer=tf.constant_initializer(2))
b=tf.get_variable("b",(2,2),tf.float32,initializer=tf.constant_initializer(5))
withtf.device("/job:worker/task:0/cpu:0"):#在機器A cpu上運行
addwb=w+b
withtf.device("/job:worker/task:1/cpu:0"):#在機器B cpu上運行
mutwb=w*b
withtf.device("/job:worker/task:2/cpu:0"):#在機器C cpu上運行
divwb=w/b


※告別選擇困難症,我來帶你剖析這些深度學習框架基本原理
※CVPR18 最佳論文演講:研究任務之間的聯繫才是做遷移學習的正確姿勢
TAG:AI研習社 |