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

cpu_num_threadsが未指定または0の場合に、論理コア数の半分をコアに渡すようにする #1092

Closed
sigprogramming opened this issue Feb 28, 2024 · 3 comments · Fixed by #1113
Labels
バグ 初心者歓迎タスク 初心者にも優しい簡単めなタスク

Comments

@sigprogramming
Copy link

sigprogramming commented Feb 28, 2024

内容

現在、cpu_num_threadsはコア(VOICEVOX CORE)にそのまま渡されていて(たぶん)、「cpu_num_threadsが未指定または0」の場合にどうなるかはコアの実装依存です。

そして現在のコアの実装は、「cpu_num_threadsが未指定または0」の場合に物理コア数が使用されるようになっていて、一部のCPUでCPUのすべてのコアが使用されるので、論理コア数の半分が使用されるようにするissueを立てています。

エンジンも、「cpu_numhreadsが未指定または0」の場合は、「論理コア数の半分」の値を渡すようにするのが良さそうです。

Pros 良くなる点

  • cpu_num_threadsが未指定または0」の場合の挙動がコアの実装依存ではなくなる

Cons 悪くなる点

  • 仕様が変わる

その他

@tarepan
Copy link
Contributor

tarepan commented Feb 28, 2024

前提: README.md の関連記述

--cpu_num_threads CPU_NUM_THREADS
                        音声合成を行うスレッド数です。指定しないと、代わりに環境変数VV_CPU_NUM_THREADSの値が使われます。VV_CPU_NUM_THREADSが空文字列でなく数値でもない場合はエラー終了します。

#### CPU スレッド数を指定する

CPU スレッド数が未指定の場合は、論理コア数の半分か物理コア数が使われます。(殆どの CPU で、これは全体の処理能力の半分です)  
もし IaaS 上で実行していたり、専用サーバーで実行している場合など、  
エンジンが使う処理能力を調節したい場合は、CPU スレッド数を指定することで実現できます。

- 実行時引数で指定する
  python run.py --voicevox_dir=$VOICEVOX_DIR --cpu_num_threads=4
- 環境変数で指定する
  export VV_CPU_NUM_THREADS=4
  python run.py --voicevox_dir=$VOICEVOX_DIR

意見

上記の通り、現在の ENGINE 仕様は CPU スレッド数が未指定の場合は、論理コア数の半分か物理コア数が使われます。(殆どの CPU で、これは全体の処理能力の半分です) です。
ENGINEの観点からは、むしろ現状の実装がバグ(50%でなく100%使ってしまう)だと言えそうです。
100%使い切りが好ましくない観点からも、明示的に50%を渡すのは効果的です。
「バグ修正により、デフォルト設定では全スレッドの50%のみを利用するようになります」とChangeLogに書く形で納得感が得られると考えます。
結論として、実装に賛成です。

@Hiroshiba
Copy link
Member

Hiroshiba commented Feb 28, 2024

@tarepan さんの意見と同感です!
50%だけ使われるのが正しい挙動だと勘違いしていたので、100%使われるのはバグ扱いで良いと思います!

@tomoish
Copy link
Contributor

tomoish commented Mar 8, 2024

実装を希望します。
Draft PR #1113 を作成しましたので、確認いただけると幸いです。

@tarepan tarepan added 状態:実装 実装をおこなっている状態 and removed 状態:実装者募集 実装者を募集している状態 labels Mar 8, 2024
@tarepan tarepan removed the 状態:実装 実装をおこなっている状態 label Mar 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
バグ 初心者歓迎タスク 初心者にも優しい簡単めなタスク
Projects
None yet
4 participants