任意のバイオインフォマティクスツールを詰め込んだコンテナイメージが簡単に作成できる Seqera Containers

研究者がDockerfileやApptainerレシピを書く時代は終わったのかもしれない。
2024.06.08

Seqera Containers は、必要なバイオインフォマティクスツールを簡単に詰め込んだコンテナイメージを作成できます。Web 画面から Bioconda のパッケージを選ぶだけで、オリジナルのコンテナイメージをすぐに利用できます。しかも、無料で利用可能です。

こちらのサービスは AWS HPC Blog と HPC Tech Shorts チャンネルでも紹介されています。

これらの内容と私が調査した内容をまとめました。

Seqera Containers とは

まず Wave について

WaveSeqera プラットフォームの一部でデータアナリティクス向けに設計されたプロダクトです。

Wave は、Conda ベースのコンテナイメージの作成や配布が可能なオープンソースアプリケーションです。

Bioconda、Spack、pypi でインストール可能なパッケージを選び、オリジナルのコンテナイメージを生成できます。

Apptainer のコンテナイメージに対応

コンテナイメージの生成は Docker と Apptainer(Singularity)に対応しています。これは最近の HPC の利用状況を反映しています。

Arm64 のコンテナイメージに対応

Arm64 をサポートするパッケージに限定されますが、Arm64 向けのコンテナイメージを生成できます。もちろん x86-64 コンテナイメージも生成可能です。

つまり、Graviton プロセッサーで動作可能なバイオインフォマティクスツールのコンテナイメージが手に入ります。

Wave の動作環境

開発環境では Docker エンジンでコンテナを起動できます。本番環境では Kubernetes が必要です。Kubernetes を運用していない場合、ハードルが高いかもしれません。

本番運用するときの動作環境のハードルの高さがわかったところで、Seqera Containers に話は戻します。

Seqera Containers は Wave のパブリックホスト型のサービス

Wave の実行環境は、Seqera Containers というパブリックサービスとして提供されています。Web UI からイメージをビルドし、コンテナイメージを配布するリソースまで、すべて Web ブラウザから利用可能です。

ユーザーは Web 画面から必要なパッケージを選択するだけで、Dockerfile または Singularity レシピの作成して、イメージのビルドし、レジストリへの登録を自動行ってくれます。出来上がったコンテナイメージを Pull すれば、あとは自由に使えます。

基本はオンデマンドビルド

基本的にはオンデマンドでコンテナイメージのビルドを行います。ビルドキャッシュは 72 時間保持されます。

実際に試した感じですと同じイメージのビルドはすぐ終わるため、キャッシュ使わている感じはします。

イメージの保存期間

Wave Community registry では、イメージを最低でも 5 年間保持します。

Wave Community registry at least for 5 years since their creation.

引用: https://seqera.io/containers/#:~:text=How%20long-,will,-images%20last%3F

どうして無料で使えるのか不思議でならない

Kubernetes の運用費やストレージ代を考えると、無料で利用可能なのが不思議です。答えは、単純で AWS から提供されているクレジットで賄っているからでした。サービスのインフラの費用は AWS クレジットで補填されれても、Kubernetes を含めサービスを運用しているエンジニアは Seqera が抱えているのでしょう。有償のプランも用意されていますしね。

Pricing | Seqera

Seqera と AWS がコラボレーションした結果、Seqera Containers というサービスが誕生しました。

コンテナイメージを作成してみた

実際に Seqera Containers を使ってコンテナイメージを作成しました。サインアップせずにゲストユーザーでアクセスしました。

Web ブラウザ上での操作

Trinity で検索し、追加してみます。

次に Busco で検索し、追加してみます。こちらは Arm64 にも対応していますね。

最後に S3 へデータを退避できるコマンドがあればと思い検索すると用意されていたので追加してみます。

せっかくなので Singularity を選択して、Apptainer で動作確認することにします。

アーキテクチャは選択したパッケージすべてが Arm64 対応ではなかっため、AMD64 にします。

Get Container をクリックするとコンテナイメージのビルドが走ります。

なにか始まりました。View build details をクリックして詳細を確認してみます。

ビルド中のログを確認できました。

しばらく待つとビルド完了しました。

ビルドしたイメージをダウンロードするためにはどうするかというと、表示されているoras://の URL をコピーします。

サーバーなどの実行環境上での操作

EC2 で起動した Ubuntu 22.04 に Apptainer をインストールした環境でコンテナイメージを利用してみます。

apptainer pullコマンドでイメージをダウンロードします。

