CUDA12対応のonnxruntimeあるある

Pythonユーザでonnxruntime使ってよくあるトラブル。

最新のonnxruntime-gpuを入れたのにCUDA(CUDA Execution Provider)対応できない件。

 

NVIDIA - CUDA | onnxruntime

Install ONNX Runtime | onnxruntime

 

公式に書いてあるんだけど

onnxruntimeの1.17(1.17.1も同様)では想定しているCUDAは12.2とされているんだけど、デフォルトで配布されているバイナリはまだCUDA11.8でビルドされている。

CUDA12対応のバイナリは以下のコマンドで入る。

pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

 

NuGet(所謂Visual Studioとかで使うパッケージマネージャー)でも同様なのでCUDA12使う人は気を付けて下さい。上記リンク先にインストール方法書かれています。

比べて、Appleシリコンの方はデフォルトに吸収されたのでpip install onnxruntimeだけで今はCoreML使えます。

 

---

追記(03/16):

NVIDIA - TensorRT | onnxruntime

TensorRT Execution Providerを使う場合でもTensorRTのバージョンが指定されている。

これ以外だと色々とトラブルが発生することがある。

もちろんソースを持ってきて自分の環境用にバイナリを作ればいいんだろうけどそれぞれバージョン上がるたびに毎回それも手間ですね。

そのうちバージョン間互換性も増してくると思われるがCUDA界隈は絶賛更新中なので大変。

ですが、CUDA Execution Providerより性能出るのでせっかくなら使ってみましょう。

以上の場合まだ、zlib dllが必要なバージョンなのでお忘れなく。