环境:ubuntu16.04+python3.6+mxnet_cu90(1.5.1)+GTX 1080Ti
问题描述:在GPU中绑定一个resnet50+fcn模型提供预测服务,测试过程中发现显存占用不断增大,直至系统报错out of memory。
调试记录:
- 在mod.forward() 后显式调用mx.nd.waitall() 进行数据同步,避免后台异步计算过程累计数据。显存耗尽现象依然存在。
- 将输入图片的尺寸固定,发现显存占用始终很稳定,未出现耗尽现象。
- 在2步骤运行一段时间后,随机resize输入图片尺寸,发现显存占用开始增大,直至耗尽。
问题定位:
fcn模型不限定输入图片的尺寸,但是在计算过程中需要根据输入数据的shape对模型进行Reshape。每次Reshape会导致一块新的显存资源被占用且无法释放。该问题的原因和根本解决办法尚未找到(待研究官方社区和源码),不过可以规避,即将输入图片限制为固定大小,避免模型不断Reshape。
【注】为避免图片resize比例失真,应对图片按比例缩放进入标准输入尺寸中,并将空白处填充缺省值(如全黑)