スポンサーリンク

「Singularity」コンテナを立ち上げる方法。〜 ABCI クラウドを使用してみての感想 〜

Python
スポンサーリンク

今回はABCIクラウドを業務上使用させていただいたので、その際に感じたこととおそらく環境構築の一番の難所と思われるSingularityコンテナを立ち上げるところまでご紹介します。

SingularityコンテナはまあざっくりいうとDockerみたいなものでGPU使用時などに

基本的には公式のマニュアルが下記にありなかなかわかりやすいです。ただ、レベルは高めなのでほぼ初心者の僕が感じた点などを記載しつつよりわかりやすくとまでは言いませんが、初心者に適したように記載を行っていきます。

スポンサーリンク

ABCIを利用する際に理解しておくこと

ABCIクラウドとは?

まずABCIとは何かというところも問題ではないでしょうか?ABCIとは世界でもかなり上位に当たるスパコンです。
計算ノードには1ノードにつき4GPUを搭載しておりかなり速度は速いです。またポイント制で利用でき200000ポイント20万円だったような気がします。高い気が数r方もいると思いますが、AWSの同スペックインスタンスの「x3.8large」くらいを使用する場合は1時間1万円計算なのでABCIの方がかなりお安くなっております。環境構築は癖がありますが。

システムの見積もり時には詳しい金額などを公式で調べつつ是非参考にしてみてください。

ABCI使用時の流れと概念

私は業務上メールにて初回研修みたいなメールが来たのですがおそらく公式のHPなどから登録できるのではないでしょうか。登録を行った後はメーリングリストに登録されるので参加したいものがあれば参加するみたいな感じでセミナーに参加するもよし、ABCIアカウントを取得し、クラウドを使用するもよしです。

基本的にクラウドサーバのような扱いなのでクライアントPC(自身のPC)と接続先PCにSSH鍵認証で接続する必要があります。

まずはWindowsの方はなんでもいいのでTerminalを使用できるものをインストールするか、RLoginなどのSSh接続ツールをインストールして秘密鍵を生成してください。

その作成したものをマイページに登録し、あとはSSH接続するのみです。
このSSH接続先はインタラクティブノードというノードになております。このノードから計算ノードやファイルサーバにアクセスしてインタラクティブ、もしくはバッチジョブによる計算ノードの操作で計算を行います。コマンドは下記にまとめております。

ssh -i /path/identity_file -L 10022:es:22 -l [ユーザーID] as.abci.ai
Enter passphrase for key '/path/identity_file': <- パスフレーズ入力


Welcome to ABCI access server.
Please press any key if you disconnect this session.
この表示が出ればOKこのTerminalはもう触らないこと。このままにしておく。

上記でSSH接続用のトンネルを開けました。このトンネルが開いている間にSSHによる接続が可能になっております。terminalをもう一つ開きます。

ssh -i /path/identity_file -p 10022 -l [ユーザーID] localhost
Enter passphrase for key '/path/identity_file': <- パスフレーズ入力

これでインタラクティブノードにSS H接続で入ることができました。

上記がうまくいかない場合はユーザーIDが違うか鍵の設定がうまくいっていないことが考えられます。ユーザーIDとおそらくもう一つグループIDもあるのでそちらと混同しないでください。

上記がSSH接続までの流れですがここから概念について説明します。現在接続しているインタラクティブノードは計算用ではありません。ここはあくまでも計算ノードやファイルサーバに指示を出すところです。

正直ここで操作しても通常の操作よりは格段に速いのですがそれでは使いこなせておりません。ここから計算ノードに接続して何かしらの計算を行うのですがその手段は2通りあります。

一つ目はインタプリンタのようにインタラクティブに計算ノードにアクセスしてコマンド操作を行う。
二つ目はシェルスクリプトを作成し、そのシェルスクリプトをバッチとしてジョブ投入します。こちらの方法の方がABCI的には良いのかと思われます。

コマンドは公式をみた方がわかりやすいのでこちらから。

なかなかシェルスクリプトをバッチジョブとして投入は自分には難しかった。。

SSH接続後の環境構築

次はこの内部に環境構築を行っていきます。使用するモジュールをロードして使用できるようにしていきます。コマンドに関しても公式マニュアルに全て記載されているのでそちらをみてください。下記ではPythonをロードしてみます。

何もせずに下記を実行するとエラーに。
python3 --version
[error]

module load python/3.6/3.6.5
python3 --version
[3.6.5]

Singularityコンテナを立ち上げる

こちらなぜか公式の通りにやったのにできなかったため少し調べて行いました。

[username@es1 ~]$ qrsh -l rt_F=1 -l h_rt=1:00:00
[username@g0001~]$ 計算ノードに入ったのでes1~4ではなくg0~になっております。
[username@g0001~]$ module load singularitypro/3.5
[username@g0001~]$ singularity run --nv docker://caffe2ai/caffe2:latest
これが公式のものですがこれではコンテナに入れてもPythonなどがインストールされていなかった。
singularity> python3 --version
[error]

一度計算ノードを出る
singularity> exit
[username@g0001~]$ exit
logout
[username@es(0~4)~]$ 

もう一度別の方法で試す。
[username@es(0~4)~]qrsh -l rt_F=1 -l h_rt=1:00:00
[username@g0001~]$ module load singulalitypro/3.5
tensorflowのイメージを引っ張ってくる
singularity pull docker://nvcr.io/nvidia/tensorflow\:19.01-py3
これでフォルダに下記の表示があるはず。
ls
tensorflow.19.01-py3(この表記もしかしたら違うかも確認要です)
これを公式にあるようにbuildしてみる
[username@g0001~]$singularity run ./tensorflow.19.01-py3

singularity> python3 --version
[バージョン表示]

以上で立ち上げ完了です。あとは好きに環境を構築してください。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Python
スポンサーリンク
スポンサーリンク
ともぶろぐ

コメント

タイトルとURLをコピーしました