記一次C#使用Onnx深度學習下調用Cuda的方法
最近在研究深度學習,使用的是onnx架構,然后筆記本正好是N卡的,想著可以調用顯卡來加速學習過程
調用顯卡進行深度學習也遇到了一些問題,主要的問題是報這個錯誤 LoadLibrary failed with error 126 " when trying to load onnxruntime_providers_cuda.dll
那這篇文章也主要是為了解決如何使用C#部署cuda的Onnx而寫的
在項目的Nuget里安裝 Microsoft.ML.OnnxRuntime.Gpu

同時,如果之前安裝了Microsoft.ML.OnnxRuntime的話,需要先刪除Microsoft.ML.OnnxRuntime,只保留 Microsoft.ML.OnnxRuntime.Gpu就夠了
然后注意一下版本,我這邊最新的是1.17.1的,所以就按照1.17.1的來說
然后我們到https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html這里去

主要是注意這兩個,ONNX的版本1.17支持的CUDA是12.2的(事實上 只要大版本是12就行,比如12.4也是可以使用的)
然后我們就要去Nvidia 的官網下載相關驅動了
首先我們去https://developer.nvidia.com/cuda-downloads,這里 下載最新的cuda 工具包,需要注意工具包的版本是否對應

比如當前工具包是12.4的,版本上和onnx 1.17.1要求的12.2屬于同一個大版本下的,所以可以使用
這里需要下載3G的安裝包,安裝完成后
我們再去https://developer.nvidia.com/rdp/cudnn-download,這里下載cuDNN
cuDNN相當于cuda插件一般的存在,主要是為了深度學習使用的,

同樣要注意版本,我們下載的是給cuda12使用的
下載完后,是一個壓縮包

我們不用管,直接把壓縮包里的全部文件都解壓到cuda的默認安裝路徑就行(默認是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4,如果你在上一步安裝cuda的時候,更改了cuda的安裝路徑,那解壓的路徑也要相應的改成自己設置的安裝路徑)
然后 這個時候,我們還需要下載一個的東西 https://forums.developer.nvidia.com/uploads/short-url/e76PYqafTHaGM1XQhQumCSL4vqb.zip

將這里下載到的zlib123dllx64.zip壓縮包里的zlibwapi.dll解壓到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin這個文件夾里面去,
最后,我們需要在環境變量里,將

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\include\
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\lib\x64\
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\extras\CUPTI\lib64\
這三個路徑添加進去,至此cuda和cuDNN的安裝便算是完成了。
然后接下來,我們需要做另外一個工作,之前在Nuget里安裝了Microsoft.ML.OnnxRuntime.Gpu,但是這個Nuget自動安裝的運行庫其實我們是用不了的,會報錯
這個時候,然后我們需要先瀏覽https://github.com/microsoft/onnxruntime/releases

手動下載onnxruntime-win-x64-cuda12-1.17.1.zip壓縮包

將壓縮包里的文件全部解壓到覆蓋C:\Users\{User Name}\.nuget\packages\microsoft.ml.onnxruntime.gpu.windows\1.17.1\runtimes\win-x64\native\ 里面
然后這個時候,在VS里清理項目并重新生成

通過Pinvoke調用該命令就能檢查ONNX調用cuda是否成功了

浙公網安備 33010602011771號