Tensorflow:GPU使用幾點建議

GPU運行Tensorflow的幾點建議:

1.在運行之前先查看GPU的使用情況:
指令:nvidia-smi 備註:查看GPU此時的使用情況
或者
指令:watch nvidia-smi 備註:實時返回GPU使用情況

2.指定GPU訓練:
方法一、在python程序中設置:
代碼:os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘0’ 備註:使用 GPU 0
代碼:os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘0,1’ 備註:使用 GPU 0,1
方法二、在執行python程序時候:
指令:CUDA_VISIBLE_DEVICES=2 python yourcode.py
指令:CUDA_VISIBLE_DEVICES=0,1 python yourcode.py
備註:‘=’的左右不允許有空格


**注:**TensorFlow會默認直接佔滿我們模型部署的GPU的存儲資源,只允許一個小內存的程序也會佔用所有GPU資源。因此有的時候我們通過nvidia-smi查看GPU狀態的時候,會發現有些GPU的計算利用率很低或者計算利用率爲0,但是存儲被佔滿了,而這個時候其他人也不能使用這塊GPU。但是現在公司的問題是模型多,卡不夠用,所有隻能“文明”使用GPU,如果設置爲允許動態增長的話,這樣這個GPU沒有被佔的存儲還可以被其他人使用。


3.兩種限定GPU佔用量的方法:
方法一、設置定量的GPU顯存使用量:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4 # 佔用GPU40%的顯存
session = tf.Session(config=config)
方法二、設置最小的GPU顯存使用量,動態申請顯存:(建議)
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)


注:還有一個問題就是計算資源閒置,發現計算資源閒置的一個很簡單的方法就是使用命令nvidia-smi查看GPU的使用狀態,只要GPU的計算時間使用率沒有達到80%-100%,,都是對GPU的極大浪費。


4.將數據的處理使用多線程的queue在CPU上進行,使得GPU隨時都有充足的數據使用,更專注於訓練,這樣可以大幅度提升模型的訓練速度。
with tf.device(‘/cpu:0’):
# function to get and process images or data.
distorted_inputs = load_and_distort_images()

5.程序中跟訓練無關的儘量不要sess.run()操作

6.訓練代碼的優化等,可參考:
http://d0evi1.com/tensorflow/performance/


注:博衆家之所長,集羣英之薈萃。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章