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

feat: ARM64 DockerイメージをLinux ARM64 Hosted Runnerでビルドする #1533

Open
wants to merge 20 commits into
base: master
Choose a base branch
from

Conversation

aoirint
Copy link
Member

@aoirint aoirint commented Feb 24, 2025

内容

ARM64 DockerイメージをLinux ARM64 Hosted Runnerでビルドするようにします。

従来は、Linux AMD64 Hosted Runner上で、QEMUを使ったARM64 CPUエミュレーションによってビルドされていました。

2025-01-16から、GitHub ActionsでLinux ARM64 Hosted RunnerのPublic Previewが始まり、ネイティブARM64環境でCIを実行できるようになりました。
このプルリクエストにより、遅いCPUエミュレーションをしなくなるため、Dockerイメージのビルドが速くなる見込みです。

また、現在 2b36a92 、CPU版イメージのビルドCIがQEMUの不具合の影響で落ちていますが、このプルリクエストによりCIではQEMUを使用しなくなるため、ARM64イメージビルド時のSegmentation Errorの発生を回避できるようになり、 #1525 が修正されます。
AMD64マシンを使ったローカルビルドでは、引き続き #1525 の影響を受けますが、QEMU側で修正が入っているようなので、いずれ解消すると思います。

タグの命名規則の変更

従来は、以下の7種類のタグでイメージをビルドしていました( #1498 により、実際にビルドするのは4種類 )。

  • {version}
  • cpu-{version}
  • cpu-ubuntu22.04-{version}
  • cpu-ubuntu20.04-{version}
  • nvidia-{version}
  • nvidia-ubuntu22.04-{version}
  • nvidia-ubuntu20.04-{version}
イメージの別名をまとめて表示
  • {version}, cpu-{version}, cpu-ubuntu22.04-{version}
  • cpu-ubuntu20.04-{version}
  • nvidia-{version}, nvidia-ubuntu22.04-{version}
  • nvidia-ubuntu20.04-{version}

このプルリクエスト以降は、各CPUアーキテクチャ別にGitHub Actionsのジョブを分ける必要があるため、各CPUアーキテクチャ別のイメージが増えて、以下の16種類のタグでイメージをビルドするようになります( #1498 により、実際にビルドするのは6種類 )。ビルドキャッシュも同様に、CPUアーキテクチャ別のタグに保存するようになります。

  • {version}
  • cpu-{version}
  • cpu-amd64-{version}
  • cpu-arm64-{version}
  • cpu-ubuntu22.04-{version}
  • cpu-ubuntu20.04-{version}
  • cpu-amd64-ubuntu22.04-{version}
  • cpu-amd64-ubuntu20.04-{version}
  • cpu-arm64-ubuntu22.04-{version}
  • cpu-arm64-ubuntu20.04-{version}
  • nvidia-{version}
  • nvidia-amd64-{version}
  • nvidia-ubuntu22.04-{version}
  • nvidia-ubuntu20.04-{version}
  • nvidia-amd64-ubuntu22.04-{version}
  • nvidia-amd64-ubuntu20.04-{version}
イメージの別名をまとめて表示
  • {version}, cpu-{version}, cpu-amd64-{version}, cpu-ubuntu22.04-{version}, cpu-amd64-ubuntu22.04-{version}
  • cpu-arm64-{version}, cpu-arm64-ubuntu22.04-{version}
  • cpu-ubuntu20.04-{version}, cpu-amd64-ubuntu20.04-{version}
  • cpu-arm64-ubuntu20.04-{version}
  • nvidia-{version}, nvidia-amd64-{version}, nvidia-ubuntu22.04-{version}, nvidia-amd64-ubuntu22.04-{version}
  • nvidia-ubuntu20.04-{version}, nvidia-amd64-ubuntu20.04-{version}

イメージの使い方

現在の実行環境から自動的にイメージを選択して動かす

docker pull aoirint/voicevox_engine:cpu-ubuntu22.04-0.22.2-aoirint.10

docker run --rm aoirint/voicevox_engine:cpu-ubuntu22.04-0.22.2-aoirint.10

AMD64マシンでAMD64イメージを動かす

docker pull aoirint/voicevox_engine:cpu-amd64-ubuntu22.04-0.22.2-aoirint.10

docker run --rm aoirint/voicevox_engine:cpu-amd64-ubuntu22.04-0.22.2-aoirint.10

AMD64マシンでARM64イメージを動かす(要QEMU)

docker pull --platform linux/arm64/v8 aoirint/voicevox_engine:cpu-arm64-ubuntu22.04-0.22.2-aoirint.10

docker run --platform linux/arm64/v8 --rm aoirint/voicevox_engine:cpu-arm64-ubuntu22.04-0.22.2-aoirint.10

または

docker pull --platform linux/arm64/v8 aoirint/voicevox_engine:cpu-ubuntu22.04-0.22.2-aoirint.10

docker run --platform linux/arm64/v8 --rm aoirint/voicevox_engine:cpu-ubuntu22.04-0.22.2-aoirint.10

ARM64マシンでARM64イメージを動かす

docker pull aoirint/voicevox_engine:cpu-arm64-ubuntu22.04-0.22.2-aoirint.10

docker run --rm aoirint/voicevox_engine:cpu-arm64-ubuntu22.04-0.22.2-aoirint.10

ARM64マシンでAMD64イメージを動かす(要QEMU)

docker pull --platform linux/amd64 aoirint/voicevox_engine:cpu-amd64-ubuntu22.04-0.22.2-aoirint.10

docker run --platform linux/amd64 --rm aoirint/voicevox_engine:cpu-amd64-ubuntu22.04-0.22.2-aoirint.10

または

docker pull --platform linux/amd64 aoirint/voicevox_engine:cpu-ubuntu22.04-0.22.2-aoirint.10

docker run --platform linux/amd64 --rm aoirint/voicevox_engine:cpu-ubuntu22.04-0.22.2-aoirint.10

関連 Issue

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

その他

@aoirint aoirint self-assigned this Feb 24, 2025
@aoirint
Copy link
Member Author

aoirint commented Feb 25, 2025

動く状態にはなっているので、Ready for Reviewにします。

@aoirint aoirint marked this pull request as ready for review February 25, 2025 12:31
@aoirint aoirint requested a review from a team as a code owner February 25, 2025 12:31
@aoirint aoirint requested review from Hiroshiba and removed request for a team February 25, 2025 12:31
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.

ubuntu22のdocker buildのCDが落ちてる
1 participant