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

[project-vvm-async-api] get_supported_devices_jsonをfallibleに #502

Conversation

qryxip
Copy link
Member

@qryxip qryxip commented May 27, 2023

内容

voicevox_get_supported_devices_jsonをfallibleにします。

#280 (comment)

関連 Issue

その他

多分"get_"という命名が不適切になる気がします。

@qryxip
Copy link
Member Author

qryxip commented May 27, 2023

PR作っておいてなんですが、onnxruntimeのコードを見るとデータ自体はconstexprとして埋まっているみたいなので、

v1.14.1: https://github.com/microsoft/onnxruntime/blob/v1.14.1/onnxruntime/core/providers/get_execution_providers.cc#L172-L184
v1.15.0: https://github.com/microsoft/onnxruntime/blob/v1.15.0/onnxruntime/core/providers/get_execution_providers.cc#L196-L209

これがCIで動いているなら実質的にinfallibleなものとみなせるのでは? という気がしてきました。

#[rstest]
fn supported_devices_get_supported_devices_works() {
let result = SupportedDevices::get_supported_devices();
// 環境によって結果が変わるので、関数呼び出しが成功するかどうかの確認のみ行う
assert!(result.is_ok(), "{result:?}");
}

@qryxip qryxip mentioned this pull request May 27, 2023
67 tasks
@qryxip
Copy link
Member Author

qryxip commented May 28, 2023

つまり「onnxruntimeの現段階での実装上」、事前のユニットテストさえあればget_support_devicesは必ず成功すると考えてよく、その上でVOICEVOX_RESULT_GET_SUPPORTED_DEVICES_ERRORをどう扱うかですね...

将来的に実行時にエラーが発生すると考えるならこのPRのようにするべきだし、考えないならVOICEVOX_RESULT_GET_SUPPORTED_DEVICES_ERROR自体を削除した方がいい、と思います。

@qryxip
Copy link
Member Author

qryxip commented May 28, 2023

infallibleだと考えた場合ですが、build.rsのレイヤーでonnxruntime-rsを呼ぶことで #503 で定数化する(extern const char*化)、というのを思い付きました。
(dependency graph上でonnxruntime-rsが2つに増えるのが若干引っ掛りますが、試しにcargo addしても問題を起こさなかったので多分問題無し?)

@Hiroshiba
Copy link
Member

見ました! 調査ありがとうございます!!

get/freeで良いのかなと思いました!
まああまりしっかりとした理由はないのですが、json系は統一しておこうかな~くらいの気持ちです。
(深い理由はないです)

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!!

SupportedDevices::get_supported_devices()が2回呼ばれているのがちょっと不自然に感じましたが、compatible_engine.rsは互換性を持たせ続ける必要があるのでこの形がいいのかなと思いました!!

@qryxip qryxip marked this pull request as ready for review June 3, 2023 06:30
example/python/run.py Outdated Show resolved Hide resolved
example/python/run.py Outdated Show resolved Hide resolved
@Hiroshiba
Copy link
Member

Hiroshiba commented Jun 5, 2023

たぶん問題ないと思うので、テスト通ったらマージしようかなと思います!

@Hiroshiba
Copy link
Member

Hiroshiba commented Jun 6, 2023

マージします!! 議論ありがとうございました!!!

@Hiroshiba Hiroshiba merged commit 38549d3 into VOICEVOX:project-vvm-async-api Jun 6, 2023
@qryxip qryxip mentioned this pull request Jul 22, 2023
69 tasks
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