Seqera Containers からローカルへ保存できました。

$ ls -lh busco_trinity_pip_aws-s3-cli_4ba1f6af3e72cc2b.sif
-rwxrwxr-x 1 ubuntu ubuntu 1.7G Jun  2 07:13 busco_trinity_pip_aws-s3-cli_4ba1f6af3e72cc2b.sif

コンテナを起動しログインしてみます。

$ apptainer shell busco_trinity_pip_aws-s3-cli_4ba1f6af3e72cc2b.sif

Trinity も Buscoo バージョン確認だけですが、コマンドが実行可能な状態になっています。

Singularity> Trinity --version
Trinity version: Trinity-v2.15.1
-currently using the latest production release of Trinity.

Singularity> busco --version
BUSCO 5.7.1

Seqera Containers で作成したコンテナイメージは問題なくローカルで実行可能でした。また、Dockerfile や、Apptainer レシピを自分で一切書くことなくコンテナイメージの作成は Web UI から作成でき大変便利です。

ビルドログから裏側を推測

ビルドログを眺めていて気になって調べたことをまとめておきます。

コンテナイメージは何が使われているのか

以下は Docker イメージ指定でイメージをビルドしたときのログです。ベースイメージはmambaorg/micromambaということがわかりました。

FROM mambaorg/micromamba:1.5.8-lunar
COPY --chown=$MAMBA_USER:$MAMBA_USER conda.yml /tmp/conda.yml
RUN micromamba install -y -n base -f /tmp/conda.yml \
    && micromamba install -y -n base conda-forge::procps-ng \
    && micromamba clean -a -y
USER root
ENV PATH="$MAMBA_ROOT_PREFIX/bin:$PATH"

mambaorg/micromamba とは

conda を C++ で再実装した mamba というパッケージマネージャがあり、それの完全な静的リンクになった自己完結型の実行ファイルになったものでした。

現時点では micromamba は Debian 12.5 の軽量なイメージ(debian:bookworm-slim)に載せたものがベースのコンテナイメージとして利用されていました。

つまり、軽量版の conda(micromamba)が動作する Debian 12.5 をベースにして、各種バイオインフォマティクスツールが動作するコンテナでした。

Wave Community registry の実態は

AWS 提供のクレジットということもあり、当然 ECR が使われていました。

リージョンはアイルランド(eu-west-1)とやや珍しいところに置かれていました。

───────────────────────────────────────────────────────────────────────────

  Total size:                                                       833MB
Cleaning tarballs..
Cleaning packages..
INFO[0159] Taking snapshot of full filesystem...
INFO[0244] Pushing layer 195996028523.dkr.ecr.eu-west-1.amazonaws.com/wave/build/cache:f99cce0ac2602f10a8940489de9744f2bec0c76b422962b41e40739c987e1a11 to cache now
INFO[0244] Pushing image to 195996028523.dkr.ecr.eu-west-1.amazonaws.com/wave/build/cache:f99cce0ac2602f10a8940489de9744f2bec0c76b422962b41e40739c987e1a11
INFO[0247] USER root
INFO[0247] Cmd: USER
INFO[0247] No files changed in this command, skipping snapshotting.
INFO[0247] ENV PATH="$MAMBA_ROOT_PREFIX/bin:$PATH"
INFO[0247] No files changed in this command, skipping snapshotting.
INFO[0295] Pushed 195996028523.dkr.ecr.eu-west-1.amazonaws.com/wave/build/cache@sha256:09ac77106fb4ea34d91e4fae2b5ca5e92cbe81c5af5a34d60ce583870aa8ceaa
INFO[0295] Pushing image to community.wave.seqera.io/library/trinity:2.15.1--3db30c4df6de4fe8

seqera 社の所在地

本社はスペイン、アメリカにもオフィスがありました。本社寄りではありますが、スペインリージョンではなく、アイルランドリージョンを選択している理由はわかりませんでした。

バイオインフォマティクスはヨーロッパが進んでいるイメージがあり、やはり本社はヨーロッパかという感想です。

まとめ

Seqera Containers は、バイオインフォマティクスツールのコンテナイメージ作成を簡単にしました。Dockerfile や、Apptainer レシピを書くことが本質的ではない研究者にとって、Web ブラウザからの操作で済むのは画期的ではないでしょうか。

おわりに

AWS のクレジットで運用されていますが、コンテナイメージなので当然 AWS 以外でも自由に使うことができます。オンプレや、他クラウドベンダーであっても使えるので一度試してみください。