TensorFlow GPU和視訊記憶體資源的配置

2021-10-25 18:43:58 字數 1534 閱讀 6567

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...