自分的Singularityの使い方

Why Singularity?#

abciを使うときにdockerではなくsingularityを使う必要があったのですが、戸惑う部分が多かったので記録しておきます。 dockerはroot権限が奪取される可能性があるため、共用サーバなどではセキュリティの問題から使用できない場面が多いです。

How to use#

今回扱うバージョンはsingularitypro/3.5です。

1. .def to .sif#

imageを作成するためのDefinition fileを作成します (詳細は公式ドキュメント ) 。
ubuntuのimageをもとにdefinition fileを作成しました (docker-compose.ymlを書くときのイメージですね) 。

Bootstrap: docker
From: ubuntu

%files
	requirements.txt

%post
	apt update
	apt upgrade -y 
	apt install -y python3
	apt install -y python3-pip
	pip3 install -r requirements.txt

%environment
	export LC_ALL=ja_JP.utf-8
    export LANG=ja_JP.utf-8

2. build#

このファイルをfoo.defとして保存し、buildします。

singularity build --fakeroot foo.sif foo.def

3. run#

あとは、実行のためのシェルスクリプトを書いて完成です。

#!/bin/sh
#$ -l rt_G.small=1
#$ -j y
#$ -o fit/output/
#$ -cwd
#$ -l h_rt=12:00:00
source /etc/profile.d/modules.sh
module load singularitypro/3.5
singularity run --nv foo.sif run.sh

Memo#

一応singularityが使えるようになりました。しかし、正直扱うのが難しいなという印象があります。 詰まったところで、検索しても情報が少ないです。 dockerの–rootlessってどうなんですかね。 GPU対応が弱いなどの噂があるので難しいのでしょうか。

© 2024