如何使用 Theano 启用 Keras 以利用多个 GPU
Posted
技术标签:
【中文标题】如何使用 Theano 启用 Keras 以利用多个 GPU【英文标题】:How to enable Keras with Theano to utilize multiple GPUs 【发布时间】:2016-08-27 19:32:52 【问题描述】:设置:
使用带有 Nvidia GPU 的 Amazon Linux 系统 我使用的是 Keras 1.0.1 运行 Theano v0.8.2 后端 使用 CUDA 和 CuDNN THEANO_FLAGS="device=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 |
我知道原始 Theano 可以显式手动使用多个 GPU。 Keras 是否支持使用多个 GPU?如果是这样,它是否将其抽象化,或者您是否需要像 Theano 中那样将 GPU 映射到设备并将计算显式编组到特定的 GPU?
【问题讨论】:
【参考方案1】:多 GPU 训练是 experimental(“代码相当新,目前仍被认为是实验性的。它已经过测试,似乎在观察到的所有情况下都能正确执行,但请务必仔细检查您的结果在发表论文或任何类似的东西之前。”)并且尚未集成到 Keras 中。但是,您可以将多个 GPU 与 Keras 与 Tensorflow 后端一起使用:https://blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html#multi-gpu-and-distributed-training。
【讨论】:
在过去一年左右的时间里,您是否听说过这方面的进展?我知道 Tensorflow 正如预期的那样正在蚕食 Theano 的基础,所以我对任一后端都很灵活。 @Ray:我不确定在 Theano 端,但如果你有选择的话,我绝对建议切换到 Tensorflow。以上是关于如何使用 Theano 启用 Keras 以利用多个 GPU的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ubuntu20 上以 theano 为后端的 termux 运行 keras
如何检查 Keras 后端是 tensorflow 还是 theano
如何在 Windows 上的 Anaconda Python 中安装 Keras 和 Theano?