-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
hub Out of memory in a simple programm!! #682
Comments
你好!建议直接将所有图片使用cv2读入之后,一次性传给预测接口recognize_text(使用参数images) import os
import cv2
import paddlehub as hub
test_images = 'Path/To/Images'
ocr = hub.Module(name="chinese_ocr_db_crnn_server")
imgs = [cv2.imread(image) for image in test_images]
ocr.recognize_text(images=[imgs], use_gpu=True) |
这个方法 行不通,因为在实际中hub是这样用的: 第一步:hub serving start -m chinese_ocr_db_crnn_server第二步:请求结果:import requests 第三步:如果有多个人 依次请求(注意不是并发),一定是不同的图片,不同的名称,才会发生,而且实际情况就是这样,那么次数一多,就会发生!!!显存不回收!!!!!!!! |
我也有这个问题,麻烦尽快解决下 |
我部署在server上的文字识别模型,也是经常 挂掉,显存报错如下:C++ Call Stacks (More useful to developers):0 std::string paddle::platform::GetTraceBackStringstd::string(std::string&&, char const*, int) Error Message Summary:ResourceExhaustedError: Out of memory error on GPU 0. Cannot allocate 56.250244MB memory on GPU 0, available memory is only 54.750000MB. Please check whether there is any other process using GPU 0.
at (/paddle/paddle/fluid/memory/allocation/cuda_allocator.cc:69) 2020-06-12 10:11:47,800-INFO: 127.0.0.1 - - [12/Jun/2020 10:11:47] "POST /predict/chinese_ocr_db_crnn_server HTTP/1.1" 200 - |
@LeeYongchao @Bingjiajia @moruifang0508 感谢反馈!请问你们有试过不使用hub serving,本地调用ocr模型预测,是否会出现显存不足的情况呢?如果出现显存不足的情况,方便将待预测图片发下吗? |
您好,我使用paddleOCR项目中的代码去推理是没有问题的,但是我如果使用hub的话,采用如下代码: 这里使用循环,每次推理一张图片,就是为了测试他的显存是否回收,然后您观察后台的显存,会发现他一直增长,不降低; 可以看到,计算过去了很长时间了,显存一直被占用。 |
@LeeYongchao 循环使用recognize_text接口预测,每次预测一张图片,发现显存在增长。这种情况是符合预期的,因为program在运行的时候会逐渐判断需要多少显存,逐渐分配显存。所以可以看到显存先逐渐增长,之后会稳定。只有当所有图片预测完毕,也就是说当加载的ocr module不再使用,垃圾回收后,此时显存会回收。 |
不好意思,刚才代码copy错误了。。。 请用下面的测试: 然后运行下面脚本:import requests def cv2_to_base64(image): for img in imgs_l:
|
@LeeYongchao 你使用serving部署module预测。当你的请求结束,只能说明客服端预测完成,但是服务端的进程还在运行,也就是说加载的ocr module没有消亡,自然还会继续占用显存。你可以试试 |
您好: hub stop --help 和 hub --help 的结果是一样的 百忙之中,请帮我问问相关人士,谢谢!!! |
请问hub的后端是paddlepadlde吗?那么使用paddlepaddle的接口可以清理显存吗? |
我的也是,显存不大,碰到大点的直接就卡死了,提问了但是现在找不到提问的帖子了,只能来这里蹭热度了,请解决一下呗,不然这个放服务器上是不可能了,只能自己玩 |
你的数据量是多大呢? 我试了一张49KB的图片,chinese_ocr_db_crnn_server模型显存占用大概4000MB。你说的
5G的显存占用,是否有别的进程也在使用同一张显卡呢? 另外如果你的显存不足够大,可以试试 轻量级ocr模型chinese_ocr_db_crnn_mobile |
@moruifang0508 你好!paddlehub 是 基于paddle开发的,底层深度学习常用的算子是使用paddle提供的API。清理显存使用,待程序完整使用结束后,会自动释放。 |
您好,问题的关键 并不在显存大小,而是hub servering 起来以后,别人给他发送请求后,他的显存不会自己清理的。你必须 ctrl + C 结束这个东西 显存才释放。 如果放任不管,他一张图片推理占用4G ,然后返回请求的结果,然后显存就永远不会动了。 |
是的,大家都是这个问题!!! |
@LeeYongchao @y455471846b @moruifang0508 感谢反馈!目前预测模式是进程所有线程复用共享内存池,只有等待进程完整结束后显存和内存才会回收释放。输入图片预测完毕需要释放显存内存这个需求已经反馈!预计paddle下个版本会支持。敬请期待。 |
您好,请问显存不回收这个问题在paddle 2.0.0b0这个版本解决了吗?我在版本更新日志中没看到关于这个问题的相关说明,麻烦您解答一下~ |
目前还没有,预计在paddle 2.0正式版本中解决。 |
请问paddle2.0.0rc解决这个问题了吗 |
安卓移动版,也存在内存泄露的问题 |
请问下现在解决了吗?是哪个版本的paddle解决了? |
在 chinese_ocr_db_crnn_server 1.1.1 (paddlepaddle-gpu==2.0.0rc1.post110) 上测试还未解决。 |
好像还没支持,我用的2.0版本,还是有这个问题。 |
我用的2.0版本的,还是这个问题,hub serving |
粗暴的解决方法就是,定时重启程序~~ |
这么久过去了,还是没看到有解决啊 |
这个问题似乎无解了,官方能出来说下怎么临时解决以下吗 |
Please see Q3.4.17 |
2.0.0 CPU预测还是会内存泄漏,2.1.0更新了吗? |
2.1.0 CPU预测也会泄露,接口加载一次模型,然后反复调用接口,内存越来愈大 |
你好!paddle 2.1接口已经增加了释放显存api 接口 |
现在只使用CPU进行推理,内存竟可达到10个G左右 |
这是来自QQ邮箱的假期自动回复邮件。
您好,我已收到,我会尽快给您回复的……
|
您好,使用paddlehub部署现在可以释放显存了吗? |
经过修改paddlehub下载的模型代码,已经将部分显存释放了, 释放中间Tensorpredictor.clear_intermediate_tensor() 释放内存池中的所有临时 Tensorpredictor.try_shrink_memory() |
亲测有用! |
这是来自QQ邮箱的假期自动回复邮件。
您好,我已收到,我会尽快给您回复的……
|
2.3.0gpu还有这个问题 |
这是来自QQ邮箱的假期自动回复邮件。
您好,我已收到,我会尽快给您回复的……
|
你好,请问这个问题解决没?我也遇到了 |
这是来自QQ邮箱的假期自动回复邮件。
您好,我已收到,我会尽快给您回复的……
|
这么久过去了,还是没看到有解决啊 |
这是来自QQ邮箱的假期自动回复邮件。
您好,我已收到,我会尽快给您回复的……
|
我的解决方式比较粗暴,开子进程跑这个推理,监控这个子进程,爆内存爆显存就杀掉重开 |
开子进程跑推理,爆显存就杀掉重开 |
我当时直接换更大内存显卡
在 2023-10-19 11:20:36,"Eric" ***@***.***> 写道:
这么久过去了,还是没看到有解决啊
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
一个问题搞几年了没解决,还想发展生态呢,逗 |
内存泄漏的问题,感觉就没有解决啊。这样还怎么成为工业界可用的工具 |
这是来自QQ邮箱的假期自动回复邮件。
您好,我已收到,我会尽快给您回复的……
|
1)hub.version'1.7.1'
2)paddle.version'1.7.2'
3)ubuntu16.04
5)paddle.fluid.install_check.run_check()
Running Verify Paddle Program ...
W0610 10:19:19.803442 8827 device_context.cc:237] Please NOTE: device: 0, CUDA Capability: 75, Driver API Version: 10.1, Runtime API Version: 9.0
W0610 10:19:19.805452 8827 device_context.cc:245] device: 0, cuDNN Version: 7.6.
Your Paddle works well on SINGLE GPU or CPU.
I0610 10:19:20.703788 8827 parallel_executor.cc:440] The Program will be executed on CUDA using ParallelExecutor, 1 cards are used, so 1 programs are executed in parallel.
I0610 10:19:20.704022 8827 build_strategy.cc:365] SeqOnlyAllReduceOps:0, num_trainers:1
I0610 10:19:20.704203 8827 parallel_executor.cc:307] Inplace strategy is enabled, when build_strategy.enable_inplace = True
I0610 10:19:20.704339 8827 parallel_executor.cc:375] Garbage collection strategy is enabled, when FLAGS_eager_delete_tensor_gb = 0
Your Paddle works well on MUTIPLE GPU or CPU.
Your Paddle is installed successfully! Let's start deep Learning with Paddle now
首先 export CUDA_VISIBLE_DEVICES=0
import os
import paddlehub as hub
ocr = hub.Module(name="chinese_ocr_db_crnn_server")
img_l=os.listdir('./static/images/') # 本目录有20张带文字的图片,如果您显存大,请多放
for img in img_l:
_ = ocr.recognize_text(paths=['./static/images/'+img], use_gpu=True)
报错如下:
Error Message Summary:
ResourceExhaustedError:
Out of memory error on GPU 0. Cannot allocate 29.883057MB memory on GPU 0, available memory is only 22.750000MB.
Please check whether there is any other process using GPU 0.
at (/paddle/paddle/fluid/memory/allocation/cuda_allocator.cc:69)
The text was updated successfully, but these errors were encountered: