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

バイナリビルドCI: 7zとVVPPが同時にCIストレージ容量を消費しないようにする #696

Merged
merged 8 commits into from
Jun 20, 2023

Conversation

aoirint
Copy link
Member

@aoirint aoirint commented Jun 17, 2023

内容

リリースCI(バイナリビルドCI)において、7zの圧縮・アップロードが終わったのち、アップロード済みの7zをローカルから削除してから、VVPPの圧縮・アップロードをするように変更します。
ついでに、Linux CUDA版ビルド時に、Windows CUDA版では削除しているCUDAディレクトリが削除されていなかったため、削除して容量を確保するようにします(CUDAのCIキャッシュでは、インストール先から必要なファイルだけをコピーして保持しているため、コピーが終わったインストール先ディレクトリは削除することができます)。

以前の実装では、リリースに関係する以下の4種類のファイルが同時にストレージを消費するようになっていました( #695 の作業中にWindows CUDA版ビルド時のCIストレージが足りなくなったことで気づきました)。

  • 7z/VVPP圧縮・アップロード時
    • アーカイブ化前のディレクトリ
    • 7z
    • 分割前のzip
    • 分割後のvvpp/vvppp

このPRによって、各タイミングで保持されるファイルは以下のようになります。ストレージ使用量は、「アーカイブ化前のディレクトリ」の最大4倍→最大3倍に減ります。

  • 7z圧縮・アップロード時
    • アーカイブ化前のディレクトリ
    • 7z
  • VVPP圧縮・アップロード時
    • アーカイブ化前のディレクトリ
    • 分割前のzip
    • 分割後のvvpp/vvppp

VVPP圧縮時に、「分割前のzip」を作成する必要がないように書き換えることができれば、最大2倍まで減らせそうですが、このPRでは変更量を減らすため、以前のVVVP圧縮実装を維持しています。

関連 Issue

スクリーンショット・動画など

その他

@aoirint aoirint mentioned this pull request Jun 17, 2023
6 tasks
@github-actions
Copy link

github-actions bot commented Jun 17, 2023

Coverage Result

Resultを開く
Name Stmts Miss Cover
voicevox_engine/init.py 2 1 coverage-50%
voicevox_engine/acoustic_feature_extractor.py 75 0 coverage-100%
voicevox_engine/dev/synthesis_engine/init.py 3 1 coverage-67%
voicevox_engine/dev/synthesis_engine/mock.py 36 2 coverage-94%
voicevox_engine/full_context_label.py 162 3 coverage-98%
voicevox_engine/kana_parser.py 86 1 coverage-99%
voicevox_engine/metas/Metas.py 33 0 coverage-100%
voicevox_engine/metas/MetasStore.py 29 14 coverage-52%
voicevox_engine/metas/init.py 2 0 coverage-100%
voicevox_engine/model.py 152 9 coverage-94%
voicevox_engine/mora_list.py 5 0 coverage-100%
voicevox_engine/part_of_speech_data.py 5 0 coverage-100%
voicevox_engine/preset/Preset.py 12 0 coverage-100%
voicevox_engine/preset/PresetError.py 3 1 coverage-67%
voicevox_engine/preset/PresetManager.py 81 2 coverage-98%
voicevox_engine/preset/init.py 4 0 coverage-100%
voicevox_engine/setting/Setting.py 11 0 coverage-100%
voicevox_engine/setting/SettingLoader.py 19 0 coverage-100%
voicevox_engine/setting/init.py 3 0 coverage-100%
voicevox_engine/synthesis_engine/init.py 5 0 coverage-100%
voicevox_engine/synthesis_engine/core_wrapper.py 201 159 coverage-21%
voicevox_engine/synthesis_engine/make_synthesis_engines.py 57 49 coverage-14%
voicevox_engine/synthesis_engine/synthesis_engine.py 130 11 coverage-92%
voicevox_engine/synthesis_engine/synthesis_engine_base.py 67 9 coverage-87%
voicevox_engine/user_dict.py 144 11 coverage-92%
voicevox_engine/utility/init.py 5 0 coverage-100%
voicevox_engine/utility/connect_base64_waves.py 37 0 coverage-100%
voicevox_engine/utility/core_version_utility.py 9 2 coverage-78%
voicevox_engine/utility/mutex_utility.py 11 1 coverage-91%
voicevox_engine/utility/path_utility.py 26 8 coverage-69%
TOTAL 1415 284 coverage-80%

@aoirint aoirint marked this pull request as ready for review June 17, 2023 11:35
@aoirint aoirint requested a review from a team as a code owner June 17, 2023 11:35
@aoirint aoirint requested review from y-chan and removed request for a team June 17, 2023 11:35
@aoirint aoirint changed the title バイナリビルドCI: 7zとVVPPが同時にCIストレージを消費しないようにする バイナリビルドCI: 7zとVVPPが同時にCIストレージ容量を消費しないようにする Jun 17, 2023
@aoirint aoirint marked this pull request as draft June 18, 2023 06:58
@aoirint
Copy link
Member Author

aoirint commented Jun 18, 2023

動作テスト用ビルド https://github.com/aoirint/voicevox_engine/releases/tag/0.15.0-aoirint.15 (Linux CUDA版)がGPUで動作しなかったため、いったんDraftに戻しておきます。

フォーク先リポジトリのCIキャッシュの問題かもなので、キャッシュを破棄して再ビルドしてみます。

リリースビルドの成果物voicevox_engine-linux-nvidia-0.15.0-aoirint.15.7z.001で、以下のファイルが実体ではなく、CI環境のシンボリックリンクになっていました。

libcublasLt.so.11 -> /home/runner/work/voicevox_engine/voicevox_engine/download/cuda/bin/libcublasLt.so.11
libcublas.so.11 -> /home/runner/work/voicevox_engine/voicevox_engine/download/cuda/bin/libcublas.so.11
libcudart.so.11.0 -> /home/runner/work/voicevox_engine/voicevox_engine/download/cuda/bin/libcudart.so.11.0
libcudnn_adv_infer.so.8 -> /home/runner/work/voicevox_engine/voicevox_engine/download/cudnn/bin/libcudnn_adv_infer.so.8
libcudnn_cnn_infer.so.8 -> /home/runner/work/voicevox_engine/voicevox_engine/download/cudnn/bin/libcudnn_cnn_infer.so.8
libcudnn_ops_infer.so.8 -> /home/runner/work/voicevox_engine/voicevox_engine/download/cudnn/bin/libcudnn_ops_infer.so.8
libcudnn.so.8 -> /home/runner/work/voicevox_engine/voicevox_engine/download/cudnn/bin/libcudnn.so.8
libcufft.so.10 -> /home/runner/work/voicevox_engine/voicevox_engine/download/cuda/bin/libcufft.so.10
libcurand.so.10 -> /home/runner/work/voicevox_engine/voicevox_engine/download/cuda/bin/libcurand.so.10
libonnxruntime_providers_cuda.so -> /home/runner/work/voicevox_engine/voicevox_engine/download/onnxruntime/lib/libonnxruntime_providers_cuda.so
libonnxruntime_providers_shared.so -> /home/runner/work/voicevox_engine/voicevox_engine/download/onnxruntime/lib/libonnxruntime_providers_shared.so
libonnxruntime_providers_tensorrt.so -> /home/runner/work/voicevox_engine/voicevox_engine/download/onnxruntime/lib/libonnxruntime_providers_tensorrt.so

@aoirint
Copy link
Member Author

aoirint commented Jun 18, 2023

再ビルドする前に #668 を見てみましたが、この変更が関係しているかもです。

実は容量節約の工夫として、Artifactとしてアップロード・ダウンロードを挟むことでシンボリックリンクを実体に変える、という工程を踏んでいました(副作用としてファイルの権限情報が失われます)。トリッキーな挙動なので、コメントがあった方がよかったですね...( #96 #118 )。

actions/cache@v3は、Jobが終わるまでファイルを保持しておく必要があり、かつリリースディレクトリの構成にあたって容量の大きいファイルのコピーを避けるため、シンボリックリンク(ソフトリンク)とArtifactを組み合わせていました。

別PRで対応したいですが、以下のような修正案があります。

  • actions/cache/restore@v3actions/cache/save@v3を使ってキャッシュの保存タイミングを変更し、キャッシュ保存後に実体をmvする
  • ハードリンクに置き換える(別ディスクにはリンクを張れない制約があるため、念のため使用を避けていた)

masterブランチのキャッシュはシンボリックリンクになっていると思われるため、キャッシュキーの更新も必要です。

@Hiroshiba
Copy link
Member

おお、なるほどです!! 気づきませんでした、助かります🙇‍♂️

PRとても助かります。
方針はsave/restore実行が実装の意図を明確にできて良いかもと思いました!!

(そういえば最近Actuionsはキャッシュ消去も可能になりました。
権限を把握できてないですが、消せそうな消していただいてもOKです!)

@aoirint
Copy link
Member Author

aoirint commented Jun 20, 2023

#700 (comment)

でこのPRの動作確認ができたので、Ready for reviewにしておきます。

@aoirint aoirint marked this pull request as ready for review June 20, 2023 00:10
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!!

たぶん問題ないと思うのでマージしちゃいます! ( @y-chan さんすみません! 🙇‍♂️ )

@Hiroshiba Hiroshiba merged commit 574dad2 into VOICEVOX:master Jun 20, 2023
@Hiroshiba Hiroshiba removed the request for review from y-chan June 20, 2023 15:10
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