ONNX Runtime 是一個跨平台的機器學習模型加速器,具有靈活的接口來內建特定于硬體的庫。ONNX 運作時可以與 PyTorch、PaddlePaddle、Tensorflow/Keras、TFLite、scikit-learn 和其他架構中的模型一起使用。
最近研究使用onnxruntime推理PaddleOCR模型,為了使用顯示卡加速,使用onnxruntime-gpu版本。技術研究,什麼都愛搞最新版本的,于是就下載下傳了CUDA的12.1版本并安裝。CUDA Toolkit Archive | NVIDIA Developer,onnxruntime下載下傳了最新版Microsoft.ML.OnnxRuntime.Gpu.Windows的1.18.1版本
通過移植本人項目https://gitee.com/raoyutian/PaddleOCRSharp的PaddleOCR的C++代碼并順利編譯完成。經過測試,GPU推理速度明顯比Paddle架構的GPU版本還快。
于是找一台4090顯示卡的機器進行測試,同樣安裝CUDA的12.1版本,以及與開發環境一樣CUDNN版本。期待也能順利使用顯示卡加速。居然在測試機器上,無法使用GPU加速!!!于是使用依賴工具檢測,居然缺少依賴。
于是本機同樣依賴工具檢測,雖然不缺依賴dll,但發現有幾個依賴項居然指向了11.8版本的CUDA(本機有安裝各種版本)。測試機器僅安裝了CUDA的12.1版本。是以無法使用GPU加速。坑死人了!!!
經過檢查CUDA的安裝目錄下的bin目錄檔案,發現缺少的幾個檔案是存在的,隻是檔案名不一樣。引用對不上
根據onnxruntime的官方文檔NVIDIA - CUDA onnxruntime1.18.1版本是支援CUDA的12.X版本,Onnxruntime居然依賴檔案名是錯誤的。坑死寶寶了!!!
安裝CUDA12.5版本,發現也不行。
最終使用onnxruntime-gpu的1.18.0版本,
完美解決!哈哈哈哈
不是最新版本就一定好,有多少坑,坑有多深,慢慢摸索吧。
最後附上onnxruntime-gpu使用PaddleOCR的模型推理效果:
PaddleOCR.dll封裝後支援go\python\rust\c# C++等語言調用。