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

ONNX版の自動ビルドを追加 #33

Merged
merged 45 commits into from
Oct 28, 2021
Merged

Conversation

aoirint
Copy link
Member

@aoirint aoirint commented Oct 28, 2021

内容

ONNX COREのGitHub Actionsによる自動ビルドを追加します。

実行は3分くらいで終わります。

議論

  • 共有ライブラリのファイル名フォーマット
    • もともとあったファイルは、そのままの名前
    • 新しく増えたx86、Arm向けビルドはcore_cpu_x86.dllcore_cpu_arm64.dllcore_cpu_arm.dll
    • ONNX Runtimeの配布物はwin-x86win-armwin-x64-gpuのようなフォーマット
      • GitHub Actions内ではONNX Runtimeのフォーマットをベースにした名付けにしている
  • 暗号化された *.bin の読み込みに対応

https://github.com/Hiroshiba/voicevox_core/blob/f59c6fbe20f248a094afbe717a4c1127ed5ceb96/onnx/core.cpp#L29-L36

対応環境

ONNX RuntimeのReleaseに含まれていた以下の環境でビルドするようにしています。

  • Windows x64 GPU
  • Windows x64 CPU
  • Windows x86 CPU
  • Windows arm64 CPU
  • Windows arm32 CPU
  • macOS x64 CPU
  • Linux x64 GPU
  • Linux x64 CPU

関連 Issue

close #28
ref #21

@aoirint aoirint marked this pull request as ready for review October 28, 2021 15:57
@aoirint aoirint changed the title 自動ビルドの追加 ONNX版の自動ビルドの追加 Oct 28, 2021
@aoirint aoirint changed the title ONNX版の自動ビルドの追加 ONNX版の自動ビルドを追加 Oct 28, 2021
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.

良いですね・・・!

win-x64-gpu

AMDのgpuでは動かないということを説明無しでわかるように、-nvidiaにしておいても良いのかなと思いました。
(もしかしてnvidia以外のgpuでも動いたりするんでしょうか・・・?)

暗号化された *.bin の読み込みに対応

一旦暗号化はOSSでメンテしない方針が良いのかなと思っています。
復号化キーと暗号化アルゴリズムが両方ほぼオープンな状態になるので、かなり弱くなりそうなためです。
OSSでもそこそこ強く暗号化できる方法があれば適用してみたいです。

.github/workflows/build.yml Show resolved Hide resolved
.github/workflows/build.yml Outdated Show resolved Hide resolved
@aoirint
Copy link
Member Author

aoirint commented Oct 28, 2021

AMDのgpuでは動かない

動かないみたいです。
ONNX RuntimeのGPU版はCUDAとTensorRT(どちらもNVIDIA)で動くようです。
(PyTorchの場合はTorchScriptがTensorRTでも動いた気がするので、ONNX化でNVIDIA Jetsonを使った組み込みでGPU動作するのかな、と思いましたが、Linux arm版が必要ですね...)

win-x64-gpu

win-x64-gpu はONNX Runtime側で付けられている名前(zipのファイル名)なので、
そのままActionsの内部名として使っている形になります。
ユーザから見える共有ライブラリの名前は一応変えていません。

-nvidia/-x64-nvidiaでいい気もします。
まあ、ここ(内部名)を変えると、共有ライブラリのCPU x64とarm64を区別するのに、_cpu_cpu_arm64のような名前になっているところを、 _x64/_cpu_x64とか_arm64/_cpu_arm64にしたくなる気もします...(アーキテクチャを後ろに付け足す命名規則はこのPRからですが)。

暗号化はOSSでメンテしない方針

👍 いったんその方針でいいと思います。

開発的には、いい方法を見つけたい...。

@Hiroshiba
Copy link
Member

命名、微妙に悩みますね・・・

ユーザー的にわかりやすい形にするために、冗長ですがcpuやgpuのprefixも付けるのが良さそうに思いました。

cpuのみ対応版の場合は_cpu_x64_cpu_arm64に、
gpuも対応版は_gpu_x64_nvidia_gpu_arm64_nvidiaでいきましょう!

@aoirint
Copy link
Member Author

aoirint commented Oct 28, 2021

cpuのみ対応版の場合は_cpu_x64や_cpu_arm64に、
gpuも対応版は_gpu_x64_nvidiaや_gpu_arm64_nvidiaでいきましょう!

ENGINE側でも対応が必要と思いますが、ONNX対応と合わせて変えやすいので、いいと思います。
Artifactにアップロードするcore.zip内でのファイル名をそのルールに変えました。

ONNX化をリリースするときに、ドキュメントの変更も必要そうです。

https://github.com/Hiroshiba/voicevox_core/blob/42acc417bc3efb08009c669a7752c378698e5fb2/README.md?plain=1#L38

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!!

ONNXリリースの際は必ずREADMEの書き換えや稼働チェックが入るので、ドキュメントはちゃんと修正されると思います!

お試しでreleases作ってみますね。

@Hiroshiba Hiroshiba merged commit 185b8c7 into VOICEVOX:main Oct 28, 2021
@aoirint aoirint deleted the patch-build branch October 17, 2022 08:04
qryxip added a commit to qryxip/voicevox_core that referenced this pull request Feb 9, 2023
* `synthesis_system`を強く型付けする

* model/test/model_config.jsonに`synthesis_system`を追加
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.

Github Actionsでビルドする
2 participants