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

add: onnxruntime-win-x64-gpu-cudaを追加 #44

Merged

Conversation

qryxip
Copy link
Member

@qryxip qryxip commented Jul 29, 2024

内容

#43 の実装の上に、リリースとしてonnxruntime-win-x64-gpu-without-cudaを追加します。

出力例: https://github.com/qryxip/onnxruntime-builder/releases/tag/1.17.3

関連 Issue

ref #43
ref VOICEVOX/voicevox_core#810

スクリーンショット・動画など

その他

@qryxip qryxip marked this pull request as ready for review August 3, 2024 07:16
@qryxip qryxip requested a review from Hiroshiba August 3, 2024 07:16
Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ほぼLGTMです!!

cudaをホワイトリスト形式ではなく、withoutとブラックリスト形式にしているのって意図とかあったりされますか? 👀

今後のこと考えると、抜いているものをwithoutとするより、入っているものを書くことになる気もしました!
というのも、おそらくdml以外は何かしらのdllを同梱する必要があるから、そのたびにwithoutが増えるよなぁと。

まあでもどうなっていくか若干見通し立たないし、今までの形を投手するのも良いと思うので、withoutで進んでって今後変えるかも?ってのはどうでしょう。

@qryxip
Copy link
Member Author

qryxip commented Aug 3, 2024

というのも、おそらくdml以外は何かしらのdllを同梱する必要があるから、そのたびにwithoutが増えるよなぁと。

あーそういえばROCmも_providers_rocmに分かれてましたね。

うーん。-only-{EP名}を並べるとか…?

  • onnxruntime-linux-x64-cpu-1.18.1.tgz
  • onnxruntime-linux-x64-gpu-1.18.1.tgz
  • onnxruntime-linux-x64-gpu-only-cuda-1.18.1.tgz
  • onnxruntime-linux-x64-gpu-only-rocm-1.18.1.tgz
  • onnxruntime-win-x64-cpu-1.18.1.tgz
  • onnxruntime-win-x64-gpu-1.18.1.tgz
  • onnxruntime-win-x64-gpu-only-cuda-1.18.1.tgz
  • onnxruntime-win-x64-gpu-only-dml-1.18.1.tgz

ちなみにpykeio/ortのラインナップはこれです。確かnoneを含むすべてにDirectML, Core ML, XNNPACKが入っていたはず。
https://github.com/pykeio/ort/blob/v2.0.0-rc.4/ort-sys/dist.txt

EP Supported Binaries Static linking
NVIDIA CUDA 🟢 🟢
NVIDIA TensorRT 🟢 🟢
Microsoft DirectML 🟢 🟢 🟢
Apple CoreML 🟢 🟢 🟢
AMD ROCm 🟢 🟢
Intel OpenVINO 🟢
Intel oneDNN 🟢
XNNPACK 🟢 🟢 🟢
Qualcomm QNN 🟢
Huawei CANN 🟢
Android NNAPI 🟢
Apache TVM 🟢
Arm ACL 🟢
ArmNN 🟢
AMD MIGraphX
AMD Vitis AI
Microsoft Azure
Rockchip RKNPU

microsoft/onnxruntimeの方はCUDAとDirectMLくらいしか無かったような? ROCmとかは無かったと思います。
[追記] Pythonとかのバインディングの方にはROCmとかが入っているらしい…?

まあでもどうなっていくか若干見通し立たないし、今までの形を投手するのも良いと思うので、withoutで進んでって今後変えるかも?ってのはどうでしょう。

まあ #43 をやった理由の一つがそれですし、今後変えるということにするのはまあありかなとは思います。

@Hiroshiba
Copy link
Member

Hiroshiba commented Aug 3, 2024

お~~~詳しくありです!!!
その例を見る感じ、省いていく形式(without)にはならない気がしました。

いろいろ考えられそうですけど、only接頭詞?は要らない気もしますねぇ・・・。
only-macとかonly-ubuntuみたいなパッケージを見かけたことがないかもです。
(ChatGPTにも聞いてみた https://chatgpt.com/share/56b092c3-c11b-4d88-8739-9114789bc775

まあ、あとから変えられるから深くは考えないでよいという前提でとりあえず
onnxruntime-win-x64-gpu-cuda-1.18.1.tgz
の形にするとかでどうでしょう・・・?

あとたぶん全部入りは将来的に作らなくなるかも。
対応するデバイスが被るのにやたら容量だけ増えて需要がなくなりそうなのと、容量が大きくなりすぎてアップロードできなくなりそうなので。。

@qryxip
Copy link
Member Author

qryxip commented Aug 4, 2024

onnxruntime-win-x64-gpu-cuda-1.18.1.tgz

まあそれでよさそう。

あとたぶん全部入りは将来的に作らなくなるかも。
対応するデバイスが被るのにやたら容量だけ増えて需要がなくなりそうなのと、容量が大きくなりすぎてアップロードできなくなりそうなので。。

EPを二つ以上使いたくなるケースがもしあるならそれに対応できなくなる、というのが懸念になるかなと思ってます。例えばGeForce一台とRadeon一台をLinuxから使いたい場合とか。というのも複数のONNX Runtimeを使うのはpykeio/ortの設計を差し引いても無茶になるので、EPを複数使うには一つのONNX Runtimeに詰め込まなくてはなりません。その辺も考慮した上で決断した方がよいかなと思います。

容量については、別にCUDAとかDirectML自体を詰め込むわけではない(それはvoicevox_additional_librariesの役割)ので、onnxruntime-builder側では仮にEPを全部盛りにしたとして1GBも超えないのでは? と思ってます。

@Hiroshiba
Copy link
Member

Hiroshiba commented Aug 4, 2024

全部入りに関してなるほどです。
確かに、executorが依存するdll等を含めなくて良いというのは盲点でした。

作れるうちは全部入り作ってもいいと思いました!
ちなみに需要で想像してるのは2種類の GPU 持ってる人ではなく、2種類の GPU に対応したアプリケーションをリリースしたい人だと思ってます。(もちろんVOICEVOXもそう。)
VOICEVOXがそういうのをリリースするまでは、全部入りが作るの大変になってきたら切っても良さそう。

・・・いやでもいらないのが400MBとかになってきたら、さすがに必要最低限なのにしたくなりそう。
(CUDA onnxruntimeの容量は200MBなので、いらなくてまあまあ重いのが2つ以上になるとネガティブになってきそう)
まあその時はその時ということで!

@qryxip qryxip changed the title add: onnxruntime-win-x64-gpu-without-cudaを追加 add: onnxruntime-win-x64-gpu-cudaを追加 Aug 4, 2024
@qryxip qryxip requested a review from Hiroshiba August 4, 2024 18:06
Copy link
Member

@Hiroshiba Hiroshiba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

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

Successfully merging this pull request may close these issues.

2 participants