コンテナの利用
Docker hub,プライベートレジストリなどからコンテナイメージを呼び出し, 計算に利用することができます.
コンテナを用いた計算ジョブの実行
コンテナの起動に"Singularity" コンテナエンジンを用います.
Dockerイメージを用いる場合は先にSingularityイメージファイルに変換する必要があります.変換方法は<Singularity イメージ変換>を参照してください.
1. インタラクティブ実行
ジョブの実行,計算を対話的に実行することができます.
以下の例では計算ノード上に"whalesay.sif"コンテナを起動し,"cowsay hello" コマンドを実行します.
GPU無し:
[sentan@kagayaki]% qsub -q TINY -l select=1 -I
[sentan@spcc-XXX]% source /etc/profile.d/modules.csh
[sentan@spcc-XXX]% module load singularity
[sentan@spcc-XXX]% singularity shell whalesay.sif
Singularity: cowsay hello
GPU付き:
[sentan@kagayaki]% qsub -q GPU-1 -l select=1:ngpus=1 -I
[sentan@spcc-XXX]% source /etc/profile.d/modules.csh
[sentan@spcc-XXX]% module load singularity
[sentan@spcc-a40gXXX]% singularity shell --nv whalesay.sif
Singularity cowsay hello
*事前にカレントディレクトリにwhalesay.sifを作成しておいてください.イメージのサンプルは/Samples/Container_Images以下にあります
2.バッチファイル実行
実行内容をバッチファイルに記載して登録しておくことで,多数の計算を自動実行できます
以下のバッチファイルでは計算ノード上に"whalesay.sif"コンテナを起動し,コンテナ内で"cowsay hello" コマンドを実行します.
*事前にカレントディレクトリにwhalesay.sifファイルを準備しておいてください.サンプルは/Samples/Images以下にあります
GPU無し:
PBS_singularity.csh:
#!/bin/csh
#PBS -N test_singularity
#PBS -j oe -l select=1:ncpus=1
cd $PBS_O_WORKDIR
source /etc/profile.d/modules.csh
module load singularity
singularity exec ./whalesay.sif cowsay hello > result
バッチファイルは以下のように登録します.利用するリソースサイズ(CPU数等)は各計算機のページをご覧ください.
[sentan@kagayaki]% qsub -q TINY -l select=1 PBS_singularity.csh
GPU有:
#PBS -N test_singularity
#PBS -j oe -l select=1:ncpus=1:ngpus=1
cd $PBS_O_WORKDIR
source /etc/profile.d/modules.csh
module load singularity
singularity exec --nv ./whalesay.sif cowsay hello > result
バッチファイルは以下のように登録します.利用するリソースサイズ(CPU数等)はこちらをご覧ください.
[sentan@kagayaki]% qsub -q GPU-1 -l select=1 PBS_singularity.csh
Singularity イメージ変換
1. Docker hubからダウンロードして変換
注意:Docker hubのイメージは必ずしも安全ではなく,不正なプログラム,脆弱性を含むライブラリが混入している場合があります.
可能な限りOfficialイメージ, Velified Publisherイメージを利用してください.
1-2. Dockerイメージを呼び出し,Singularityイメージに変換.
計算ノードを利用します.
計算機にログインし,qsubコマンドで計算ノードにインタラクティブログインしてください.
[sentan@kagayaki]% qsub -q TINY -l select=1
確認したpullコマンドを用いてsifファイルを作成します.
このとき,pullコマンド内の "docker pull" を "docker://"に置き換え,以下のように実行してください.
例:"docker pull python" で呼び出されるイメージを"python.sif"ファイルとして作成する場合
[sentan@spcc-XXX]% source /etc/profile.d/modules.csh
[sentan@spcc-XXX]% module load singularity
[sentan@spcc-XXX]% singularity pull python.sif docker://python
sifファイルが作成されていることを確認してください.
[sentan@spcc-XXX]% ls
python.sif
sifファイルが作成されたら,インタラクティブジョブを一旦終了しましょう.
[sentan@spcc-XXX]% exit
qsubコマンドで計算ノードにインタラクティブログインしてください.
[sentan@vpcc]% qsub -q TINY -l select=1
イメージファイル作成:
[sentan@vpcc-xxx]% singularity pull --docker-login XXXXX.sif<file名> docker://moby21.jaist.ac.jp/<ユーザ名>/<プロジェクト>:<タグ>
Enter Docker Username: < ユーザ名
Enter Docker Password: < パスワード
sifファイルが作成されたら,インタラクティブジョブを一旦終了しましょう.
[sentan@vpcc-xxx]% exit