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の使用スレッド数を指定できるようにする #63

Closed
AsPulse opened this issue Jan 8, 2022 · 5 comments
Closed

CPUの使用スレッド数を指定できるようにする #63

AsPulse opened this issue Jan 8, 2022 · 5 comments

Comments

@AsPulse
Copy link

AsPulse commented Jan 8, 2022

内容

ONNX RuntimeがCPU使用率を50%に抑える設定になっているので、それを環境変数を用いて設定できるようにしたいです。

このコメントにて、「Coreは本来デスクトップ版VOICEVOXなどで使われるため、50%の使用制限は適正」とされていたようです。

Pros 良くなる点

合成専用サーバーや、アナウンスなどのリアルタイム性が求められる場面でCPUを効率よく使用することができるようになります。

Cons 悪くなる点

今の所特に思いついていません。

実現方法

コメントにあるように、「モデルのSessionを作成する前に、Ort::SessionOptionsにオプションを設定することでスレッド数の指定ができそう」とのことです。

@Hiroshiba
Copy link
Member

環境変数で指定する方法と、initialize関数の引数で指定する方法があるかなと感じました!
実装的には関数の引数にしたほうが見通しが良さそうですが、どうでしょう・・・?
@Oyaki122 さんがプルリクエストを出されたあとのコメントになってしまいました、申し訳ないです。。)

@Oyaki122
Copy link
Member

@AsPulse さんが VOICEVOX/voicevox_engine#282 (comment) で環境変数の使用を提案されていたのはengine起動時の話でしょうか?
もしそうなのであれば環境変数で読むかコマンドライン引数で読むかはengine側におまかせして、こちらは引数指定にしてしまって問題ないと思います

また VOICEVOX/voicevox_engine#282 (comment)@aoirint さんが辞書形式での設定について話されていますが、これはinitialize関数実行時に

/*
  struct vv_config {
    const char* root_dir_path = "";
    bool use_gpu = false;
    int num_threads = 0;
  };
*/
vv_config config;
config.root_dir_path = "./model";
config.use_gpu = true;
config.num_threads = 4;
initialize(config);

のようにするということでしょうか?

@AsPulse
Copy link
Author

AsPulse commented Jan 11, 2022

@AsPulse さんが VOICEVOX/voicevox_engine#282 (comment) で環境変数の使用を提案されていたのはengine起動時の話でしょうか?

はい、その通りです!
(Core側の実装にあまり詳しくなく、EngineのIssueにして「Core側の修正が必要」とのご指摘を頂いたので、Core側にもIssueを建てた次第です。)
EngineがCoreを起動させる際、受け取った環境変数をそのまま引数に流すような実装があれば大丈夫です!

また、Issueのタイトルで「環境変数で」と限定してしまっていたため、修正を致しました。

@AsPulse AsPulse changed the title CPUの使用スレッド数を環境変数から受け取れるようにする CPUの使用スレッド数を指定できるようにする Jan 11, 2022
@y-chan
Copy link
Member

y-chan commented Jan 11, 2022

私はinitialize引数にデフォルト値を持たせた上で追加する方が合理的かなと思います。
理由としては、coreを利用する人が、引数以外の手段を考慮しなければならないのは、煩雑化の原因となると考えるからです。

デフォルト値を持たせれば、引数に関して、過去のバージョンとの互換性も保てるでしょうし、initialize引数とする方が良いと思いました。

@Oyaki122
Copy link
Member

core側での対応は終了したためcloseします

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants