PaddleNLP icon indicating copy to clipboard operation
PaddleNLP copied to clipboard

[Question]: Taskflow 服务化部署 持续多次推理,严重内存泄漏

Open renardbebe opened this issue 1 year ago • 5 comments

系统环境

- Nvidia Driver: 460.27.04
- cuda: 1.2
- cudnn: 8.1.1

软件环境

- paddlepaddle-gpu: 2.4.2.post112
- paddlenlp: 2.5.2

- onnx: 1.12.0
- onnxconverter-common: 1.13.0
- onnxruntime-gpu: 1.15.0
- paddle2onnx: 1.0.6

问题描述

构建了一个uie识别的rpc服务,服务内通过global定义了全局TASK,rpc接口每次会调用Taskflow进行推理。 在客户端持续发送请求的过程中发现,服务端的GPU显存稳定,但cpu memory以每分钟0.01GB的速度稳定增加,截止观测时间点,cpu内存从2G一直增长到13G+。在注释了对TASK的调用后,cpu内存保持稳定,不再增长。 image

复现代码片段

# rpc接口文件
class IdentifyService:
    def __init__(self):
        paddle_model.PaddleNlpModel.load_model()

    async def Identify(self, ....):
        paddle_model.PaddleNlpModel.predict(....)
        return ....

# model文件
TASK = None

class PaddleNlpPredictor:
    def __init__(self):
        self.schema = ...
        self.batch_size = ...

    def load_model(self):
        global TASK
        TASK = Taskflow("information_extraction", schema=self.schema, model="uie-base", use_fast=True, precision='fp16', batch_size=self.batch_size)

    def predict(self, ....):
        predictions = TASK(texts)
        return predictions

PaddleNlpModel = PaddleNlpPredictor()

辛苦开发团队帮助进行确认和排查,目前这个问题比较影响使用,万分感谢🙏

renardbebe avatar Aug 02 '23 11:08 renardbebe

应该是你代码的问题。 你的TASK虽然是全局的,但是每次初始化,都会生成一个新的TASK对象,所以内存才会高。

你试着判断TASK为空,来加载TASK试试。

tim20112017 avatar Aug 04 '23 02:08 tim20112017

@tim20112017 你好,感谢回答。我们这里是封装了一个rpc服务,预期功能是TaskFlow在服务启动时初始化一次,之后多次持续在rpc接口响应逻辑中被调用进行推理。

这段代码中,模型初始化(load_model)只会执行一次,服务端日志也确认只被调用了一次。

且我尝试在TASK = Taskflow(...)之前加了if TASK is None:后,启动服务并持续多次调用时,仍然出现内存持续稳定增长的情况。

renardbebe avatar Aug 04 '23 15:08 renardbebe

#3429 #6354 目前所遇到的现象和这两个issue高度类似,部署方式也基本相同,是否paddlenlp serving pipeline也存在内存泄漏的问题?

renardbebe avatar Aug 05 '23 06:08 renardbebe

我也遇到了这个问题,显存不能正常释放。有解决的嘛?

zhh8689 avatar Dec 14 '23 11:12 zhh8689

推荐用户使用fastdeploy的方式,支持高并发。fastdeploy UIE服务化部署链接:

https://github.com/PaddlePaddle/FastDeploy/blob/develop/examples/text/uie/README_CN.md?plain=1

w5688414 avatar May 07 '24 08:05 w5688414

适用了使用fastdeploy的方式部署,还是有显存不断增长的问题

Huangswust182 avatar Jul 29 '24 02:07 Huangswust182