Ich habe einen Plan, um TensorFlow zu verwenden, und ich sah TensorFlow kann GPUs für Training und Tests verwenden. In einer Cluster-Umgebung kann jede Maschine 0 oder 1 oder mehr GPUs haben, und ich möchte meine TensorFlow-Grafik auf möglichst vielen Maschinen in GPUs umwandeln.Wie erhält man die aktuell verfügbaren GPUs im Tensorflow?
Ich fand, dass, wenn tf.Session()
läuft TensorFlow in den Log-Meldungen wie folgenden Informationen über GPU gibt:
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 kann ich über die aktuellen verfügbaren GPU Informationen erhalten von TensorFlow? Ich kann geladene GPU-Informationen aus dem Protokoll abrufen, aber ich möchte das auf eine anspruchsvollere, programmatische Weise tun. Ich könnte auch GPUs absichtlich mit der Umgebungsvariablen CUDA_VISIBLE_DEVICES einschränken, also möchte ich keine Möglichkeit kennen, GPU-Informationen vom Betriebssystemkern zu bekommen.
Kurz gesagt, ich möchte eine Funktion wie tf.get_available_gpus()
, die ['/gpu:0', '/gpu:1']
zurückgibt, wenn zwei GPUs in der Maschine verfügbar sind. Wie kann ich das umsetzen?
PS, wenn diese Methode jemals verschoben/umbenannt wird, würde ich in tensorflow/python/plattform/test.py suchen: is_gpu_available, da das ziemlich oft verwendet wird –
Gibt es eine Möglichkeit, die Geräte frei und insgesamt Speicher zu bekommen? Ich sehe, dass es ein memory_limit Feld in den DeviceAttributes gibt und ich denke, es ist der freie Speicher und nicht – aarbelle
Ich erinnere mich, dass für frühere Versionen als 1 Tensorflow einige Informationen über gpus drucken würde, wenn es in Python importiert wurde. Wurden diese Nachrichten in den neueren Tensorflow-Versionen entfernt? (daher Ihr Vorschlag der einzige Weg, um GPU Zeug zu überprüfen)? –