-
Notifications
You must be signed in to change notification settings - Fork 121
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
音声合成の並列化は可能ですか? #513
Comments
並列推論はサポートされていませんね。理由としては、以前に並列推論をしてエラー落ちしたことがあったからです(参照: VOICEVOX/voicevox_engine#427 )
まだ試していませんが、CoreをロードしたプログラムやエンジンをWorkerのように複数立ち上げるのはどうでしょう? |
@sevenc-nanashi さんの仰るとおり、並列実行するとエラーが出たから(engine側で)mutexにしています。 なぜエラーが出るかに関しては実はちゃんと調査できていません。 ちょうど今APIの刷新を考えていて、その一環にasync化が含まれています。こちらのプロジェクトです。 ご興味あれば一緒に開発しましょう・・・!! |
@sevenc-nanashi ご教示ありがとうございます!複数workerにしてみるはありかなとも思っていました。 |
@Hiroshiba API刷新中なんですね。Issue見て対応できるところはチカラになりたいと思います。Rust学ぶチャンスかと |
@neuwell お久しぶりです。音声合成の並列化についてですが、この間やってみました。 c.bench_function("decode_sequential", |b| {
b.to_async(Runtime::new().unwrap()).iter(|| async {
for _ in 0..4 {
decode().await;
}
})
});
c.bench_function("decode_parallel", |b| {
b.to_async(Runtime::new().unwrap())
.iter(|| async { join!(decode(), decode(), decode(), decode()) })
}); 動かしかたについて一応書いておくと、Windowsの場合
となります。 (追記) Linux版の場合はCUDA Execution Providerに必要なsoを 結果としては音声合成を並列化しても速度はあまり改善されないか、悪化しました。次の画像は並列の方が微妙に速かったCUDA版のものですが、WindowsのDirectML版の場合逆に1.5倍程度遅くなりました。 CPUモードにして @Hiroshiba さんのDiscordでの発言を引用すると、
https://discord.com/channels/879570910208733277/893889888208977960/1133099073470210168 で、私も同じ意見です。ただ今のところは逆に遅くなってしまう危険の方が大きいというのもあり、逐次実行のみ提供するという形になりそうです。 あと将来的には複数のGPUを使えるようにした上で、GPU毎に並列で回すといったことはできるかもしれませんが、需要次第かと思います。 |
ご返信ありがとうございます。このことから離れてしまい返信遅くなりました。↑で掲載いただいた通りすでに処理自体がリソースを最適に活用されていたことは理解しました。ありがとうございます |
質問の内容
音声合成の並列化は可能ですか?音声合成が並列的に処理されてレスポンスが返ることを期待していましたが、実際には1つの合成処理を待つ必要があるかなと思ってます。
例えばエンジンの音声合成リクエストを2件同時に実行すると1つ目の処理の完了よりも、2つ目の処理の完了に時間がかかるように思います。これは1つ目の処理の完了を待機している時間が上乗せされていると予想しています。
エンジンへのhttpリクエストのcurl
またcoreの関数
voicevox_tts
をコールした場合も同様の結果が得られます。利用したいユースケース上、アプリにcoreを組み込みユーザからの連続したリクエストを受けて、高速にレスポンスしたく、同時にリクエストを受けた場合にレスポンスが遅延するようになる課題を解決したいと思っています。
VOICEVOXのバージョン
0.14.6
OSの種類/ディストリ/バージョン
その他
ご返答よろしくお願いいたします 🙇
The text was updated successfully, but these errors were encountered: