Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ppocr在麒麟npu上,predictor_->Run();报错Segmentation fault #10577

Open
LinRS1999 opened this issue Oct 21, 2024 · 3 comments
Open

ppocr在麒麟npu上,predictor_->Run();报错Segmentation fault #10577

LinRS1999 opened this issue Oct 21, 2024 · 3 comments
Assignees

Comments

@LinRS1999
Copy link

  • 版本、环境信息:
       1)Paddle Lite 版本:v2.14-rc
       2)Host 环境:Mac OS 13.0 M1Pro、docker:paddle-lite:2.0.0_beta
  • 模型信息
       1)模型 ch_ppocr_mobile_v2.0_detch_ppocr_mobile_v2.0_rec
  • 复现信息:
    1)意图:想要在Kirin 810上的NPU推理ppocr
    2)我的执行步骤:
    1. 更新支持Kirin NPU的paddle lite(只运行了tiny_publish相关脚本)
    3801729517560_ pic
    3811729517570_ pic
    3821729517584_ pic
    更换后lib和include为
    3841729524617_ pic
    3851729524682_ pic
    2. 将下载的tgz模型通过opt转换为.nb(在docker中用的paddle_lite_opt,在mac上用的v2.14-rc的opt_macos_aarch64)
  • paddle_lite_opt --model_file=./ch_ppocr_mobile_v2_0_det_v2_0/model.pdmodel --param_file=./ch_ppocr_mobile_v2_0_det_v2_0/model.pdiparams --optimize_out=./ch_ppocr_mobile_v2_0_det_v2_0_opt --valid_targets=huawei_kirin_npu,arm --optimize_out_type=naive_buffer
  • paddle_lite_opt --model_file=./ch_ppocr_mobile_v2_0_rec_v2_0/model.pdmodel --param_file=./ch_ppocr_mobile_v2_0_rec_v2_0/model.pdiparams --optimize_out=./ch_ppocr_mobile_v2_0_rec_v2_0_opt --valid_targets=huawei_kirin_npu,arm --optimize_out_type=naive_buffer
    3. 修改了 https://github.com/PaddlePaddle/Paddle-Lite-Demo/tree/develop/ocr/android/shell/ppocr_demo/src 中的代码,添加了如下图片注释中的代码
    3771729517449_ pic
    3781729517458_ pic
    4. 执行 https://github.com/PaddlePaddle/Paddle-Lite-Demo/tree/develop/ocr/android/shell/ppocr_demo 中的build.sh。报错如下(图片中的打印输出数字是定位在哪报错的,麻烦忽略)。定位在det模型的predictor_->Run();中报错。
    3751729517357_ pic
    3831729517738_ pic
    3)问题
    1. 我按以上同样的步骤,在转模型时只声明--valid_targets=arm,然后把在cpp中添加的代码注释(就是config配置set那部分代码)掉,执行,是可以正常输出的,如下。所以请问对于NPU的推理执行,我是不是中间漏掉了什么步骤,导致错误?
    3761729517391_ pic
    2. 在截图上的warning,我在docker中pip下载的paddlelite是2.14rc0的,在mac上用的也是v2.14-rc的opt_macos_aarch64来转为.nb,但很奇怪报了说我用的v2.10-rc的opt的警告,请问这个影响嘛?我有尝试将Paddle-Lite版本降为v2.10-rc,警告消除但是仍然报错Segmentation fault
    warning: the version of opt that transformed this model is not consistent with current Paddle-Lite version. version of opt:v2.10-rc version of current Paddle-Lite:v2.14-rc
@ddchenhao66
Copy link
Collaborator

ppocr模型任务的输入shape不固定,麒麟npu对于这种场景效果并不好,所以并不建议使用;如果要使用,目前v2.14-rc发布的版本并不直接包括对应支持麒麟npu的部署包,建议使用v2.12的release版本,可以先根据文档在 PaddleLite-generic-demo仓库中demo验证npu后端没问题后,适配Paddle-Lite-demo中的例子。

@LinRS1999
Copy link
Author

已经通过PaddleLite-generic-demo仓库中demo验证了npu后端没问题。我更换了v2.12的release版本,然后把PaddleLite-generic-demo仓库中lib文件夹内huawei_kirin_npu的相关so都拖到我的项目中,重新运行报了下面这个错,请问这个是什么问题?我也再次试了在转模型时只声明--valid_targets=arm,的得到的模型再次运行是可以正常推理的。
image

@ddchenhao66
Copy link
Collaborator

只声明--valid_targets=arm应该就是都会让算子跑在arm cpu上,npu对这个模型支持效果不好的,建议不用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants