keras在使用gpu的時候有個特點,就是預設全部佔滿視訊記憶體。 這樣如果有多個模型都需要使用gpu跑的話,那麼限制是很大的,而且對於gpu也是一種浪費。因此在使用keras時需要有意識的設定執行時使用那塊顯示卡,需要使用多少容量。
這方面的設定一般有三種情況:
1. 指定顯示卡
2. 限制gpu用量
3. 即指定顯示卡又限制gpu用量
檢視gpu使用情況語句(linux)
# 1秒鐘重新整理一次
watch -n 1 nvidia-smi
import os
os.environ["cuda_visible_devices"] = "2"
這裡指定了使用編號為2的gpu,大家可以根據需要和實際情況來指定使用的gpu
import tensorflow as tf
import keras.backend
.tensorflow_backend as ktf
#進行配置,使用30%的gpu
config = tf.configproto()
config.gpu_options.per_process_gpu_memory_fraction = 0.3
session = tf.session(config=config)
# 設定session
ktf.set_session(session )
需要注意的是,雖然**或配置層面設定了對視訊記憶體占用百分比閾值,但在實際執行中如果達到了這個閾值,程式有需要的話還是會突破這個閾值。換而言之如果跑在乙個大資料集上還是會用到更多的視訊記憶體。以上的視訊記憶體限制僅僅為了在跑小資料集時避免對視訊記憶體的浪費而已。
import tensorflow as tf
import keras.backend
.tensorflow_backend as ktf
config = tf.configproto()
config.gpu_options.allow_growth=true #不全部佔滿視訊記憶體, 按需分配
session = tf.session(config=config)
# 設定session
ktf.set_session(sess)
這個比較簡單,就是講上面兩種情況連上即可。。。
import os
import tensorflow as tf
import keras.backend
.tensorflow_backend as ktf
# 指定第一塊gpu可用
os.environ["cuda_visible_devices"] = "0"
config = tf.configproto()
config.gpu_options.allow_growth=true #不全部佔滿視訊記憶體, 按需分配
sess = tf.session(config=config)
ktf.set_session(sess)
TF與keras指定執行時顯示卡及限制GPU用量
keras在使用gpu的時候有個特點,就是預設全部佔滿視訊記憶體。這樣如果有多個模型都需要使用gpu跑的話,那麼限制是很大的,而且對於gpu也是一種浪費。因此在使用keras時需要有意識的設定執行時使用那塊顯示卡,需要使用多少容量。這方面的設定一般有三種情況 1.指定顯示卡 2.限制gpu用量 3....
執行時庫路徑指定
這裡補充一點,動態庫 so 是直接可以呼叫的,並不會被編譯程序式。唯讀檔案系統,將其中乙個目錄通過nfs方式mount到其它地方 比如pc機 將動態庫放於該目錄下,並將該目錄指定為庫的搜尋路徑 export ld library path 程式執行時會呼叫該目錄下的庫,而不是去呼叫存放在唯讀檔案系統...
Linux 指定執行時動態庫路徑
方法一 在配置檔案 etc ld.so.conf 中指定動態庫搜尋路徑。每次編輯完該檔案後,都必須執行命令 ldconfig 使修改後的配置生效。我們通過例 1 來說明該方法。例 1 我們通過以下命令用源程式 pos conf.c 見程式 1 來建立動態庫 libpos.so gcc fpic sh...