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 .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow