Ви можете використовувати tf.config.set_visible_devices
. Однією з можливих функцій, яка дозволяє встановити, чи і які GPU використовувати:
import tensorflow as tf
def set_gpu(gpu_ids_list):
gpus = tf.config.list_physical_devices('GPU')
if gpus:
try:
gpus_used = [gpus[i] for i in gpu_ids_list]
tf.config.set_visible_devices(gpus_used, 'GPU')
logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPU")
except RuntimeError as e:
# Visible devices must be set before GPUs have been initialized
print(e)
Припустимо, ви перебуваєте в системі з 4 графічними процесорами, і ви хочете використовувати лише два графічні процесори, один з id = 0
і один з id = 2
, тоді першою командою вашого коду, відразу після імпорту бібліотеки, буде:
set_gpu([0, 2])
У вашому випадку, щоб використовувати лише центральний процесор, ви можете викликати функцію з порожнього списку :
set_gpu([])
Для повноти, якщо ви хочете уникнути, що ініціалізація виконання буде виділяти всю пам'ять на пристрої, ви можете використовувати tf.config.experimental.set_memory_growth
. Нарешті, функцією управління, якими пристроями користуватися, динамічно займаючи пам'ять GPU, стає:
import tensorflow as tf
def set_gpu(gpu_ids_list):
gpus = tf.config.list_physical_devices('GPU')
if gpus:
try:
gpus_used = [gpus[i] for i in gpu_ids_list]
tf.config.set_visible_devices(gpus_used, 'GPU')
for gpu in gpus_used:
tf.config.experimental.set_memory_growth(gpu, True)
logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPU")
except RuntimeError as e:
# Visible devices must be set before GPUs have been initialized
print(e)