如何使用Theano启用Keras以使用多个GPU

Ray*_*Ray 10 gpu theano keras cudnn theano-cuda

建立:

  • 使用带有Nvidia GPU的Amazon Linux系统
  • 我正在使用Keras 1.0.1
  • 运行Theano v0.8.2后端
  • 使用CUDA和CuDNN
  • THEANO_FLAGS = "设备= GPU,floatX = FLOAT32,lib.cnmem = 1"

一切正常,但是当我增加批量大小以加快训练时,我在大型模型上耗尽了视频内存.我认为转向4 GPU系统理论上可以提高可用的总内存或允许更小的批量构建更快,但是观察nvidia统计数​​据,我可以看到默认情况下只使用一个GPU:

+------------------------------------------------------+ 
| 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 |
Run Code Online (Sandbox Code Playgroud)

我知道使用原始Theano你可以明确地手动使用多个GPU.Keras是否支持使用多个GPU?如果是这样,那么它的抽象,或做你需要的GPU对设备映射在Theano并明确马歇尔计算具体GPU的?

1''*_*1'' 4

多 GPU 训练是实验性的(“代码相当新,目前仍被认为是实验性的。它已经过测试,似乎在观察到的所有情况下都能正确执行,但请确保在发表论文或之前仔细检查您的结果”任何类似的东西。”)并且尚未集成到 Keras 中。但是,您可以将多个 GPU 与 Keras 和 Tensorflow 后端结合使用: https: //blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html#multi-gpu-and-distributed-训练