paddlehub内存泄漏
最近在使用paddlehub跑ocr,但是跑一段时间后,就会内存溢出导致退出,在github上也有相关issue。
hub Out of memory in a simple programm!! #682
具体解决方案是 修改模型文件源码,手动调用api,释放内存。
paddle的api_reference文档里面提到了如下两个释放内存的函数。
1 | # 释放中间 Tensor |
查看模型位置
使用hub list查看模型
| ModuleName | Path |
|---|---|
| ch_pp-ocrv3 | /root/.paddlehub/modules/ch_pp_ocrv3 |
| ch_pp-ocrv3_det | /root/.paddlehub/modules/ch_pp_ocrv3_det |
修改源码
进入/root/.paddlehub/modules/ch_pp_ocrv3,有个module.py文件。在里面可以看到有调用self.rec_predictor.run()的地方,需要在函数返回前插入下面两行,进行内存释放。
1 | self.predictor.clear_intermediate_tensor() |
/root/.paddlehub/modules/ch_pp_ocrv3_det同理可得。
加上后,观察一段时间,没有内存泄漏情况了。