tensorflow python 多個GPU并行處理

神經(jīng)網(wǎng)絡對于電腦硬件非常依賴,尤其是顯卡初坠。顯卡的優(yōu)劣決定了訓練網(wǎng)絡的規(guī)模上限和訓練速度和簸。而對于一般的個人,甚至實驗室來講碟刺,配備多個性能較好的gpu要比配備單個頂級gpu劃算很多锁保。如果配備了多個gpu,在訓練的時候如果沒有指定device的話半沽,你會發(fā)現(xiàn)你只有一個gpu的使用率上來了爽柒,其他的gpu都是被分配了一部分或全部的顯存,但是使用率為0者填。這就有點浪費了嘛~ ?那么裝備了一個以上的gpu之后浩村,能否把這些gpu們充分調(diào)動起來,多個gpu同時進行訓練呢幔托?


瞎JB貼個圖

答案當然是可以的穴亏,而且很簡單蜂挪≈靥簦可惜tensorflow上的官網(wǎng)沒寫(至少我沒看見嗓化。。) 最下邊的for loop來loop過device會讓每一個gpu挨個運行一次指令谬哀,這肯定不是我們想要的刺覆。

如果要調(diào)用多個gpu的話,你先要知道自己有幾塊gpu史煎,并且它們的device_name是什么谦屑,才好手動分配。在上面tensorflow網(wǎng)頁上有顯示gpu device mapping的代碼篇梭,運行一下就知道了:

# Creates a graph.?

a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')?

b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')?

c = tf.matmul(a, b)?

# Creates a session with log_device_placement set to True.?

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))?

# Runs the op.?

print(sess.run(c))

比如我的就是GPU:0 和 GPU:1氢橙。如果你打開NVIDIA X Server Setting的話也能看到這兩個gpu。

下面重點來了恬偷,找到你的gpu的device_name以后怎么辦悍手?你需要指定哪一段代碼用哪個gpu運行。用tf.device()命令袍患。比如我再訓練一個結(jié)構(gòu)的時候要用到gpu:0坦康,那就這么開頭:

with tf.device('/device:GPU:0'): ?#指定gpu

? ? with tf.Graph().as_default(): ?# 配置你的graph

? ? ? ? with tf.Session(config=tf.ConfigProto(log)device_placement=True)) as sess: ?# 配置你的session

? ? ? ? ? ? xxxxxx ?# 訓練

同時我要訓練另外一個網(wǎng)絡,只要把上面的GPU:0 換成 GPU:1就行了(我的第二塊gpu名字是GPU:1)诡延。

但是光這樣還不夠滞欠。如果要用不同的進程調(diào)用不同的GPU,你還需要設置Cuda里的環(huán)境變量CUDA_VISIBLE_DEVICE肆良。如果你用的命令行訓練的話筛璧,只需要分別打開兩個窗口分別進行訓練就可以了。比如:

用命令行:

CUDA_VISIBLE_DEVICES=0 python script_one.py

CUDA_VISIBLE_DEVICES=1 python script_two.py

好像也可以兩個gpu一起訓練一個:

CUDA_VISIBLE_DEVICES=0,1 python script.py ?# 這個沒測試過 stackoverflow上有大神說可以

如果你用IDE惹恃,比如pycharm的話夭谤,可以分別打開兩個文件頁:

用Pycharm:

import os?

os.environ["CUDA_VISIBLE_DEVICES"] = "0" ?# 第一個文件配置device GPU:0里開始輸入這一行

os.environ["CUDA_VISIBLE_DEVICES"] = "1" ?# 同理第二個文件配置GPU:1

然后分別運行兩個文件,就可以做到同時訓練多個模型了座舍。再看你的NVIDIA X Server就會看到兩個gpu使用率都起來了~



Ref:

https://www.tensorflow.org/guide/using_gpu

https://github.com/tensorflow/nmt/issues/60

https://stackoverflow.com/questions/44135538/tensorflow-using-2-gpu-at-the-same-time

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沮翔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子曲秉,更是在濱河造成了極大的恐慌采蚀,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件承二,死亡現(xiàn)場離奇詭異榆鼠,居然都是意外死亡,警方通過查閱死者的電腦和手機亥鸠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門妆够,熙熙樓的掌柜王于貴愁眉苦臉地迎上來识啦,“玉大人,你說我怎么就攤上這事神妹⊥窍” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵鸵荠,是天一觀的道長冕茅。 經(jīng)常有香客問我,道長蛹找,這世上最難降的妖魔是什么姨伤? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮庸疾,結(jié)果婚禮上乍楚,老公的妹妹穿的比我還像新娘。我一直安慰自己届慈,他們只是感情好徒溪,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拧篮,像睡著了一般词渤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上串绩,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天缺虐,我揣著相機與錄音,去河邊找鬼礁凡。 笑死高氮,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的顷牌。 我是一名探鬼主播剪芍,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窟蓝!你這毒婦竟也來了罪裹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤运挫,失蹤者是張志新(化名)和其女友劉穎状共,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谁帕,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡峡继,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了匈挖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碾牌。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡康愤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舶吗,到底是詐尸還是另有隱情征冷,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布裤翩,位于F島的核電站资盅,受9級特大地震影響调榄,放射性物質(zhì)發(fā)生泄漏踊赠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一每庆、第九天 我趴在偏房一處隱蔽的房頂上張望筐带。 院中可真熱鬧,春花似錦缤灵、人聲如沸伦籍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帖鸦。三九已至,卻和暖如春胚嘲,著一層夾襖步出監(jiān)牢的瞬間作儿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工馋劈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留攻锰,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓妓雾,卻偏偏與公主長得像娶吞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子械姻,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容