-
Notifications
You must be signed in to change notification settings - Fork 198
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
ランタイム多重ロードの意義はなにか #1148
Comments
少なくとも自分はissueを見て初めて課題を認識しました! @takana-v @PickledChair もし認識違いあればコメントいただけると…! |
同名のライブラリを複数読み込んだ場合の挙動は、一番初めに読み込んだものを使うようになっているようです。 |
実のところ #254 の作業が行われた際、これは複数コアの作業 VOICEVOX/voicevox_project#3 の文脈で行われていました。自分は VOICEVOX/voicevox_project#3 (comment) を読んで「1つのプロセスで同時に(libtorch 版、onnxruntime 版の区別なく)複数のコアをロードしたい」というモチベーションがあるのだという先入観を持ってレビューに参加していました。 この先入観から、
とおっしゃっていることと同じ趣旨であり、当時の自分もとりあえず同じような理解をしました。つまり基本的には libtorch と onnxruntime を任意個ではなくそれぞれ1個ずつ指定するためにこの機能が実装されたという理解です。 今これらを踏まえて思うのは、この仕様であれば (その後 VOICEVOX/voicevox_project#3 (comment) に書かれているとおり、複数コアのモチベーションの一部はコア側が複数モデルを持てるようにすることで実現されてきているため、複数コア周りの機能追加への欲求は下火になったと認識していました。) 現時点では Hiroshiba さんが
とおっしゃっていることに同意です。 |
とのことなので、種別の異なるランタイムの並列読み込み(例: libtorch/ort)が設計意図と理解しました。 ランタイム多重ロードに関しては
とのことなので、意図せず可能になった挙動だと理解しました。 意図せず可能になった挙動(多重ロード)の実動作に関しては
とのことなので、1 つのランタイムのみが利用される形と推定される、と理解しました。 理想的なランタイム読み込み設計・挙動に関しては
とのことなので、種別の異なるランタイムが各 1 つ指定可能・指定時は並列読み込み(例: libtorch/ort)、が理想的と理解しました。 当時の実装背景・レビュー進行等ふくめ、非常によく理解できました。 @Hiroshiba さん、@takana-v さん、@PickledChair さんありがとうございました! |
質問の内容
現在の VIOCEVOX ENGINE はランタイム多重ロードをサポートしている(README.md#音声ライブラリを直接指定する)。
一方、多重ロードした際の正常動作は「最新版のonnxruntime等が使われる」と定義されている(#1133)。
つまり、多重ロードしても使われるのは 1 つのランタイムのみ、という状態になっている。
このような背景から以下の質問があります:
Q: ランタイム多重ロードの意義はなにか
core_wrapper.py
の履歴を遡りましたが、ヒントとなる情報はありませんでした(追記:core_wrapper.py
initial commit の PR #254 にヒントがあるかも)。実装上の考慮事項をかなり増やしている機能なので、その意義を知りたいと感じます。
VOICEVOXのバージョン
0.18.0
The text was updated successfully, but these errors were encountered: