WindowsビルドをPyInstallerへ移行#443
Conversation
c02e055 to
66ab220
Compare
|
PRありがとうございます!!良いですね!! docker周りに関わるのですが… こうすれば、docker側はpyinstallerでビルドしたlinuxエンジンをダウンロードして使うだけにできるかなぁと。 |
|
@PickledChair さん、 @aoirint さん、 @takana-v さん |
| pyinstaller \ | ||
| --noconfirm \ | ||
| --collect-data pyopenjtalk \ | ||
| --add-data "licenses.json;." \ | ||
| --add-data "presets.yaml;." \ | ||
| --add-data "default.csv;." \ | ||
| --add-data "engine_manifest.json;." \ | ||
| --add-data "speaker_info;speaker_info" \ | ||
| --add-data "engine_manifest_assets;engine_manifest_assets" \ | ||
| --add-binary "download/onnxruntime/lib/onnxruntime.dll;." \ | ||
| --add-binary "download/core/core.dll;." \ |
There was a problem hiding this comment.
(pyinstaller を使っていたことがあるのですが、だいぶ以前なので記憶が錆び付いています……。間違った情報を提供していたらすみません)
こちらのオプションは spec ファイルにまとめると、CI だけでなく手元でビルドする時も便利だと思いました(spec ファイルについては https://pyinstaller.org/en/stable/spec-files.html を参照)。spec ファイルは実際には Pythonのソースファイルなので、OS ごとに設定を記述するということもできる気がします。また、もしかしたら全てのオプションを spec ファイルに書けないかもしれないですが、その場合でも pyinstaller コマンド実行時に追加のオプションを指定できたと思います。
ここのオプションが問題ないかどうかはまだ確認できていないです。何かわかったらまたコメントしたいと思います。
There was a problem hiding this comment.
specを記述すると、手元でビルドする際に、各人にspecを書き換えてもらう必要が出るなと思ったので、オプションにしました。
specの方が利便性が高いとは思うのですが、実際どうなんでしょうか...
There was a problem hiding this comment.
複雑な動的処理がある場合はspecファイルのほうが便利かもです。
現状はファイル指定だけなのでどちらでも良いかなと感じました。
どちらかというと、actionsの特性上specファイルとbuild.ymlのファイルパスが非常に離れるので、一箇所に書ける今のほうが見通しが良いかもしれません。
とりあえずwin版だけの今はこの状態にしておいて、mac版やlinux版を作ったり、より複雑な操作が必要になったときに再考するのはどうでしょう。
There was a problem hiding this comment.
specファイルを使えば、必要のないディレクトリ・ファイルの削除などが一括で出来るのですが、download/onnxruntime/lib/onnxruntime.dll;などのオプションはOSごとに変わってくるため、OSごとにspecファイルを書かなければならず、面倒であるので今回はパスしました。
まあ、こういった動作は別にcpコマンドに分けるようにしてしまってもいいかもしれません。
一旦はこのままにして、後で考え直すようにしようかなと思います
There was a problem hiding this comment.
specファイル(pythonファイル)の中でOSで判定してロジックを切り替える、という手もあると思います。
・・・が、ダウンロードしたdllのパスの切り替えは、spec内ではなくactions内でやったほうが絶対良さそう。。
一旦このまま、賛成です!
There was a problem hiding this comment.
spec ファイルの件、了解いたしました! CI を書く上での利便性やわかりやすさ等は確かに spec ファイルではなく明示的なオプション指定の方がよさそうですね(そこまでオプションの数も多くないので)。いったんこのままということで納得しました……!
返信し忘れていましたが、良いと思います! |
PickledChair
left a comment
There was a problem hiding this comment.
自分が見た限りでは問題なさそうでした。LGTM!(手元でビルドも試してみましたがうまく行きました……!)
|
1つapprove頂いたので、とりあえずこのPRは |
内容
題の通り
環境ごとにPyInstallerを試しているので、とりあえずWindowsのみのPRを作るためにPyInstallerブランチを切りました。
関連 Issue
ref #439
スクリーンショット・動画など
最新のものと比べて100MB程度サイズが小さくなっています。
また、ビルド時間がCPU/DirectMLでは3分から5分程度、CUDA版でも16分と、かなり減りました。

動作している様子

その他
Nuitkaを消し飛ばしたので他のビルドが全て落ちています。別PRにて修正します(各OSごとにレビューしてもらうほうが良いと考えたので、このような形をとりました)。
次はMac版に手を付けるつもりです。
Docker周りあまり詳しくないので、お任せできれば大変助かります...