-
Notifications
You must be signed in to change notification settings - Fork 205
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
追加: 速度ベンチマーク #1240
追加: 速度ベンチマーク #1240
Conversation
Co-authored-by: sabonerune <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ほぼLGTMです!!
コードに関していくつかコメントしました!
あとtest/
ディレクトリはテストファイルがある場所で、ベンチマークはテストではない気がちょっとしました。
かなり立派ですし、benchmarkディレクトリを作っちゃっても良いかも?
(本当にテストを書く予定とかでしたらこのままでも!)
ちょっと手元でも試してみます!
本チェックは「手動の速度テスト(speed test)」と解釈しています。ゆえに @Hiroshiba |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ほぼ lgtm です!!
ちょっとコメントだけお願いできると!!
@Hiroshiba |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!!
もしかしたらより良いコードの形があるかもですが、主目的は計測テストだと思うのでとりあえずマージで・・・!
warn_msg = "root_dirが未指定であるため、自動的に `VOICEVOX/vv-engine` を `root_dir` に設定します。" | ||
warnings.warn(warn_msg, stacklevel=2) | ||
root_dir = Path("VOICEVOX/vv-engine") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
このフォールバックはほぼ100%の環境で意味をなさないので、無いほうが良いかもですね・・・。
root_dir
無指定ならエラー、あるいはfakeを実行しない形が使いやすいかもとか思いました!
# 実行コマンドは `python -m test.benchmark.speed.speaker` である。 | ||
# `server="localhost"` の場合、本ベンチマーク実行に先立ってエンジン起動が必要である。 | ||
# エンジン起動コマンドの一例として以下を示す。 | ||
# (別プロセスで)`python run.py --voicevox_dir=VOICEVOX/vv-engine` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらも
def execute() -> None: | ||
"""計測対象となる処理を実行する""" | ||
client.get("/speakers", params={}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ関数の方の名前を良い感じにすればコメントなくせるかもですね!
target_process()
とか・・・?
@Hiroshiba |
内容
概要: 速度ベンチマークの追加
#1129 にて速度低下が問題視され、いくつかの解決方法が提案されている。
しかしその前提となる速度ベンチマークは各自に任されており、統一的測定がなされていない。
CI と同様に、benchmarking も as a code として実現すべきである。
このような背景から、コードによる速度ベンチマークの追加を提案します。
実装意図
より現実に近いベンチマークのために、2種類のエンジン起動法を用意した。
一方は
TestClient
を用いる方法であり、ネットワークを経由しないベンチマークである。これにより API 本体のベンチマークが可能になる。他方は localhost を用いる方法であり、ネットワークを経由するベンチマークである。他プロセスで
run.py
を立ち上げる必要があるが、これで本番環境でのベンチマークが可能になる。この 2つは
use_localhost
引数で制御している。実装詳細意図
(resolved
)type: ignore
をclient.get()
で利用している。型推論がなぜか上手くいかないため(解決法募集中)。ベンチマーク結果例
関連 Issue
/speaker_info
と/singer_info
の高速化 #1129