Skip to content

9. Linuxコンテナ

Singularity

ABCIシステムではSingularityが利用可能です。 利用するためには事前にmoduleコマンドを用いて利用環境を設定する必要があります。

[username@g0001~]$ module load singularity/2.6.1

より網羅的なユーザガイドは、User Guide — Singularity container 2.6 documentation にあります。

Singularityを用いて、NGCが提供するDockerイメージをABCIで実行する方法は、NVIDIA GPU Cloud (NGC) で説明しています。

Singularityの実行

Singularityを利用する場合、ジョブ中にsingularity runコマンドを実行しSingularityコンテナを起動します。 コンテナイメージは初回起動時にダウンロードされ、ホーム領域にキャッシングされます。 2回目以降の起動はキャッシュされたデータを使用することで起動が高速化されます。

Singularityの実行例)

以下の例はDocker Hubで公開されているcaffe2のコンテナイメージを使用しSingularityを実行しています。 singularity runコマンドにより起動したSingularityコンテナ上でpython sample.pyが実行されます。

[username@es1 ~]$ qrsh -l rt_F=1
[username@g0001~]$ module load singularity/2.6.1
[username@g0001~]$ singularity run --nv docker://caffe2ai/caffe2:latest
Docker image path: index.docker.io/caffe2ai/caffe2:latest
Cache folder set to /fs3/home/username/.singularity/docker
Creating container runtime...
...
[username@g0001~]$ python sample.py
True

Singularityイメージファイルの作成

Singularityコンテナイメージはファイルとして保存することが可能です。 ただしABCI上ではrecipeファイルを用いたイメージのbuildは実行できません。 利用者自身でカスタムしたコンテナイメージを利用したい場合は、 ABCIの環境(Singularity、フレームワーク、MPIのバージョン等)に合わせたユーザ環境で イメージを作成後、イメージファイルをABCI上に転送する必要があります。

Singularityイメージファイルの作成例)

[username@es1 ~]$ module load singularity/2.6.1
[username@es1 ~]$ singularity pull --name caffe2.img docker://caffe2ai/caffe2:latest
Docker image path: index.docker.io/caffe2ai/caffe2:latest
Cache folder set to /fs3/home/username/.singularity/docker
...
[username@es1 ~]$ ls caffe2.img
caffe2.img

Singularityイメージファイルを使用したコンテナの起動例)

[username@es1 ~]$ module load singularity/2.6.1
[username@es1 ~]$ singularity run ./caffe2.img

Singularityイメージファイルを使用したジョブの実行例)

[username@es1 ~]$ cat submit.sh
(snip)
source /etc/profile.d/modules.sh
module load singularity/2.6.1 openmpi/3.0.3

mpiexec -n 4 singularity exec --nv ./caffe2.img \
    python sample.py

Docker

ABCIシステムではDockerコンテナ上でのジョブ実行が可能です。 Dockerを利用する場合、ジョブ投入時に-l dockerオプションと-l docker_imagesオプションを指定する必要があります。

オプション 説明
-l docker ジョブをDockerコンテナ上で実行します。
-l docker_images 利用するDockerイメージを指定します。

利用可能なDockerイメージはshow_docker_imagesコマンドで参照可能です。

[username@es1 ~]$ show_docker_images
REPOSITORY                TAG             IMAGE ID     CREATED       SIZE
jcm:5000/dhub/ubuntu      latest          113a43faa138 3 weeks ago   81.2MB

Warning

ABCIシステムでは、システム内で公開されているDockerイメージのみ利用可能です。

Dockerジョブのジョブスクリプト例)

以下のジョブスクリプトではpython3 ./test.pyがDockerコンテナ上で実行されます。

[username@es1 ~]$ cat run.sh
#!/bin/sh
#$-cwd
#$-j y
#$-l rt_F=1
#$-l docker=1
#$-l docker_images="*jcm:5000/dhub/ubuntu*"

python3 ./sample.py

Dockerジョブの投入例)

[username@es1 ~]$ qsub run.sh
Your job 12345 ("run.sh") has been submitted