DayBreak-u / chineseocr_lite

超轻量级中文ocr,支持竖排文字识别, 支持ncnn、mnn、tnn推理 ( dbnet(1.8M) + crnn(2.5M) + anglenet(378KB)) 总模型仅4.7M
GNU General Public License v2.0
11.72k stars 2.25k forks source link

基于CPU的PSENET预测的内存问题还没有解决完毕,centos 7+ flask+python3 + torch1.5+torchvision1.5+tensorflow1.4,单进程测试了1万张图片,内存稳定在8G+左右。用gunicore的话吃内存更多 #192

Open ATTACK-TIGER opened 4 years ago

ATTACK-TIGER commented 4 years ago

2222222

tensorflow.version '1.13.1' torch.version '1.5.0+cpu' torchvision.version '0.6.0+cpu'

内存问题还没有解决完毕,我已经修改代码运行4小时,单进程内存稳定在8G+左右了

QQ20200701-0 这是接口的测试返回结果

DayBreak-u commented 4 years ago

@Pad0y 大佬看一下?

Pad0y commented 4 years ago

我在ubuntu16.04测试内存稳定在1个多g,你占用8个G内存是不正常的。我的环境是torch1.2+torchvison0.4+flask+uwsgi,gunicore我没测试过,你试试torch版本降低,理论代码没有问题了,记得关掉debug模式。@ATTACK-TIGER

ATTACK-TIGER commented 4 years ago

app.run(host='0.0.0.0', port=33333, debug=False)
app = Flask(name)

app.debug = False app.env = 'production' app.config.update(DEBUG=False)

flask的debug模式已经关掉了,内存还是一直到8G+左右,单进程,现在在查,也是无解中

Pad0y commented 4 years ago

app.run(host='0.0.0.0', port=33333, debug=False) app = Flask(name)

app.debug = False app.env = 'production' app.config.update(DEBUG=False)

flask的debug模式已经关掉了,内存还是一直到8G+左右,单进程,现在在查,也是无解中

确保你拉取了最新的代码,如果还是出现内存暴涨的原因基本就是pytorch版本过高,可以试试pytorch1.2

ATTACK-TIGER commented 4 years ago

已经拉取最新代码,psenet那里用了单例,pytorch就是1.2升到1.5的,之前以为是版本低的问题才升级到1.5,现在升级了,也没有改善,博主你看看是不是用了同一批图片来做预测,所以你的内存一直在1g,我是使用1万张不同图片,系统才会不会增加内存。 tensor = transforms.ToTensor()(img) tensor = tensor.unsqueeze_(0) tensor = tensor.to(self.device)

    with torch.no_grad():
        # torch.cuda.synchronize()
        start = time.time()
        preds = self.net(tensor)

我debug到就是这几句张量的计算,然后内存会不断增加的

Pad0y commented 4 years ago

已经拉取最新代码,psenet那里用了单例,pytorch就是1.2升到1.5的,之前以为是版本低的问题才升级到1.5,现在升级了,也没有改善,博主你看看是不是用了同一批图片来做预测,所以你的内存一直在1g,我是使用1万张不同图片,系统才会不会增加内存。 tensor = transforms.ToTensor()(img) tensor = tensor.unsqueeze_(0) tensor = tensor.to(self.device)

    with torch.no_grad():
        # torch.cuda.synchronize()
        start = time.time()
        preds = self.net(tensor)

我debug到就是这几句张量的计算,然后内存会不断增加的

我测试的图片大概几十张左右,内存基本稳定在一个值;你内存增长的方式是急速增长还是缓慢增加

ATTACK-TIGER commented 4 years ago

centos7 : 急速增长到5G,然后不断缓慢增加到8G+

ubuntu 19.04

torch.version '1.5.1' torchvision.version '0.6.1'

u1 u2

ubuntu单进程吃内存更多,都是急速增长到10g+

DayBreak-u commented 4 years ago

用dbnet吧 看还有内存问题没

LinJing517 commented 4 years ago

@Pad0y @ouyanghuiyu 大佬们好,检测模型用的dbnet,内存问题还是存在?该怎么操作呢?

Pad0y commented 4 years ago

@Pad0y @ouyanghuiyu 大佬们好,检测模型用的dbnet,内存问题还是存在?该怎么操作呢?

关于这点在我自己的环境ubuntu16.04, flask+python3.5/3.6+torch1.2.0一次性测试400张图片内存均稳定在1g左右,所以跟psenet或者dbnet关系应该不大,正常情况下应该是只会加载一次内存在识别的时候会上涨但随后会下降回收,总体可能会轻微上涨但是不会暴涨

LinJing517 commented 4 years ago

@Pad0y @ouyanghuiyu 大佬们好,检测模型用的dbnet,内存问题还是存在?该怎么操作呢?

关于这点在我自己的环境ubuntu16.04, flask+python3.5/3.6+torch1.2.0一次性测试400张图片内存均稳定在1g左右,所以跟psenet或者dbnet关系应该不大,正常情况下应该是只会加载一次内存在识别的时候会上涨但随后会下降回收,总体可能会轻微上涨但是不会暴涨

嗯 我更新下版本试下

LinJing517 commented 4 years ago

@Pad0y @ouyanghuiyu 大佬们好,检测模型用的dbnet,内存问题还是存在?该怎么操作呢?

关于这点在我自己的环境ubuntu16.04, flask+python3.5/3.6+torch1.2.0一次性测试400张图片内存均稳定在1g左右,所以跟psenet或者dbnet关系应该不大,正常情况下应该是只会加载一次内存在识别的时候会上涨但随后会下降回收,总体可能会轻微上涨但是不会暴涨

你好,我这边将了版本重新试验了下,内存还是会一直上涨,测试了30张图片左右,涨到3G多,基本上每次识别会增加100多m, 具体可以在哪里增加回收功能?

LinJing517 commented 4 years ago

@Pad0y 大佬 这会和图片大小有关系吗?我试过同张照片不断进行重复识别,内存保持在1G左右,不同照片就会递增,是识别时会存储一些数据吗?

Pad0y commented 4 years ago

请问你内存递增的具体表现是暴涨还是上下波动但是总体上升。另外这个和图片没关系,测试的400张图片均不同,当然图片越大处理速度会越慢内存可能可能会上升的比较厉害 @PakchoiFood

LinJing517 commented 4 years ago

@Pad0y 表现为上下波动总体上升,每次大约增长1百多M

znsoftm commented 4 years ago

chineseocr (没有lite的原始版本)也是这个问题。有内存泄露,会导致内存不停增长,一直到机器挂掉。