美文网首页
ResourceExhaustedError (see abov

ResourceExhaustedError (see abov

作者: 我的章鱼小丸子呢 | 来源:发表于2020-07-14 19:39 被阅读0次


1、问题描述

在运行由tensorflow构建的Googlenet模型训练字模数据时,出现了以下问题:

ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[512,192,12,12]

如图:

报错信息

2、原因描述

显存不够!!!

3、排查

3.1、tensor shape[512,192,12,12],batch_size太大

train(USER_PATH = "/home/wangyaqing", IMAGE_HEIGHT = 48, IMAGE_WIDTH = 48, BATCH_SIZE = 512, EPOCHS = 30, ADAM_LEARNING_RATE = 0.0003, TRAIN_DATA_PATH = "train_data", VALIDATION_DATA_PATH = "test_data")

将batch_size改为256

train(USER_PATH = "/home/wangyaqing", IMAGE_HEIGHT = 48, IMAGE_WIDTH = 48, BATCH_SIZE = 512, EPOCHS = 30, ADAM_LEARNING_RATE = 0.0003, TRAIN_DATA_PATH = "train_data", VALIDATION_DATA_PATH = "test_data") 


3.2、排查测试集和数据集送进网络的批次数量

如果改了训练集batch后发现还是报错,检查是否是测试集几次性输入所有图片,要注意排查测试集和数据集都要分批送进网络。

3.3、tensorflow占用显存份额太小

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.1)

with tf.Session(config = tf.ConfigProto(gpu_options=gpu_options)) as sess:


有时候tensorflow自己会自动退出,是因为tf默认占所有显存,如果有别的进程在使用显存,可能会自动退出。所以加了上面这句话,但指定中0.1的显存这也太少了,可以修改指定的显存占用比例。

附:检查GPU使用情况

(1)查看GPU使用情况

在命令行输入 nvidia-smi 显示GPU的使用情况:
表格中会显示显卡的一些信息,第一行是版本信息,第二行是标题栏,第三行就是具体的显卡信息了,如果有多个显卡,会有多行,每一行的信息值对应标题栏对应位置的信息。
 * GPU:编号
 * Fan:风扇转速,在0到100%之间变动
* Name:显卡名
* Temp:显卡温度
* Perf:性能状态,从P0到P12,P0性能最大,P12最小
* Persistence-M:持续模式的状态开关,该模式耗能大,但是启动新GPU应用时比较快,这里是off
* Pwr:能耗
* Bus-Id:涉及GPU总线的东西
* Disp.A:表示GPU的显示是否初始化
* Memory-Usage:现存使用率,这里已经快满了
* GPU-Util:GPU利用率
* Compute M.:计算模式 

需要注意的一点是显存占用率和GPU占用率是两个不一样的东西,类似于内存和CPU,两个指标的占用率不一定是互相对应的。

GPU使用情况


GPU使用情况

命令行输入 kill -9 进程号   把消耗资源的进程关闭

相关文章

网友评论

      本文标题:ResourceExhaustedError (see abov

      本文链接:https://www.haomeiwen.com/subject/fwifhktx.html