GPU運(yùn)行Tensorflow的幾點(diǎn)建議:
1.在運(yùn)行之前先查看GPU的使用情況:
指令:nvidia-smi 備注:查看GPU此時(shí)的使用情況
或者
指令:watch nvidia-smi 備注:實(shí)時(shí)返回GPU使用情況
2.指定GPU訓(xùn)練:
方法一蜓谋、在python程序中設(shè)置:
代碼:os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘0’ 備注:使用 GPU 0
代碼:os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘0,1’ 備注:使用 GPU 0,1
方法二炭分、在執(zhí)行python程序時(shí)候:
指令:CUDA_VISIBLE_DEVICES=2 python yourcode.py
指令:CUDA_VISIBLE_DEVICES=0,1 python yourcode.py
備注:‘=’的左右不允許有空格
注:TensorFlow會(huì)默認(rèn)直接占滿我們模型部署的GPU的存儲(chǔ)資源桃焕,只允許一個(gè)小內(nèi)存的程序也會(huì)占用所有GPU資源。因此有的時(shí)候我們通過(guò)nvidia-smi查看GPU狀態(tài)的時(shí)候捧毛,會(huì)發(fā)現(xiàn)有些GPU的計(jì)算利用率很低或者計(jì)算利用率為0覆旭,但是存儲(chǔ)被占滿了,而這個(gè)時(shí)候其他人也不能使用這塊GPU岖妄。但是現(xiàn)在公司的問(wèn)題是模型多型将,卡不夠用,所有只能“文明”使用GPU荐虐,如果設(shè)置為允許動(dòng)態(tài)增長(zhǎng)的話七兜,這樣這個(gè)GPU沒(méi)有被占的存儲(chǔ)還可以被其他人使用。
3.兩種限定GPU占用量的方法:
方法一、設(shè)置定量的GPU顯存使用量:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4 # 占用GPU40%的顯存
session = tf.Session(config=config)
方法二涛菠、設(shè)置最小的GPU顯存使用量,動(dòng)態(tài)申請(qǐng)顯存:(建議)
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)
注:還有一個(gè)問(wèn)題就是計(jì)算資源閑置迄薄,發(fā)現(xiàn)計(jì)算資源閑置的一個(gè)很簡(jiǎn)單的方法就是使用命令nvidia-smi查看GPU的使用狀態(tài),只要GPU的計(jì)算時(shí)間使用率沒(méi)有達(dá)到80%-100%,新症,都是對(duì)GPU的極大浪費(fèi)金抡。
4.將數(shù)據(jù)的處理使用多線程的queue在CPU上進(jìn)行,使得GPU隨時(shí)都有充足的數(shù)據(jù)使用巫击,更專注于訓(xùn)練,這樣可以大幅度提升模型的訓(xùn)練速度。
with tf.device(‘/cpu:0’):
function to get and process images or data.
distorted_inputs = load_and_distort_images()
5.程序中跟訓(xùn)練無(wú)關(guān)的盡量不要sess.run()操作
6.訓(xùn)練代碼的優(yōu)化等,可參考:
http://d0evi1.com/tensorflow/performance/
作者:Peanut_范
來(lái)源:CSDN
原文:https://blog.csdn.net/u013841196/article/details/82468884
版權(quán)聲明:本文為博主原創(chuàng)文章翔冀,轉(zhuǎn)載請(qǐng)附上博文鏈接计福!