天天看點

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/

注:博衆家之所長,叢集英之荟萃。