silverbulletmdc / PVEN

Parsing based vehicle ReID
109 stars 24 forks source link

Memory leak #45

Open MathisJia opened 2 years ago

MathisJia commented 2 years ago

作者你好,我在训练PVEN模型的过程中发现有内存泄漏的问题,每次运行 eval_ 函数后会有额外的内存占用。我目前找到的可能的问题是Clck_R1_mAP 类中调用 compute 时产生的线程池未停止运行。想请您再确认一下

silverbulletmdc commented 2 years ago

是显存还是内存?多线程应该不会有问题,也不涉及到gpu计算。eval时确实会带来额外的显存占用。但是我的gpu显存足够大,所以没有出现类似问题。。

MathisJia commented 2 years ago

是内存问题 , 在计算mAP时调用了 eval_func_mp 这个函数,这里面创建了线程池,但函数结束时没有释放掉,所以在训练过程中每次计算当前mAP时(每10个epoch)都会创建新的进程池而且不会被kill,所以导致了内存泄漏。 没有涉及到显存。

silverbulletmdc commented 2 years ago

可能是会有问题,我之前默认函数退出时相关的回收操作会在Pool的析构函数里执行。你把创建pool的操作改成with Pool() as pool:应该就可以了。