PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
22.17k stars 5.56k forks source link

使用Flask进行预测发生内存溢出 #38414

Closed se7enXF closed 2 years ago

se7enXF commented 2 years ago

问题描述

  1. 首先说一个段错误,在paddledet issue提出的。我将cuda换为10.0,cudnn7.5,推理没有错误了。但是这个段错误的的问题希望跟进一下。
  2. Flask里使用paddle-gpu静态图推理,发现ram内存泄漏,gpu内存无问题。每调用一次请求,内存增加一点,直到内存满后被系统kill。使用paddle-cpu+flask无问题。不使用flask,循环调用无内存泄漏。
  3. 模型初始化都在脚本开头,循环中只使用了class.predict,模型推理class是继承于paddlecls的predicter写的。

环境

系统:ubuntu 16.04 amd64 paddle版本:paddlepaddle-gpu==2.2.1 python: python3.7 flask: flask==2.0.2

感谢

PaddlePaddle框架训练和测试都很方便,我们在边缘段使用部署也很方便,非常感谢百度能分享供大家使用!感谢辛苦处理bug的大神们!

se7enXF commented 2 years ago

设置flask的参数app.run(threaded=False)后,内存不再溢出。

ZhiluDing commented 2 years ago

@se7enXF 想问下题主,我遇到和你一样的问题了,如果设置flask的参数app.run(threaded=False)后,如何去处理多客户端请求呢?把多线程关了,可能会有响应不及时的问题呀。

se7enXF commented 2 years ago

@ZhiluDing 我暂时使用的方法中,使用flask请求多只能等待。或者你可以看看PaddleServer,飞桨官方的网页服务。

shopexdream commented 1 year ago

设置flask的参数app.run(threaded=False)后,内存不再溢出。

请问如果使用uwsgi+flask如何设置这个app.run(threaded=False)呢,因为run这个是注释的,通过uwsgi跑的