2016-05-02 17 views
8

-Setup zu verwenden:Wie Keras mit Theano ermöglichen mehrere GPUs

  • Mit einem Amazon Linux-System mit einer Nvidia GPU
  • Ich verwende Keras 1.0.1
  • Lauf Theano v0.8.2 Backend
  • mit CUDA und CuDNN
  • THEANO_FLAGS = "device = GPU, floatX = float32, lib.cnmem = 1"

Alles funktioniert gut, aber ich habe bei großen Modellen keinen Videospeicher mehr, wenn ich die Stapelgröße vergrößere, um das Training zu beschleunigen. Ich Figur zu einem 4-GPU-System in der Theorie bewegt entweder Speicher insgesamt oder ermöglichen kleinere Chargen verbessern würde schneller zu bauen, aber die die nvidia Statistiken beobachtet, kann ich sehen, nur eine GPU standardmäßig verwendet wird:

+------------------------------------------------------+ 
| NVIDIA-SMI 361.42  Driver Version: 361.42   |   
|-------------------------------+----------------------+----------------------+ 
| GPU Name  Persistence-M| Bus-Id  Disp.A | Volatile Uncorr. ECC | 
| Fan Temp Perf Pwr:Usage/Cap|   Memory-Usage | GPU-Util Compute M. |  
|===============================+======================+======================| 
| 0 GRID K520   Off | 0000:00:03.0  Off |     N/A | 
| N/A 44C P0 45W/125W | 3954MiB/4095MiB |  94% Default  | 
+-------------------------------+----------------------+----------------------+ 
| 1 GRID K520   Off | 0000:00:04.0  Off |    N/A | 
| N/A 28C P8 17W/125W |  11MiB/4095MiB |  0% Default | 
+-------------------------------+----------------------+----------------------+ 
| 2 GRID K520   Off | 0000:00:05.0  Off |    N/A | 
| N/A 32C P8 17W/125W |  11MiB/4095MiB |   0% Default | 
+-------------------------------+----------------------+----------------------+ 
| 3 GRID K520   Off | 0000:00:06.0  Off |    N/A |  
| N/A 29C P8 17W/125W |  11MiB/4095MiB |   0% Default | 
+-------------------------------+----------------------+----------------------+ 

+-----------------------------------------------------------------------------+ 
| Processes:              GPU Memory | 
| GPU  PID Type Process name        Usage  | 
|=============================================================================| 
| 0  9862 C python34          3941MiB | 

I Mit rohen Theano können Sie manuell mehrere GPUs explizit verwenden. Unterstützt Keras die Verwendung mehrerer GPUs? Wenn ja, abstrahiert es oder müssen Sie die GPUs den Geräten zuordnen, wie in Theano, und explizit Berechnungen mit bestimmten GPUs durchführen?

Antwort

4

Multi-GPU-Training ist experimental ("Der Code ist ziemlich neu und gilt zu diesem Zeitpunkt noch als experimentell. Er wurde getestet und scheint in allen beobachteten Fällen korrekt zu funktionieren, aber überprüfe deine Ergebnisse vorher noch einmal eine Zeitung oder etwas in der Art zu veröffentlichen. ") und wurde noch nicht in Keras integriert. Sie können jedoch mehrere Grafikprozessoren mit Keras mit dem Tensorflow-Backend verwenden: https://blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html#multi-gpu-and-distributed-training.

+0

Haben Sie im Laufe des letzten Jahres etwas davon gehört? Ich weiß, dass Tensorflow wie erwartet in Theanos Basis frisst, also bin ich flexibel mit beiden Backend. – Ray

+0

@Ray: Ich bin mir nicht sicher auf Theano Ende, aber ich würde definitiv empfehlen, zu Tensorflow für diese, wenn Sie die Option haben. –