gpu的編號在終端輸入nvidia-smi檢視。
(1)在終端設定
# 設定執行該程式可見的gpu
cuda_visible_devices = 0,1,2 python your_file.py # 指定0#,1#,2#gpu
cuda_visible_devices = "3,4" python your_file.py # 指定3#,4#gpu
cuda_visible_devices = "" # 不使用gpu
(2)在python**設定
設定程式執行中可見的gpu裝置。
import os
os.environ["cuda_visible_devices"] = "0"
對於某個特定操作指定裝置,則可以與tf.device一起使用來建立裝置上下文,並且該上下文中的所有操作都將在同一指定裝置上執行 。
with tf.device('/cpu:0'):
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)
print(c)
(1)直接使用
會預設占用機器可用顯示卡剩餘的所有gpu視訊記憶體,即使根本用不到那麼多。
with tf.session() as sess:
由於直接占用全部視訊記憶體,只要模型大小不超過視訊記憶體大小就不會產生視訊記憶體碎片。適合個人使用整個伺服器,或部署應用。
(2)分配一定比例的視訊記憶體
建立session時設定最多占用的視訊記憶體,避免其它使用者沒有視訊記憶體可以用。
config = tf.configproto()
config.gpu_options.per_process_gpu_memory_fraction = 0.9 # 占用90%的視訊記憶體
sess = tf.session(config = config)
適合多使用者共享伺服器,但是可能存在視訊記憶體浪費的情況。
(3)動態申請視訊記憶體
在程式執行中動態申請視訊記憶體,但是不會釋放視訊記憶體。若申請不到可用的視訊記憶體就會報錯。
config = tf.configproto()
config.gpu_options.allow_growth=true
with tf.session(config=config) as sess:
適合多使用者共享伺服器,形式上避免了視訊記憶體浪費,但很可能在執行程式時被其他使用者搶占視訊記憶體資源,導致程式崩潰。
一些好的習慣
1. 執行程式前先檢視gpu和視訊記憶體使用情況。
參考鏈結
tensorflow如何使用gpu訓練(筆記)
tensorflow筆記:訓練模型的時候如何指定gpu進行訓練
離線安裝tensorflow gpu
前言 安裝前先確定電腦可以使用gpu執行tensorflow,否則浪費時間。nvidia 英偉達 官網官網檢視顯示卡是否支援gpu執行,compute capability需要在3.0及以上,否則安裝後,不能用gpu執行程式,會自動呼叫cpu執行。nvidia官網 密碼 0pmq 檔案列表 anac...
Tensorflow gpu版本安裝
這裡安裝想要嘗試最新的cuda10.1,但是失敗了,得到的教訓就是要嚴格的按照官方的版本要求。因為tensorflow1.13是基於cuda10的並沒有整合10.1,個人推測,兩家是不同的公司cuda10.1正常不會想到要相容自己的上層應用,或者s是tf直接寫死的需要cuda10。不管怎樣,現在總結...
TensorFlow GPU環境搭建
你們可能看不懂,因為主要是為了自己看 笑哭 顯示卡product gp104 geforce gtx 1080 10de 1b80 版本 ubantu 18.04 anaconda3 nvidia 930 cuda 91 cudnn 7.04 tensorflow gpu 1.13.1 一 uban...