照着PPOCR 服务化部署的步骤做,不知道错在哪里
- 系统环境/System Environment:Linux
- 运行指令/Command Code:
python3 pipeline_http_client.py
- 完整报错/Complete Error Message:
照着PPOCR 服务化部署的步骤做,不知道错在哪里
python3 pipeline_http_client.py
@latinfish28 我也遇到了同样的情况,不过是有些调用失败,有些又成功了。你后来找出原因了吗?官方一直不给出回复,问题又太多,在犹豫要不要考虑换别的项目
@Biaocsu 没有,我还在等官方回复,你有修改什么参数才成功的吗?
这种调用失败不是必现的,部署好后,我这边有时调用失败有时又不会,我也找不出原因。 1、PaddleServing部署,好像不支持修改参数,没看到哪里可以修改,问官方也没回复 2、PaddleHub Serving部署可以支持修改参数,我这边部署使用没发现什么严重问题,就是暴露的http等不支持自定义,这个不知道如何解决 3、基于Python引擎的PP-OCR模型库推理,这种纯python调用感觉更合适点,后面自己部署,毕竟官方部署好像并没有什么加速,我这边实验是这样的结果
可以先确认下是否是模型路径和config文件里的配置没对上: https://github.com/PaddlePaddle/PaddleOCR/blob/40baeefa82abd05d86baa2414e14829df7f9a1a7/deploy/pdserving/config.yml#L37
如果遇到了报错的情况,可以把预测报错的图用python 引擎的PP-OCR预测看下,如果也出现报错,可以发一下报错信息,我们排查下;
另外,可以看下log.txt中的日志 PipelineServingLogs/pipeline.log 里的报错信息提示
@LDOUBLEV 我这边服务部署好后,有时预测没问题,有时预测才会出现上述的问题。出现问题不是必现的,等后面出现了再都贴出来
更新了PaddleServing 部署PaddleOCR 文档里要求的paddle paddle版本,建议用paddlepaddle 2.2.2版本 https://github.com/PaddlePaddle/PaddleOCR/pull/5674
更新了PaddleServing 部署PaddleOCR 文档里要求的paddle paddle版本,建议用paddlepaddle 2.2.2版本 #5674
我使用docker环境(sudo nvidia-docker run --name ppocr -v $PWD:/paddle --shm-size=64G --network=host -it registry.baidubce.com/paddlepaddle/paddle:2.1.3-gpu-cuda11.2-cudnn8 /bin/bash
),
版本为:paddlepaddle-gpu 2.2.2.post112
应该不是我这边操作问题
看你的操作没啥问题,用的docker也是paddle官方的docker;
偶尔有图预测会报错;可能是某些图片的格式不支持或者其他原因导致报错,以后遇到预测报错的图片,可以看下报错信息
好。之前没注意,现在找不到报错信息,也不是必现的,较难找出原因
@LDOUBLEV PipelineServingLogs/pipeline.log 里的报错信息提示
ERROR 2022-03-06 17:29:40,896 [operator.py:846] (log_id=109) det failed to predict.
ERROR 2022-03-06 17:29:40,899 [dag.py:409] (data_id=109 log_id=0) Failed to predict: (log_id=109) det failed to predict.
INFO 2022-03-06 17:29:40,927 [pipeline_server.py:51] (log_id=0) inference request name:ocr self.name:ocr
INFO 2022-03-06 17:29:40,927 [operator.py:1375] RequestOp unpack one request. log_id:0, clientip: name:ocr, method:prediction
INFO 2022-03-06 17:29:40,927 [dag.py:368] (data_id=110 log_id=0) Succ Generate ID
ERROR 2022-03-06 17:29:41,005 [operator.py:801] (data_id=110 log_id=110) [det|7] Failed to process(batch: [110]): (PreconditionNotMet) Cannot load cudnn shared library. Cannot invoke method cudnnGetVersion.
[Hint: cudnn_dso_handle should not be null.] (at /paddle/paddle/fluid/platform/dynload/cudnn.cc:59)
Traceback (most recent call last):
File "/home/chang/miniconda3/envs/paddle_env/lib/python3.6/site-packages/paddle_serving_server/pipeline/operator.py", line 790, in _run_process
midped_batch = self.process(feed_batch, typical_logid)
File "/home/chang/miniconda3/envs/paddle_env/lib/python3.6/site-packages/paddle_serving_server/pipeline/operator.py", line 447, in process
log_id=typical_logid)
File "/home/chang/miniconda3/envs/paddle_env/lib/python3.6/site-packages/paddle_serving_app/local_predict.py", line 263, in predict
input_tensor_handle.copy_from_cpu(feed[name])
File "/home/chang/miniconda3/envs/paddle_env/lib/python3.6/site-packages/paddle/fluid/inference/wrapper.py", line 35, in tensor_copy_from_cpu
self.copy_from_cpu_bind(data)
RuntimeError: (PreconditionNotMet) Cannot load cudnn shared library. Cannot invoke method cudnnGetVersion.
[Hint: cudnn_dso_handle should not be null.] (at /paddle/paddle/fluid/platform/dynload/cudnn.cc:59)
log.txt像这样
模型路径和config文件里的配置有对上,然后是用paddlepaddle-gpu 2.2.2版本
@latinfish28 看你这个报错信息好像跟cudnn
有关,不知道你cuda
等环境是否有问题,另外paddlepaddle-gpu
版本后面需要有一个post如:2.2.2.post112
。我也急切想找出该问题原因,所以先问下你,哈哈哈
我没有看到版本后面有post,但后来有解决cudnn的问题了
后来的问题好像是batch size的问题,可能还要找一下要去哪里调参数
它是有时候会侦测到文字,有时候不行,就是因为记忆体不足
我没有看到版本后面有post,但后来有解决cudnn的问题了
后来的问题好像是batch size的问题,可能还要找一下要去哪里调参数
你这是利用PaddleServing进行部署吧?好像该方法部署默认batch_size=1,理论应该不会出现显存不足的问题,你可以多实验几次,或者换台机器试下
它是有时候会侦测到文字,有时候不行,就是因为记忆体不足
这个问题我也发现了,PaddleServing部署有一个很大问题,我前面也提到了,很多参数无法进行设置,尤其是det_limit_side_len
关于图片尺寸的参数,该参数设置较小会导致很多图片文字无法识别
@Biaocsu 我可能会试别的方法了,可能因为我设备不足的问题,所以执行的时候,会一直当机
谢谢你跟我讨论这个问题,不知道你后来进行到哪里了
我三种方式都试了(两种部署,一种Python调用),部署都有无法解决的问题,有可能用python调用,自己部署吧