Wie können Sie in der Keras-Bibliothek (oder im Tensorflow) programmieren, um das Training auf mehrere GPUs aufzuteilen? Angenommen, Sie befinden sich in einer Amazon ec2-Instanz mit 8 GPUs und möchten alle verwenden, um schneller zu trainieren. Ihr Code ist jedoch nur für eine einzelne CPU oder GPU bestimmt.
python
deep-learning
tensorflow
keras
gpu
Hector Blandin
quelle
quelle
Antworten:
Aus den Keras-FAQs:
https://keras.io/getting-started/faq/#how-can-i-run-a-keras-model-on-multiple-gpus
Unten finden Sie kopierten Code, um die Datenparallelität zu aktivieren. Das heißt, dass jede Ihrer GPUs eine andere Teilmenge Ihrer Daten unabhängig verarbeitet.
Beachten Sie, dass dies zum Zeitpunkt des Schreibens nur für das Tensorflow-Backend gültig zu sein scheint.
Aktualisierung (Februar 2018) :
Keras akzeptiert jetzt die automatische GPU-Auswahl mit multi_gpu_model, sodass Sie die Anzahl der GPUS nicht mehr fest codieren müssen. Details in dieser Pull-Anfrage . Mit anderen Worten, dies aktiviert Code, der so aussieht:
Aber um mehr explizit , können Sie mit etwas kleben wie:
Bonus :
Um zu überprüfen, ob Sie wirklich alle Ihre GPUs, insbesondere die von NVIDIA, verwenden, können Sie Ihre Nutzung im Terminal überwachen.
Verweise:
quelle
multi_gpu_model(model, gpus=None)
bei nur 1 GPU? Es wäre cool, wenn es sich automatisch an die Anzahl der verfügbaren GPUs anpassen würde.TensorFlow Verwenden von GPUs
Hier ist der Beispielcode für die Verwendung, sodass für jede Aufgabe die Liste mit Geräten / Geräten angegeben wird:
tf verwendet standardmäßig GPU für die Berechnung, auch wenn es sich um eine CPU handelt (sofern eine unterstützte GPU vorhanden ist). Sie können also einfach eine for - Schleife ausführen: "für d in ['/ gpu: 1', '/ gpu: 2', '/ gpu: 3' ... '/ gpu: 8',]:" und in der "tf.device (d)" sollte alle GPU-Ressourcen Ihrer Instanz enthalten. Tf.device () wird also tatsächlich verwendet.
Skalieren des Keras-Modelltrainings auf mehrere GPUs
Für Keras mit Mxnet als args.num_gpus , wobei num_gpus die Liste Ihrer erforderlichen GPUs ist.
Vor allem Uber Open Source Horovod vor kurzem und ich denke, ist toll:
Horovod
quelle
Grundsätzlich können Sie das folgende Beispiel nehmen. Alles, was Sie brauchen, ist die Angabe der CPU- und GPU-Verbrauchswerte nach dem Import von Keras.
Danach würden Sie das Modell passen.
Schließlich können Sie die Verbrauchswerte verringern, nicht die Arbeit an den Obergrenzen.
quelle