今回は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
[バージョン表示]
以上で立ち上げ完了です。あとは好きに環境を構築してください。
コメント