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

ONNX Runtime本体にマージされたRust実装を使う #427

Closed
3 tasks done
qryxip opened this issue Feb 14, 2023 · 4 comments
Closed
3 tasks done

ONNX Runtime本体にマージされたRust実装を使う #427

qryxip opened this issue Feb 14, 2023 · 4 comments

Comments

@qryxip
Copy link
Member

qryxip commented Feb 14, 2023

内容

日本時間で2023年2月9日、ONNX Runtime本体へのRustバインディング追加のPRがマージされました。

まだ深く触れたりした訳ではないのですが、onnxruntime-rsとの最大の違いとしてはonnxruntime.dllの読み込みがdlopen/LoadLibrary*ベースになったことが挙げられるのではないかと思います。DLLのパスを指定することもできます。ただし読み込んだDLLはEnvironment共々OnceCellで管理されるみたいなので、DLLの読み直しはできなさそうです。

onnxruntime::environment::Environment::with_library_path

あとはORT_RUST_STRATEGY=compileという指定でonnxruntime.dllのダウンロードするのではなく手元でCMakeする選択肢が入ったことでしょうか (あと何故かこっちがデフォルトになってます)。

Pros 良くなる点

個人的な意見としては、dlopen/LoadLibrary*ベースになったことはVOICEVOX COREにとっても大きいと思ってます。
DLLが無いときには人間が読めるメッセージを出せますし、voicevox_core.dllの読み込みからinitializeまでの間にonnxruntime.dllをどっかからダウンロードしてくる機構も考えられます。あとはrpathの指定や$ORT_OUT_DIRでのハックも不要になりますし、Python APIの取り回しも良くなるでしょう。

Cons 悪くなる点

実現方法

必要であるならVOICEVOX/onnxruntimeとしてフォークし、onnxruntime-rsから切り替える。

VOICEVOXのバージョン

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

@Hiroshiba
Copy link
Member

issue作成ありがとうございます!!
移行を検討しても良いのかなと思いました!

VOICEVOXのonnxruntime-rsはいくつかの変更が加わっていますが、これらの差分がなくても大丈夫なのかは検討しないとかも?
https://github.com/VOICEVOX/onnxruntime-rs/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Amerged

@qryxip
Copy link
Member Author

qryxip commented Feb 25, 2023

また追加しなおす必要がありそうですね。

これの /onnxruntime/src/部分をそのまま移植すればよさそうではあります。 いやビルド部分も要りますね
https://github.com/VOICEVOX/onnxruntime-rs/compare/cd5a6ebae8abc06080f4da9a248be590fc6ce2fe..405f62fb53df1b59b0e69adafbd1c28e4d5c2787

@Hiroshiba
Copy link
Member

Hiroshiba commented Mar 28, 2023

こちらのタスクですが、とりあえず本家onnxruntimeのリポジトリをforkしていろいろ進めています!
https://github.com/VOICEVOX/onnxruntime

fork側のissueはこちらです。

onnxruntimeリポジトリの修正は↑のissueで続けると良さそうで、
それをコアに導入するとかはコア側のissueで続けると良いのかなと!

@qryxip
Copy link
Member Author

qryxip commented May 22, 2024

#725 により、一旦不要になったと思います。
(今microsoft/onnxruntime見に行ったら、未だに全く動きが無かった…)

@qryxip qryxip closed this as not planned Won't fix, can't repro, duplicate, stale May 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants