PaddleOCR
PaddleOCR copied to clipboard
CPU推理,开启mkldnn报错 RuntimeError: could not execute a primitive
执行环境:ubuntu 20.04 + cpu + mkldnn
错误信息:
File "/usr/src/app.py", line 160, in invoke
ocr_result = ocr_inference(disk_im_fullpath)
File "/usr/src/app.py", line 87, in ocr_inference
result = ocr.ocr(im, cls=False)
File "/usr/local/lib/python3.8/dist-packages/paddleocr/paddleocr.py", line 524, in ocr
dt_boxes, rec_res, _ = self.call(img, cls)
File "/usr/local/lib/python3.8/dist-packages/paddleocr/tools/infer/predict_system.py", line 71, in call
dt_boxes, elapse = self.text_detector(img)
File "/usr/local/lib/python3.8/dist-packages/paddleocr/tools/infer/predict_det.py", line 234, in call
self.predictor.run()
RuntimeError: could not execute a primitive
这个似乎和 #3313 是同一个问题,但是一直没有修复吗?
mkldnn需要在intel的支持mkldnn计算的CPU上才能生效,你的CPU是?
我也遇到了这个问题。在Win11下直接安装的Python环境中没遇到这个问题。但是使用Linux虚拟机内的Ubuntu20.04容器部署全部程序后发现识别图片的时候第一次好像没问题,后面就大概率会提示“RuntimeError: could not execute a primitive”。 我发现这个问题与PaddleOCR初始化有关系,如果ocr = PaddleOCR(……)之后,反复使用ocr.ocr(……),就容易出问题。如果每次都重新使用PaddleOCR(……)生成新的ocr对象,再使用ocr.ocr(……)就不会遇到问题。但这样系统效率会降低一些吧?
@LDOUBLEV 跑在云服务上,虚拟化的CPU,打印出来的信息是。 2 Intel(R) Xeon(R) Processor @ 2.50GHz
应该就是正常的intel 服务器CPU。并且这个现象不是每次必现,偶尔出现
我也遇到了这个问题。在Win11下直接安装的Python环境中没遇到这个问题。但是使用Linux虚拟机内的Ubuntu20.04容器部署全部程序后发现识别图片的时候第一次好像没问题,后面就大概率会提示“RuntimeError: could not execute a primitive”。 我发现这个问题与PaddleOCR初始化有关系,如果ocr = PaddleOCR(……)之后,反复使用ocr.ocr(……),就容易出问题。如果每次都重新使用PaddleOCR(……)生成新的ocr对象,再使用ocr.ocr(……)就不会遇到问题。但这样系统效率会降低一些吧?
我就是初始化一次,然后反复使用的.
我就是初始化一次,然后反复使用的.
那么我们遇到的似乎是一样的问题。如果初始化一次,使用后等一段时间再用好像就不会报这个错。
@LDOUBLEV
我在本地的服务器上,for循环去跑同样的代码,也是intel的CPU就不会出现这样的问题...
同步一下我的相关进展
最初的现象
在云服务上,全局初始化一次,进行多次推理,然后出现了错误:RuntimeError: could not execute a primitive
后续尝试
- 在本地的服务器上,同样的docker镜像,同样的代码,完全没问题,intel和amd型号的CPU都试了,都是新型号的家用CPU。
- 最后在云服务上,每次前向都重新进行模型的初始化,然后就解决了这个问题。
同步一下我的相关进展
最初的现象
在云服务上,全局初始化一次,进行多次推理,然后出现了错误:RuntimeError: could not execute a primitive
后续尝试
- 在本地的服务器上,同样的docker镜像,同样的代码,完全没问题,intel和amd型号的CPU都试了,都是新型号的家用CPU。
- 最后在云服务上,每次前向都重新进行模型的初始化,然后就解决了这个问题。
这样耗时不会增加吗?有评估过影响多大吗?
thanks to @pengfeidip , following the solution that new object for every request , resolved present issue ;