Skip to content

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

@qryxip

Description

@qryxip

内容

日本時間で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

その他

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions