tensorflow2 gpu使用

待補充圖片和1.4

1. tensorflow2

默認情況下,tensorflow2會自動選擇設備,如果有GPU,優先使用GPU,且自動佔滿多塊GPU顯存。

1.1 設置使用cpu

  1. os.environ['CUDA_VISIBLE_DEVICES'] = "-1"
  2. tf.config.experimental.set_visible_devices(devices=cpus[0], device_type='CPU')

1.2 設置使用GPU個數

首先可以先看看自己設備的GPU和CPU情況

# GPU
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
print(os.environ['CUDA_VISIBLE_DEVICES'])
# CPU
cpus = tf.config.experimental.list_physical_devices(device_type='CPU')
  • 如果有多塊GPU,可以設置使用其中的幾塊,方法有三種:
    • 設置當前程序可見的設備範圍:tf.config.experimental.set_visible_devices(devices=gpus[2:4], device_type='GPU'),設置設備2,3,4可見,當前程序只會使用自己可見的設備,不可見的設備不會被當前程序使用
    • 在終端使用環境變量限制GPU:export CUDA_VISIBLE_DEVICES=2,3
    • 在代碼中指定GPU設備(類似於第一種方法):os.environ['CUDA_VISIBLE_DEVICES'] = "2,3"

1.3設置使用GPU顯存大小

tensorflow提供了兩種限定顯存的方法:

  1. 動態申請內存,需要多少,申請多少
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)
  1. 限制消耗固定大小的顯存(程序不會超出限定的顯存大小,若超報錯)
# 限制使用2G顯存
tf.config.experimental.set_virtual_device_configuration(
    gpus[0],
    [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=2048)]
)

1.4 單GPU模擬多GPU環境

當只有一塊GPU時,假如顯存爲10G,但我們的程序可能只佔用5G,那麼剩下的5G不就浪費了,這時可以將這塊10G的顯存分成兩塊,這樣相當於分佈式使用2塊GPU

tf.config.experimental.set_virtual_device_configuration(
    gpus[0],
    [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=2048),
     tf.config.experimental.VirtualDeviceConfiguration(memory_limit=2048)])

按照上述,2塊GPU也可以當做4塊使用,具體方法待補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章