Singularity

はじめに

Singularity はコンテナ仮想化のプラットフォームで、Docker と良く似た立ち位置のソフトウェアです。Singularity は HPC 環境での利用を想定して設計されているため、実行したユーザーの権限で実行できたり(root 権限や特殊な設定は不要)、カレントディレクトリが自動的に mount されてそのまま使えたり、GPU の利用が容易であったりと、スパコンのような環境で使いやすくなっています。

情報は随時追加していきます。
 

コンテナイメージ

Singularity のイメージを利用することにはなりますが、docker のイメージを利用することも可能です。NVIDIA NGC にある docker イメージなども利用可能です。

例:
[user@ccfep1 ~]$ singularity pull docker://nvcr.io/nvidia/tensorflow:20.10-tf2-py3

以下のようなサイトから既存のイメージを取得できます。

  • Docker Hub: https://hub.docker.com/
  • Singularity Hub: https://singularity-hub.org/
  • NVIDIA NGC: https://www.nvidia.com/en-us/gpu-cloud/containers/

コンテナイメージの作成について

現時点ではフロントエンド(ccfep)でユーザーがコンテナを作成することはできません。fakeroot についても現時点では利用できません。Sylabs や Singularity Hub で作成するか、あるいはご自身の環境で作成するようお願いします。
 

注意点

  • 簡単なサンプルを /local/apl/lx/singularity364-samples 以下にも置いています。
    • ccfep 上で NGS より tensorflow を含むコンテナイメージをダウンロードし、コンテナ外の /local/apl/lx 以下にある MNIST のデータを利用するものです。
  • GPU を使う場合、ドライバはコンテナではなくホスト側のものが利用される点にご注意下さい。
    • コンテナがホストのものより新しい GPU ドライバのバージョンを要求した場合、エラーとなります。
    • 事前にコンテナの要求するドライバのバージョン、もしくは CUDA のバージョン(RCCS で最新のもの以下のバージョンならばおそらく大丈夫です)をご確認下さい。
  • MPI についてはコンテナ内外でバージョンや仕様をそろえるような手間が必要となります。あまり容易ではありません。
  • /local/apl 以下に導入されたソフトも同時に使うような場合には --bind に /lustre:/lustre,/local:/local,/homeg:/homeg を追加するようお願いします。