tensorflow gpu 运行出现OOM错误

时间:2022-07-24
本文章向大家介绍tensorflow gpu 运行出现OOM错误,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

0 问题

今天跑了一下程序,报了如下的OOM错误

ResourceExhaustedError: OOM when allocating tensor with shape[258000,768] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
	 [[{{node rpn_model/rpn_conv_shared/convolution}} = Conv2D[T=DT_FLOAT, data_format="NCHW", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](fpn_p2/BiasAdd, rpn_conv_shared/kernel/read)]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

看报错主要是没内存了,按照如下思路进行纠错

1 解决

1.1 指定GPU

默认使用第0块GPU,该用其他GPU

$ CUDA_VISIBLE_DEVICES=1   python  run_file.py

其他方法见Linux 中指定使用的GPU

注:tf日志中的使用第0块GPU 是相对可见的GPU

1.2 调参

注哟报错中的tensor大小,可以适当的调小参数,以下有几个参数可以参考:

  • batch_size
  • 特征大小,如果输入是图片,建议调小图片大小

1.3 使用CPU

如果GPU 显存实在不够,可以使用CPU

$ CUDA_VISIBLE_DEVICES="" python  run_file.py