tensorflow
TensorFlow GPU-Setup
Suche…
Einführung
In diesem Thema werden GPUs in TensorFlow eingerichtet und verwaltet.
Es wird davon ausgegangen, dass die GPU-Version von TensorFlow installiert wurde (weitere Informationen zur GPU-Installation finden Sie unter https://www.tensorflow.org/install/ ).
Vielleicht möchten Sie auch die offizielle Dokumentation einsehen : https://www.tensorflow.org/tutorials/using_gpu
Bemerkungen
Hauptquelle:
Führen Sie TensorFlow nur auf der CPU aus - verwenden Sie die Umgebungsvariable `CUDA_VISIBLE_DEVICES '.
Um sicherzustellen, dass eine GPU-Version nur auf CPU läuft, wird der TensorFlow-Prozess ausgeführt:
import os
os.environ["CUDA_VISIBLE_DEVICES"]="-1"
import tensorflow as tf
Weitere Informationen zu CUDA_VISIBLE_DEVICES
finden Sie in dieser Antwort oder in der CUDA-Dokumentation .
Führen Sie TensorFlow Graph nur auf der CPU aus - verwenden Sie "tf.config"
import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
Beachten Sie, dass diese Methode die TensorFlow Graph verhindert , dass mit Hilfe der GPU aber TensorFlow sperren noch die GPU - Gerät wie in diesem einen beschriebenen Problem auf dieser Methode geöffnet. Die Verwendung von CUDA_VISIBLE_DEVICES
scheint der beste Weg zu sein, um sicherzustellen, dass TensorFlow von der GPU-Karte ferngehalten wird (siehe diese Antwort ).
Verwenden Sie eine bestimmte Gruppe von GPU-Geräten
Um eine bestimmte Gruppe von GPU-Geräten zu verwenden, kann die Umgebungsvariable CUDA_VISIBLE_DEVICES
verwendet werden:
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0" # Will use only the first GPU device
os.environ["CUDA_VISIBLE_DEVICES"]="0,3" # Will use only the first and the fourth GPU devices
(Zitiert aus dieser Antwort ; weitere Informationen zu den CUDA-Umgebungsvariablen hier .)
Listen Sie die von TensorFlow verfügbaren Geräte im lokalen Prozess auf.
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
Steuern Sie die GPU-Speicherzuordnung
Standardmäßig reserviert TensorFlow den gesamten Speicher der GPU-Karte vor (was CUDA_OUT_OF_MEMORY
Warnung CUDA_OUT_OF_MEMORY
).
Um dies zu ändern, ist es möglich
Ändern Sie den vorab zugewiesenen Prozentsatz des Speichers mithilfe der
per_process_gpu_memory_fraction
.Ein Wert zwischen 0 und 1, der den Bruchteil von angibt
verfügbarer GPU-Speicher zur Vorbelegung für jeden Prozess. 1 bedeutet
Um den gesamten GPU-Speicher vorab zuzuordnen, bedeutet 0.5 den Vorgang
weist ~ 50% des verfügbaren GPU-Speichers zu.Deaktivieren Sie die Vorbelegung mithilfe der
allow_growth
. Die Speicherzuordnung wird mit zunehmender Nutzung zunehmen.Wenn true, ordnet der Allokator die gesamte angegebene Anzahl nicht vor
GPU-Speicherbereich, stattdessen klein anfangen und nach Bedarf wachsen.
Zum Beispiel:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
sess = tf.Session(config=config) as sess:
oder
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess= tf.Session(config=config):
Weitere Informationen zu den Konfigurationsoptionen finden Sie hier .