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

ビルド環境をNuitkaからPyInstallerへ移行する #439

Closed
y-chan opened this issue Jul 30, 2022 · 15 comments · Fixed by #504
Closed

ビルド環境をNuitkaからPyInstallerへ移行する #439

y-chan opened this issue Jul 30, 2022 · 15 comments · Fixed by #504
Assignees

Comments

@y-chan
Copy link
Member

y-chan commented Jul 30, 2022

内容

題の通り
理由としては、Nuitkaのビルド時間が長すぎるため
Nuitkaを選択した理由として、ライセンスなどの関連の問題や、実行速度の向上などが挙げられたが、ビルドに時間がかかりすぎてリリースをするのに必要な時間が増えてしまっています。
実行時間も、Pythonコマンドで実行した場合とrun.exeを実行した場合で大きく変化がないので、PyInstallerでも問題がないと考えられます。

COEIROINKはPyInstallerが使用されていると思いますが、何か知見等あれば教えていただけると幸いです...! @shirowanisan
(もしよろしければ、ビルドスクリプトなどあれば、共有いただけると大変助かります...!)

Pros 良くなる点

ビルド時間が短くなり、リリースにかかる時間が短くなる。

Cons 悪くなる点

特にないと思われる。

実現方法

ビルドに使うシステムをPyInstallerに変更
GitHub Actionsを変更
READMEの書き換え

@shirowanisan
Copy link
Contributor

自分は動けば良い精神なので適当で恐縮ですが、こちらのスクリプトでビルドしていますmm
https://github.com/shirowanisan/voicevox_engine/blob/c-1.6.0+v-0.12.3/script.ps1

@y-chan
Copy link
Member Author

y-chan commented Jul 31, 2022

大変助かります...!
こちらベースに色々試してみたいと思います...!

@Hiroshiba
Copy link
Member

メモ:あとはdocker部分・・・!

@Hiroshiba
Copy link
Member

でビルド周りに手を付ける必要があり、可能なら事故防止のためにpyinstaller化を完了しておくとコンフリクト解消の手間を省けるかもと思ってます!

あとはactionsでlinexビルドしたものをdockerに詰めて動かす部分かなと思っているのですが、 @y-chan さん的に道筋見えてたりされますか?👀
なんとなくですが、dockerfileでファイルを全部ADDしてrunを実行すればOKなのかなと思ってたりします。

(もしお忙しければ、この辺りめちゃめちゃ詳しそうな @aoirint さんにお願いできないかな…?とちょっと思ってたりします…!)

@y-chan
Copy link
Member Author

y-chan commented Oct 3, 2022

なるほど、確かに急いだ方が良さそうです...!
私自身がDockerに対する理解があまりなく、進めるためにDockerfileの書き方を理解する必要がありそうで、ちょっと困っています...
あと、現状のように最新のmasterのimageを作ってアップするようにさせるために少しGitHub Actions側も操作する必要があるかも?(ちゃんとみてないので必要ないかも)

Docker詳しい他の方にお任せできるとすごくありがたいのと、早く進められそうと思っています。それが難しそうであれば、ちょっと時間がかかりますが私の方で進めようかなと思います。

@Hiroshiba
Copy link
Member

なるほどです、返信ありがとうございます!

dockerは便利なのですが、知らないとたしかにちょっと難しい部分もちょくちょくありそうに感じました。
latest imageに関してはちょっと見てみた感じ、bulid.yml内で、releases由来だったらリリースにアップロード+docker push、それ以外ならdocker pushだけという感じで書くとすらっと行けそうかもと思いました!

@aoirint
Copy link
Member

aoirint commented Oct 5, 2022

現状のDockerfileはVOICEVOX ENGINEの開発環境・ビルド環境・実行環境を兼ねたものを想定していました。
バイナリ同梱する形に変更すると、開発環境としての利用が難しくなるかなと思います。
ドキュメントを整備できていない(&Linux以外のOSではパフォーマンス上の問題がある)ので、実際に使っている人はいない気もしますが・・・。

@Hiroshiba
Copy link
Member

@aoirint なるほどです。ちゃんと相談せずに独断で決めてしまって申し訳ありませんでした。
dockerやDockerfileの扱いを決めるのはこのissueと異なりそうなので、いったん別issueに切り出してみました。こちらで議論できますと幸いです!

@y-chan

↑の議論が決定しないとdocker化の方針がたたないので、Pyinstaller化は一旦ペンディングか、dockerは一旦無しでマージになりそうです。
ただ後者の場合はlatestのdockerの提供ができなくなる&actionsが回らなくなるので、申し訳ないのですがペンディングでお願いできるとという感じです 🙇‍♂️

@y-chan
Copy link
Member Author

y-chan commented Oct 5, 2022

少し考えたのですが、一旦nuitkaへの依存を完全に切る目的で、Docker内でもpyinstallerビルドを行うようにするというのも一つの手かなと思いました。その方法ならそこまでDockerfileの書き換えコストがかからない上、latestの提供もでき、かつDockerの扱いに関するIssueの議論も進められて、Rust版VOICEVOX Coreの方も進められるように出来る(こちらも、ビルドジョブが一本化されたPyInstaller版CIの方がレビューが進みやすいのではないかと思いました)のではないかと思いました。
一時的に(議論の末恒久的になるかもしれないですが)似たコードが複数部分にあるのは気持ち悪いですが、これなら素早く進められて、かつIssueを複数平行に進められるので良いのではないかなーと思いました。

@Hiroshiba
Copy link
Member

Hiroshiba commented Oct 5, 2022

Docker内でもpyinstallerビルドを行うようにする

なるほどです!
名案だと思ったのですが、よくよく考えるとRust版コアの対応に関してはおそらくビルドコードすべてに適用しないといけないので、Docker内でのpyinstaller化が終わってマージされてからRust版コア対応になるので、結局作業が直列になりそうに感じました!

@y-chan
Copy link
Member Author

y-chan commented Oct 6, 2022

そもそもbuild-dockerのCIでは、ビルドをしているわけではなく、run.pyをたたけるように整備しているだけなので、build-env以降を消すだけで一旦大丈夫なのではないかと思いました...!(build-envターゲットも、Linux版ビルド以外では使われていなさそうなので、一旦気にしなくてよいと感じました...!)
これならすぐにPRを作れそうなので、ちょっとやってみようと思います!

@Hiroshiba
Copy link
Member

ありがとうございます!

現状docker版で提供している「開発環境・ビルド環境・実行環境」のうち、ビルド環境の役割だけbuild.yml(=Github Actions上)に移して、開発環境と実行環境の役割はdocker側に残すという感じになりますね!
現状から考えると一番丸いのかなと思いました!

@Hiroshiba
Copy link
Member

PyInstaller化は完了かも・・・・?

@Hiroshiba
Copy link
Member

windows DirectML版動くの確認しました!
📝 linuxやmacでの動作報告もdiscord側でいただいてます

@Hiroshiba
Copy link
Member

Hiroshiba commented Nov 7, 2022

windowsのNVIDIA版も動くことを確認しました!

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

Successfully merging a pull request may close this issue.

4 participants