Вы могли бы использовать tf.config.set_visible_devices
. Одна из возможных функций, которая позволяет вам установить, какие графические процессоры использовать, и
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
. Наконец, функция управления используемыми устройствами, динамически занимающая память графического процессора, становится следующей:
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)