Sie könnten verwenden tf.config.set_visible_devices
. Eine mögliche Funktion, mit der Sie festlegen können, ob und welche GPUs verwendet werden sollen, ist:
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)
Angenommen, Sie befinden sich auf einem System mit 4 GPUs und möchten nur zwei GPUs verwenden, die mit id = 0
und die mit id = 2
, dann lautet der erste Befehl Ihres Codes unmittelbar nach dem Importieren der Bibliotheken:
set_gpu([0, 2])
In Ihrem Fall können Sie die Funktion mit einer leeren Liste aufrufen, um nur die CPU zu verwenden :
set_gpu([])
Der Vollständigkeit halber können Sie verwenden, wenn Sie vermeiden möchten, dass durch die Laufzeitinitialisierung der gesamte Speicher auf dem Gerät zugewiesen wird tf.config.experimental.set_memory_growth
. Schließlich lautet die Funktion zum Verwalten der zu verwendenden Geräte, die den GPU-Speicher dynamisch belegen, wie folgt:
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)