技术问询:Keras用Theano后端时Google Colab是否未启用GPU?
解决Colab中Theano后端Keras未使用GPU的问题
我之前在Colab里折腾Theano后端的时候也碰到过一模一样的情况——TensorFlow后端跑每个epoch只要4分钟,切到Theano直接7小时起步,当时差点以为自己代码写错了,后来才发现是Theano压根没用到GPU。
先确认问题根源:Theano是否真的在跑CPU
先跑一段简单的代码验证一下:
import theano print("Theano device:", theano.config.device) print("FloatX setting:", theano.config.floatX)
如果输出是cpu,那实锤了——Theano完全没启用GPU加速,这就是速度慢的核心原因。
为什么TensorFlow不用配置就能跑GPU?
Colab默认给TensorFlow集成了全套的CUDA、cuDNN环境,而且启动时会自动检测GPU并启用,几乎是零配置就能用。但Theano不一样,它需要手动指定GPU设备和相关参数,不然就默认用CPU跑。
一步步配置Theano启用GPU加速
先确认Colab已经分配到GPU
点击顶部菜单栏的Runtime->Change runtime type,确保Hardware accelerator选的是GPU,保存后重启运行时。配置Theano的GPU参数
有两种方式,选一种就行:- 临时配置(只对当前会话有效):在代码最开头加上这两行:
import theano theano.config.device = 'gpu' theano.config.floatX = 'float32' - 永久配置(重启会话也生效):创建Theano的配置文件
.theanorc,在Colab里执行以下命令:
这个配置文件告诉Theano使用GPU,并且指定CUDA的安装路径(Colab里CUDA默认在!echo -e "[global]\ndevice = gpu\nfloatX = float32\n[cuda]\nroot = /usr/local/cuda" > ~/.theanorc/usr/local/cuda)。
- 临时配置(只对当前会话有效):在代码最开头加上这两行:
更新Theano到最新稳定版
Colab自带的Theano版本可能比较旧,对新GPU的支持不好,建议更新一下:!pip install --upgrade theano
验证配置是否生效
重新运行之前的检测代码,如果输出变成gpu和float32,说明配置成功了,再跑你的训练代码试试,速度应该会和TensorFlow后端差不多了。
补充:你之前的配置遗漏了什么?
你只修改了Keras的keras.json切换后端为Theano,但Keras只是调用Theano来执行计算,Theano本身的GPU参数没配置的话,Keras也只能跟着用CPU跑,这就是为什么速度差这么多。
内容的提问来源于stack exchange,提问作者Sekar S
相关产品推荐
相关产品推荐

