关于训练网络时,内存占满问题
Created by: TimeChi
使用代码框架是改自官方ssd代码https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/ssd,仅仅修改了backbone。 也就是读取数据是用的异步读取py_reader 具体情况:同样的代码 在RTX2080TI,64G内存条下,CPU多线程只能开4个,此时显卡利用率较高90左右。若再多开线程,则程序占用内存会不断增加,直到内存占满。然后一段时间后内存全部释放,程序不动了,也不打印错误,也不终止。 在GTX1080TI,64G内存条下,CPU只能单线程,此时显卡利用率一会0一会90以上。若再多开线程,则程序占用内存会不断增加,直到内存占满。然后一段时间后内存全部释放,程序不动了,也不打印错误,也不终止。 py_reader参数: py_reader = fluid.layers.py_reader( capacity=64, shapes=[[-1] + image_shape, [-1, 4], [-1, 1], [-1, 1]], lod_levels=[0, 1, 1, 1], dtypes=["float32", "float32", "int32", "int32"], use_double_buffer=True)
最后,如果没记错,官方ssd源码好像是不存在这个问题,进程开的多也没事,只是进程开多了GPU的利用率会很低,大概二三十左右。 大概问题就是这些,技术小哥有空的话,可以测试一下,如有需要请联系我qq1007890785