Ich habe vor, verteiltes TensorFlow zu verwenden, und ich habe gesehen, dass TensorFlow GPUs zum Trainieren und Testen verwenden kann. In einer Clusterumgebung kann jeder Computer 0 oder 1 oder mehr GPUs haben, und ich möchte mein TensorFlow-Diagramm auf so vielen Computern wie möglich in GPUs ausführen.
Ich habe festgestellt, dass tf.Session()
TensorFlow beim Ausführen von Informationen Informationen zur GPU in den folgenden Protokollmeldungen enthält:
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)
Meine Frage ist, wie ich von TensorFlow Informationen über die aktuell verfügbare GPU erhalte. Ich kann geladene GPU-Informationen aus dem Protokoll abrufen, möchte dies jedoch auf eine komplexere, programmgesteuerte Weise tun. Ich könnte GPUs auch absichtlich mithilfe der Umgebungsvariablen CUDA_VISIBLE_DEVICES einschränken, daher möchte ich nicht wissen, wie GPU-Informationen vom Betriebssystemkernel abgerufen werden können.
Kurz gesagt, ich möchte, dass eine solche Funktion zurückgegeben tf.get_available_gpus()
wird, ['/gpu:0', '/gpu:1']
wenn zwei GPUs in der Maschine verfügbar sind. Wie kann ich das umsetzen?
quelle
Free memory
für mich ein Feld mit verwendettensorflow1.1
. In Python :from tensorflow.python.client import device_lib
, danndevice_lib.list_local_devices()
Sie können alle Gerätelisten mit folgendem Code überprüfen:
quelle
python3 -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
cannot import name 'format_exc' from 'traceback'
Es gibt auch eine Methode im Test util . Alles was getan werden muss ist:
und / oder
Suchen Sie in den Tensorflow-Dokumenten nach Argumenten.
quelle
tf.test.is_gpu_available()
wird zurückkehrenTrue
In TensorFlow 2.0 können Sie Folgendes verwenden
tf.config.experimental.list_physical_devices('GPU')
:Wenn Sie zwei GPUs installiert haben, wird Folgendes ausgegeben:
Ab 2.1 können Sie fallen lassen
experimental
:Sehen:
quelle
'GPU'
zu'XLA_GPU'
.Die akzeptierte Antwort gibt Ihnen die Anzahl der GPUs an, weist aber auch den gesamten Speicher dieser GPUs zu. Sie können dies vermeiden, indem Sie eine Sitzung mit festem, niedrigerem Speicher erstellen, bevor Sie device_lib.list_local_devices () aufrufen, was für einige Anwendungen möglicherweise unerwünscht ist.
Am Ende habe ich nvidia-smi verwendet, um die Anzahl der GPUs zu ermitteln, ohne ihnen Speicher zuzuweisen.
quelle
Abgesehen von der hervorragenden Erklärung von Mrry, wo er die Verwendung vorgeschlagen hat,
device_lib.list_local_devices()
kann ich Ihnen zeigen, wie Sie über die Befehlszeile nach GPU-bezogenen Informationen suchen können.Da derzeit nur Npidias GPus für NN-Frameworks funktioniert, werden nur diese beantwortet. Nvidia verfügt über eine Seite, auf der dokumentiert wird, wie Sie die / proc-Dateisystemschnittstelle verwenden können, um Laufzeitinformationen zum Treiber, zu installierten NVIDIA-Grafikkarten und zum AGP-Status abzurufen.
Sie können dies also über die Befehlszeile ausführen
cat /proc/driver/nvidia/gpus/0/information
und Informationen zu Ihrer ersten GPU anzeigen. Es ist einfach, dies von Python aus auszuführen und Sie können auch die zweite, dritte und vierte GPU überprüfen, bis sie fehlschlägt.Auf jeden Fall ist Mrrys Antwort robuster und ich bin nicht sicher, ob meine Antwort auf einem Nicht-Linux-Computer funktioniert, aber die Seite von Nvidia enthält andere interessante Informationen, über die nicht viele Menschen Bescheid wissen.
quelle
Folgendes funktioniert in Tensorflow 2:
Ab 2.1 können Sie Folgendes löschen
experimental
:https://www.tensorflow.org/api_docs/python/tf/config/list_physical_devices
quelle
Ich habe eine GPU
NVIDIA GTX GeForce 1650 Ti
in meinem Computer mit aufgerufentensorflow-gpu==2.2.0
Führen Sie die folgenden zwei Codezeilen aus:
Ausgabe:
quelle
Verwenden Sie diesen Weg und überprüfen Sie alle Teile:
quelle
Stellen Sie sicher, dass auf Ihrem GPU-unterstützenden Computer die neueste TensorFlow 2.x- GPU installiert ist. Führen Sie den folgenden Code in Python aus:
Wird eine Ausgabe bekommen sieht aus wie,
quelle