Docker
container
HPC
Singularity

[第2回 Singularity 勉強会] Singularity Hands-on

More than 1 year has passed since last update.

人数の関係で,うちわな勉強会ですが、内容はOpenにします。第1回勉強会の内容は、いちばん下にある "参考文献" を読んでください。それらの資料の紹介でした。第2回はハンズオンを行い、基礎的事項を学ぶことを目的とします。


はじめに

Singularity とは、HPC向けのコンテナー型仮想化です。乱暴にいうとHPC向けDockerと言えます。

Dockerだと対応が難しい、MPIを利用したHPC向けアプリケーションを動かすのに非常に適しています。

産総研の佐藤さんの資料によると仮想化によるオーバヘッドもありません。

本Hands-onでは Singularity 上でTensorflowを使ってMNISTを動かしながら、Singularityのコマンド体系を学んでいきます。


どんな人にオススメか?


  • マルチノードの Deep Learning をやりたい人、最初の試行錯誤は手元のWorkstation, DNNが決まったら、スパコンやCloudを使って最後に大きな学習...

  • HPCアプリを書いている方で、いろんな環境でそのコードを動かしたいひと

  • OSSを複数の環境で頻繁に使うひと

  • DokerでMPI動かすためにハックしたひと、諦めた人

つまり、手元のアプリケーションのバージョンがたびたび変更になり、さらに複数のコンピューティング環境を使いたい人に最適です。環境差を吸収します。MPIも対応しているので、これまで、Docker で MPI を動かしたかった人にももちろんオススメです!!


コマンド全体像

コマンド群としては、主に下記に示す、5つとなっていますが、本ハンズオンでは、buildコマンドと アプリケーションの実行方法に焦点を充て、exec, shell, run コマンドを中心に取り扱います。そのため、pullコマンドなど、一部のコマンドは使用しません。

ここで、build方法と、実行方法の Overviewを以下の図に示します。

Kobito.fqlaLg.png

command
説明
sample

build
buildを使用して、既存のコンテナをダウンロードしてアセンブルしたり、あるフォーマットから別のフォーマットにコンテナを変換したり、特異性レシピからコンテナを作成することができます。
singularity build singlarity-tensorflow.img docker://tensorflow/tensorflow

inspect
イメージ概要を調査するコマンド。runscript、テストスクリプト、環境、ヘルプ、およびメタデータのラベルを簡単に表示することができます
singularity inspect singlarity-tensorflow.img

exec
ホストシステム上で直接実行されているかのように、コンテナイメージ内の任意のコマンドを生成できます。このexecは、Docker execとは異なり、コンテナを使用する前にコンテナを「実行」する必要がありません
singularity exec singlarity-tensorflow.img python mnist_softmax.py

shell
コンテナ内に対話型シェルを自動的に生成します。
singularity shell singlarity-tensorflow.img

run
コンテナがファイル名で直接実行または実行されたときに実行されるカスタムアクションを定義できます。
singularity run singlarity-tensorflow.img
./singlarity-tensorflow.img

pull
Docker HubもしくはSingularity Hub からコンテナーのイメージを取得するときに仕様するコマンド
singularity pull singlarity-tensorflow.img docker://tensorflow/tensorflow



0. Singularityのインストール

状況に応じて、0.1 もしくは 0.2 のどちらかを選んでください。


0.1 公式ページのやり方でインストールする

Qiitaにまとめたのは、Macのみです。Windows、Linuxの方は公式ページからインストールしてください。

MacとWindowsは, vagrant > virtualbox > singularity > ubuntu という流れになっています。


0.2 (非公式) Docker コンテナー上に構築する (中丸さん作成)

root権限はないけど、Dockerはインストールされている環境。NVIDIAのDGXユーザとか・・・


1. [Hands-on] 各種ビルドオプションと exec, shell, run を用いた、アプリケーションを実行方法を学ぶ


2. [Hands-on] recipe ファイルを使ったbuild方法を学ぶ (橋本さん作成)


3. 参考文献