常见Tensorflow相关GPU错误解决

目录

OOM

CUDNN_STATUS_INTERNAL_ERROR

batch size只能设为1(或比预期小)


OOM

问题:OOM (out of memory) 

原因:显存不足

解决:降低batch size,如果batch size=1还不行就只能改小网络

CUDNN_STATUS_INTERNAL_ERROR

问题:could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

原因:使用watch -n 0.1 nvidia-smi监测程序执行过程中显存的变化,发现是显存逐渐增大最后导致显存溢出。tensorflow不控制的时候默认占满显存,在后续持续增长的时候会触发问题。还有一种可能是更新cuda环境,但cuda缓存未更新

解决:控制显存使用,或清理cuda缓存

显存控制方案1:tensorflow代码控制(这里是tf1.x示例,tf2略有不同)参考链接

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)

显存控制方案2:TF环境变量

代码中增加

import os
os.environ["TF_FORCE_GPU_ALLOW_GROWTH"] = "true"

或设置环境变量

export TF_FORCE_GPU_ALLOW_GROWTH=true

清理cuda缓存

sudo rm -rf ~/.nv/

batch size只能设为1(或比预期小)

问题:batch size设置为1程序正常执行,设置大于1会出现OOM错误

原因:这是cudnn错误,因为cudnn会选择最佳的卷积算法,但是可能会需要比较多的显存。这个跟显卡及驱动有关,作者是出现在更新新显卡后触发

解决:禁用cudnn的这种自动调优,设置环境变量TF_CUDNN_USE_AUTOTUNE=0

代码增加

import os
os.environ["TF_CUDNN_USE_AUTOTUNE"] = "0"

或设置环境变量

export TF_CUDNN_USE_AUTOTUNE=0

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值