PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
43.76k stars 7.79k forks source link

0.7版本部署报错,通过查看pdserving/PipelineServingLogs日志 #4741

Closed NingRC closed 2 years ago

NingRC commented 2 years ago

INFO 2021-11-24 15:03:22,352 [operator.py:1317] [det|0] Succ init INFO 2021-11-24 15:03:22,400 [operator.py:1317] [det|3] Succ init INFO 2021-11-24 15:03:22,408 [operator.py:1317] [rec|0] Succ init INFO 2021-11-24 15:03:22,489 [operator.py:1317] [rec|1] Succ init INFO 2021-11-24 15:03:22,510 [operator.py:1317] [det|1] Succ init INFO 2021-11-24 15:03:22,545 [operator.py:1317] [det|2] Succ init INFO 2021-11-24 15:03:36,599 [pipeline_server.py:56] (log_id=0) inference request name: self.name:ocr time:1637737416.599325 INFO 2021-11-24 15:03:36,599 [operator.py:1723] RequestOp unpack one request. log_id:0, clientip:127.0.1.1 name:, method:, time:1637737416.5998385 INFO 2021-11-24 15:03:36,600 [dag.py:369] (data_id=0 log_id=0) Succ Generate ID ERROR 2021-11-24 15:03:37,382 [operator.py:1109] (data_id=0 log_id=0) [det|0] Failed to postprocess: postprocess() takes 4 positional arguments but 5 were given Traceback (most recent call last): File "/home/public/anaconda3/envs/paddle/lib/python3.7/site-packages/paddle_serving_server/pipeline/operator.py", line 1105, in _run_postprocess logid_dict.get(data_id)) TypeError: postprocess() takes 4 positional arguments but 5 were given ERROR 2021-11-24 15:03:37,385 [dag.py:410] (data_id=0 log_id=0) Failed to predict: (data_id=0 log_id=0) [det|0] Failed to postprocess: postprocess() takes 4 positional arguments but 5 were given

bikerr commented 2 years ago

应该是版本问题 按照教程里边的推荐版本来 应该是paddle-serving-client 这个库版本问题

NingRC commented 2 years ago

@bikerr 现在使用环境PPOCR 2.3 paddle-serving-app 0.7.0 paddle-serving-client 0.7.0 paddle-serving-server-gpu 0.7.0.post112 paddlepaddle-gpu 2.2.0.post112 使用 paddle-serving-client==0.6.3 也报相同的错误,同时在csdn看到相同的问题,谢谢!

bikerr commented 2 years ago

看到官方反馈 CUDA 11 在安培架构的显卡速度比较快 其他架构目前好像推荐的还是10.2 可以先试试 我目前使用的环境是 可以正常运行的


pip list| grep paddle
paddle-serving-app        0.6.3
paddle-serving-client     0.6.3
paddle-serving-server-gpu 0.6.1.post101
paddlefsl                 1.0.0
paddlehub                 2.0.4
paddlenlp                 2.1.1
paddlepaddle              2.1.3
paddlepaddle-gpu          2.2.0.post101
NingRC commented 2 years ago

@bikerr 借鉴了您的意见,对cuda降级为10.2,由于服务器是Ubuntu20.04版,使用双环境。对这个0.7版本测试部署一直是报错,但是运行模型都是可以,我想使用slim等模型就没退回0.6等版本,从上面看到报错是多了一个参数,直接暴力修改了operator.py的1105行,去掉了logid_dict.get(data_id)这个参数,然后可以运行,并没有理解代码流程,可能会出现错误。

NingRC commented 2 years ago

@tink2123 我修改了operator.py的1105行,去掉了logid_dict.get(data_id)这个参数,并部署成功后返回如下: {'err_no': 0, 'err_msg': '', 'key': ['res'], 'value': ["['土地整治与土壤修复研究中心', '华南农业大学丨东图']"], 'tensors': []} 发现tensors这个字段为空,请问下这个是否正常;同时是否相0.7版本相同环境部署的人都遇到这个问题,存在要修复的BUG。

pip list| grep paddle paddle-serving-app 0.7.0 paddle-serving-client 0.7.0 paddle-serving-server-gpu 0.7.0.post102 paddlepaddle-gpu 2.2.0

bikerr commented 2 years ago

@NingRC 最新版本 采用你的上述版本配置 使用python3 -m paddle_serving_app.package --get_model ocr_rec 这个模型是可以正常使用的 但是使用自定义模型会报错 最近也在研究部署pdserving 相关的东西 是否可以添加下即时通讯 我的邮箱在个人中心

WayHoo commented 2 years ago

参考operator.py中第627行postprocess()函数的定义def postprocess(self, input_data, fetch_data, data_id=0, log_id=0):,可以对web_service.py中第57、132行实现的两个postprocess()函数稍作修改:

这样参数数量就一致了,亲测有效。我的运行环境:CUDA11.1、cuDNN8.1、TensorRT7.2.1.6 $ pip list | grep paddle paddle-serving-app 0.7.0 paddle-serving-client 0.7.0 paddle-serving-server-gpu 0.7.0.post112 paddlepaddle-gpu 2.2.0.post111

kaierlong commented 2 years ago

参考operator.py中第627行postprocess()函数的定义def postprocess(self, input_data, fetch_data, data_id=0, log_id=0):,可以对web_service.py中第57、132行实现的两个postprocess()函数稍作修改:

  • 第57行改为:def postprocess(self, input_dicts, fetch_dict, data_id, log_id):
  • 第132行改为:def postprocess(self, input_dicts, fetch_data, data_id, log_id):

这样参数数量就一致了,亲测有效。我的运行环境:CUDA11.1、cuDNN8.1、TensorRT7.2.1.6 $ pip list | grep paddle paddle-serving-app 0.7.0 paddle-serving-client 0.7.0 paddle-serving-server-gpu 0.7.0.post112 paddlepaddle-gpu 2.2.0.post111

也遇到了相同的问题,感觉可以提个pull request

paddle-bot-old[bot] commented 2 years ago

Since you haven\'t replied for more than 3 months, we have closed this issue/pr. If the problem is not solved or there is a follow-up one, please reopen it at any time and we will continue to follow up. It is recommended to pull and try the latest code first. 由于您超过三个月未回复,我们将关闭这个issue/pr。 若问题未解决或有后续问题,请随时重新打开(建议先拉取最新代码进行尝试),我们会继续跟进。