2016-05-02 30 views
8

Setup:Come abilitare Keras con Theano di utilizzare più GPU

  • Utilizzando un sistema di Amazon Linux con una GPU Nvidia
  • sto usando Keras 1.0.1
  • Esecuzione Theano v0.8.2 backend
  • Uso CUDA e CuDNN
  • THEANO_FLAGS = "device = gpu, floatX = float32, lib.cnmem = 1"

Tutto funziona correttamente, ma esaurisco la memoria video su modelli di grandi dimensioni quando aumento le dimensioni del batch per accelerare l'allenamento. Immagino passare a un sistema a 4 GPU sarebbe, in teoria, sia migliorare la memoria totale disponibile o consentire lotti più piccoli per costruire più velocemente, ma osservando le statistiche nvidia, posso vedere una sola GPU è usato di default:

+------------------------------------------------------+ 
| 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 Conoscere con Theano crudo è possibile utilizzare manualmente più GPU in modo esplicito. Keras supporta l'uso di più GPU? In tal caso, lo astraggono o è necessario mappare le GPU ai dispositivi come in Theano e calcolarne esplicitamente i marshall in GPU specifici?

risposta

4

La formazione multi-GPU è experimental ("Il codice è piuttosto nuovo ed è ancora considerato sperimentale a questo punto. È stato testato e sembra funzionare correttamente in tutti i casi osservati, ma assicurati di ricontrollare i risultati prima pubblicare un documento o qualcosa del genere. ") e non è ancora stato integrato in Keras. Tuttavia, è possibile utilizzare più GPU con Keras con il backend Tensorflow: https://blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html#multi-gpu-and-distributed-training.

+0

Avete sentito dei progressi in questo anno o giù di lì? So che Tensorflow come previsto sta mangiando nella base di Theano, quindi sono flessibile con entrambi i backend. – Ray

+0

@Ray: Non sono sicuro sulla fine di Theano, ma consiglierei di passare a Tensorflow per questo se avete la possibilità. –