记一次微软onnxruntime推理框架的bug

ONNX Runtime 是一个跨平台的机器学习模型加速器,具有灵活的接口来集成特定于硬件的库。ONNX 运行时可以与 PyTorch、PaddlePaddle、Tensorflow/Keras、TFLite、scikit-learn 和其他框架中的模型一起使用。

c99299134b6810f3300383859ca54623.jpeg

最近研究使用onnxruntime推理PaddleOCR模型,为了使用显卡加速,使用onnxruntime-gpu版本。技术研究,什么都爱搞最新版本的,于是就下载了CUDA的12.1版本并安装。CUDA Toolkit Archive | NVIDIA Developer,onnxruntime下载了最新版Microsoft.ML.OnnxRuntime.Gpu.Windows的1.18.1版本

928fb28d1727787736891e88cd13fec9.png通过移植本人项目https://gitee.com/raoyutian/PaddleOCRSharp的PaddleOCR的C++代码并顺利编译完成。经过测试,GPU推理速度明显比Paddle框架的GPU版本还快。b173690bbb175b7933380ee84bef6cf3.png

于是找一台4090显卡的机器进行测试,同样安装CUDA的12.1版本,以及与开发环境一样CUDNN版本。期待也能顺利使用显卡加速。

居然在测试机器上,无法使用GPU加速!!!99865c8da19211c30f27f5e6d84b8055.png

于是使用依赖工具检测,居然缺少依赖。

dc1d5d26d5cbf3b203cd50f9b10750c7.png

于是本机同样依赖工具检测,虽然不缺依赖dll,但发现有几个依赖项居然指向了11.8版本的CUDA(本机有安装各种版本)。测试机器仅安装了CUDA的12.1版本。所以无法使用GPU加速。坑死人了!!!ef975f1b60b400f809296f59c86fd8d8.png188360e195213c9ed23aa490952f8e55.png

7c0aeeff9b1f5dc92837a7fc72ed8fe0.png

经过检查CUDA的安装目录下的bin目录文件,发现缺少的几个文件是存在的,只是文件名不一样。引用对不上

24d01c16c601d23e3b0dcf56ed75f315.png

根据onnxruntime的官方文档NVIDIA - CUDA  onnxruntime1.18.1版本是支持CUDA的12.X版本,Onnxruntime居然依赖文件名是错误的。坑死宝宝了!!!f6e9094b4e944641c55d6d757957a8c0.pngcd84e5e8d8644482996b841e0e6a3b35.png9f737ddb0762661085bac7591899f78d.pnge5cef5eeec0530b1a323b650c38aa65e.png

34aba4a767ed347578bce0ac1cefe460.png

安装CUDA12.5版本,发现也不行。

最终使用onnxruntime-gpu的1.18.0版本,

完美解决!哈哈哈哈

3422aeb70b802aa5822a86fa950d9103.png

不是最新版本就一定好,有多少坑,坑有多深,慢慢摸索吧。

最后附上onnxruntime-gpu使用PaddleOCR的模型推理效果:

77d08b07d19f9255390ad0c17fe22ce6.png

24c54111bd87d9d11c65b45c0b304eb3.png

PaddleOCR.dll封装后支持go\python\rust\c# C++等语言调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值