深度神经网络训练无法使用GPU

我发现训练的时长不对劲,所以调GPU使用情况来看.用命令:

watch -n 0.2 nvidia-smi

每隔0.2刷新显示GPU使用情况.发现使用率最低是3%左右,最高也就30%,并且一直大幅变化.这是不符合GPU训练的预期的,再考虑之前训练的速度确实太慢了,所以怀疑是原来一直在用CPU跑模型(我崩溃了).

  1. 首先确定GPU是否可见:

    from tensorflow.python.client import device_lib
    print(device_lib.list_local_devices())
    
    from keras import backend as K
    K.tensorflow_backend._get_available_gpus() 
    

    输出的内容是CPU,根本没有看到GPU的描述,因此,GPU对我们的代码来说是不可见的.

  2. 然后找原因:
    有些帖子给出的原因是tensorflow的版本太高,需要降低版本,但是在我印象中,之前用的就是tensorlow1.14.0,是成功运行过的,所以应该不是这个原因.还有人说是tensorflow和tensorflow-gpu的版本冲突,也就是说cpu版本比gpu版本要高,于是自动选择优先运行cpu版本,从而跳过了gpu版本,但是我的两个版本都是1.14.0,所以应该不是这个版本冲突问题.可见,我没有跟上诉两个原因对应上,但是我的问题根源可能也是在于tensorflow的版本上.

  3. 最后尝试解决:
    (1)找到所有的conda环境:

    conda info --envs
    

    (2)进入我们使用的环境中:

    source activate name
    

    (3)查看conda安装包列表:

    conda list
    

    (4)先卸载所有tensorflow相关的安装包:

    pip uninstall xx
    

    这里的卸载和后面的安装我用的全是pip,一是后来结果是可行的;二是conda命令一直出现solving environment卡住不动的问题.
    (5)安装新的所需安装包:

    pip install tensorflow-gpu==1.12.0
    

    由于我不确定是版本过高的问题,还是cpu和gpu版本冲突问题.那么我的选择是全都不要,两个都不粘.仅安装较低的gpu版本,不用装cpu版本.
    (6)验证:
    重新运行GPU查看代码,发现可见.跑网络代码的时候观察gpu,第一块的使用率已经达到了90%多,问题解决.

总结:这类问题,也许找不到具体问题在哪,挺奇怪的,之前是可以成功运行的,不知道在哪天突然不对劲了,但是今天的解决思路:删除tensorflow相关包,然后只安装较低的gpu版本,可能是一个不错的选择.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值