Singularity

概要

Singularity は HPC (High Performance Computing) 環境向けに開発されたコンテナプラットフォームです。 様々なアプリケーションのイメージファイルがインターネット上で公開されており、インストールが複雑なアプリケーションでも容易に実行環境を構築することができます。

利用方法

Singularity の実行コマンド名は singularity です。

実行前の環境設定
% module load singularity
コンテナの中にログイン
% singularity shell (イメージファイル)
% singularity shell --nv (イメージファイル)   # GPUを使用する場合
コンテナの中でコマンドを実行
% singularity exec (イメージファイル) (コマンド)
% singularity exec --nv (イメージファイル) (コマンド)  # GPUを使用する場合 
singularityのイメージファイルは実行権限が付いていますので、singularity exec の代わりに直接イメージファイルを実行することもできます(イメージファイルに依っては、イメージファイルに関する情報が出る場合があります)。
% (イメージファイル) (コマンド)

イメージファイル

以下のサイトから様々なアプリケーションのイメージファイルをダウンロードできます。 また、ダウンロード済みイメージファイルが
/usr/appli/freeware/singularity/images/
に置いてあります。

Singularity Library, Docker Hub に登録されているイメージファイルは singularity pull コマンドでダウンロードできます。
$ singularity pull library://(イメージファイルのパス)   # Singularity Library からダウンロード
$ singularity pull docker://(イメージファイルのパス)    # Docker Hub からダウンロード
  • BioContainers, NGC に登録されているアプリケーションでも、 イメージファイルの置き場所は Docker Hub であることがあります。
  • Singularity は Docker (Singularity とは別のコンテナプラットフォーム)用のイメージファイルを利用することができます。 Docker Hub, BioContainers, NGC でイメージファイルのダウンロードコマンドが docker pull となっている場合は、 singularity pull docker:// に置き換えて下さい。
    例)
    $ docker pull nvcr.io/nvidia/l4t-pytorch:r32.4.2-pth1.5-py3
    ↓
    $ singularity pull docker://nvcr.io/nvidia/l4t-pytorch:r32.4.2-pth1.5-py3
    

Singularity Library に登録されているイメージファイルは singularity search コマンドで検索することができます。
$ singularity search (キーワード)

実行例

例1) Trinity (trinityrnaseq) のイメージファイルをダウンロード、実行
$ singularity search trinity
No users found for 'trinity'

No collections found for 'trinity'

Found 1 containers for 'trinity'
        library://colinsauze/default/trinity
                Tags: v2.9.1

$ singularity pull library://colinsauze/default/trinity:v2.9.1
INFO:    Downloading library image
...

$ singularity exec trinity_v2.9.1.sif Trinity
(Trinity の helpページ)
...

例2) PyTorch で MNIST を実行
$ singularity pull docker://nvcr.io/nvidia/pytorch:20.03-py3 # NGC の PyTorch をダウンロード
$ git clone https://github.com/pytorch/examples.git  # サンプルコードをダウンロード
$ singularity exec --nv pytorch_20.03-py3.sif bash examples/run_python_examples.sh mnist
...
Test set: Average loss: 0.0577, Accuracy: 9802/10000 (98%)

Completed successfully

補足
  • スパコンシステム上の以下のディレクトリは Singularity のコンテナ内からも利用できます。
    ホームディレクトリ
    /aptmp/
    /db/
    /lustre/
    /lustre1/
    /lustre2/
    /MIRROR/
    /scratch/
    
関連サイト

Singularity User Guide(公式ホームページ)