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

Windows用実行バイナリの自動ビルドを追加 (#85) #107

Merged
merged 63 commits into from
Sep 21, 2021

Conversation

aoirint
Copy link
Member

@aoirint aoirint commented Sep 19, 2021

ref: #85

Windows用実行バイナリを自動ビルドするGitHub Workflowを追加します。

run.pyをNuitkaでビルドし、成果物をGitHub ActionsのArtifactとして書き出します。

LibTorch、CUDA/cuDNNを同梱します。GPU版のNVIDIA Driverを除き、追加の依存関係はありません。

CUDA/cuDNNは、LibTorchに同梱されている版をそのまま同梱します。

@aoirint aoirint marked this pull request as ready for review September 20, 2021 16:07
@aoirint
Copy link
Member Author

aoirint commented Sep 20, 2021

Windows + NVIDIA GPU ネイティブ環境で、自動ビルドしたCPU・GPU版で正常起動を確認したので、Ready for reviewにしました。

Linux版と同様、masterブランチにpushされたとき・GitHub Releaseが作成されたときに自動ビルドされますが、1回のpushあたり、およそ1.5時間後にLinux版と合わせて12GBの成果物がGitHub WorkflowのArtifactにアップロードされます。

@aoirint aoirint marked this pull request as draft September 20, 2021 16:22
@aoirint
Copy link
Member Author

aoirint commented Sep 20, 2021

OpenJTalkの辞書ダウンロードをしていなかったのでドラフトに戻しました。

@aoirint aoirint marked this pull request as ready for review September 20, 2021 18:55
@aoirint
Copy link
Member Author

aoirint commented Sep 20, 2021

OpenJTalkの辞書ダウンロードをしていなかったのでドラフトに戻しました。

修正したのでReady for reviewにしました。

自動ビルドには全体で2時間くらいかかるようです(キャッシュがない場合)。

Windows版自動ビルドでは、VOICEVOX CORE 0.5.4を使っています。
windows-cpuでは、CPU版のcore.dll(core.zipではcore_cpu.dll)とCPU版のLibTorchを使っていて、
windows-nvidiaでは、GPU版のcore.dll(core.zipではcore.dll)とGPU版のLibTorch(CUDA/cuDNNが同梱されている)を使っています。

Artifactのzipでは、CPU・GPUどちらのcore dllもそれぞれcore.dllという同名にリネームしているのが、
あまりよくない点かなと思いました。
coreのsetup.pyをそれぞれ書き換えて、同梱するcore dllのファイル名が、core.zipにおけるファイル名と同じ(core_cpu.dllcore.dll)になるようにすることができると思いますが、
そうしたほうがよいでしょうか。

@aoirint
Copy link
Member Author

aoirint commented Sep 20, 2021

VOICEVOX CORE 0.6.0がリリースされたので、Windows版自動ビルドは0.5.4→0.6.0への追従をしておきました。

(Linux版の方は、CORE 0.5.4以降の正式なCPU版を使うように変えるのと、 #98 と、バイナリビルドを新しいCOREと同じUbuntu 18.04上でするように変えるのと、0.6.0に追従させるというのがありますね)

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.

Artifactのzipでは、CPU・GPUどちらのcore dllもそれぞれcore.dllという同名にリネームしているのが、あまりよくない点かなと思いました。

個人的にはcore.dll統一でいいと思います!
というのも、実はcore_cpu.dllcore.dllとしてビルドしたものをリネームしているだけなので、core_cpu.dllとしてビルドするとエラーになりそうだからです。

@aoirint
Copy link
Member Author

aoirint commented Sep 21, 2021

というのも、実はcore_cpu.dllcore.dllとしてビルドしたものをリネームしているだけなので、core_cpu.dllとしてビルドするとエラーになりそうだからです。

なるほどです。

Linux版も同じでしょうか?
#114setup.py を書き換えにいく方法をとっていて、問題が起きてWorkaroundを実装していたので、そちらも libcore.so に統一しようと思います。

  • 使用しない方のライブラリはイメージ内で削除
    • ldconfig がCPU・GPUの共有ライブラリを重複したライブラリとして扱い、一方を認識しない問題が起きたため
    • エラー内容: /sbin/ldconfig.real: /opt/voicevox_core/libcore.so is not a symbolic link

@Hiroshiba
Copy link
Member

linux版も同じです!
恥ずかしながら、dll/soは名前をリネームすると使えなくなることを知らなかったので、こうなっています。0.7.0にアップデートするタイミングで、覚えていたらcpu/core.dllなどの形でファイル名が一致するようにしようと思います。

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! ln -sにすればアクションに必要なディスク容量を削減できるんですね。なるほどです。

@Hiroshiba Hiroshiba merged commit 751b0d7 into VOICEVOX:master Sep 21, 2021
@aoirint aoirint deleted the patch-windows-build branch October 9, 2023 03:00
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