⼤規模AIクラウド計算システム「ABCI」
初めてのABCI
2020年11⽉11⽇
国⽴研究開発法⼈ 産業技術総合研究所
情報・⼈間⼯学領域
ディジタルアーキテクチャ推進センター
クイックレファレンス
https://abci.ai/ja/how_to_use/data/ABCI_referrence.html
1

⽬

次

＜事前準備＞＜ハンズオン＞

1.

PC (Windows, Mac)へLinux, Python環境を構築

1.

ABCI利⽤の概念的理解(Jupyter Notebook)2.

計算ノードにおける基本操作(Linux)– ジョブの投⼊ (qsub, qrsh)– クラウドストレージの利⽤

3.

ABCI環境構築

2.

WindowsPCの場合
WSL (Windows Subsystem for Linux)によるLinux環境構築

3.

初回ログインとパスワード

4.

公開鍵の登録＠利⽤ポータル

5.

インタラクティブノードへのログイン①

Python仮想環境の構築②

モジュールコマンド︓
ABCIにインストール済のソフトウェアを利⽤(ABCI利⽤の⼊⼝)

例︓python, cuda, cudnn, singularity③

インストールコマンド︓
利⽤したいソフトウェアをインストール
例︓TensorFlow, Jupyter Notebook④

コンテナイメージの利⽤︓
ソフトウェア環境をそのまま利⽤
例︓digits

4.

ABCI利⽤ポータル

5.

ABCIサービス諸元
2

3

事前準備

PC (Windows, Mac)へLinux, Python環境を構築
Jupyter Notebookを利⽤する

3

Anaconda3をインストール

事前準備• Anacondaは、PythonやJupyter Notebook等のパッケージを提供するプラットフォーム• 下記のリンクからAnaconda3のインストーラをダウンロード
https://repo.continuum.io/archive/＊頻繁にアップグレードされているので、新しいバージョンを選択<MacOS><Windows>
Anaconda3-2020.07-MacOSX-x86_64.pkg
Anaconda3-2020.07-Windows-x86.exe＊64bit版OSの場合はAnaconda3-2020.07-Windows-x86_64.exe•

インストーラを実⾏＊「インストール先」は、「⾃分専⽤(Just Me)」とすること。
＊インストール先のパスは「デフォルト」がお勧め（パスに⽇本語があるとうまく動作しない場合がある）。
＊Windowsでは、「Register Anaconda as my default Python 3.8」にチェックを⼊れるのがお勧め。

4

Anaconda Navigatorを起動してJupyter Notebookをインストール

事前準備• Anaconda Navigatorを起動<MacOS>
Finder -> アプリケーション -> Anaconda-Navigator<Windows>
スタート -> Anaconda3 -> Anaconda Navigator• Jupyter Notebookの「Install」をクリック※「Launch」と表⽰されている場合は次ページ(P.9)へ進む

5

6

Jupyter Notebookを起動

事前準備

Jupyter Notebookの「Launch」をクリック

6

Jupyter Notebook起動時にこのような画⾯が出たら事前準備(2) ⼀度パスワードを登録しておけば、登録したパスワードを⼊⼒(毎回、トークンをコピペする必要なし)(1) ここに、トークンとパスワードを⼊⼒

7

Jupyter Notebookのブラウザが⾃動で⽴ち上がらない場合

事前準備• Jupyter Notebookを起動してもブラウザが⾃動で⽴ち上がらない場合は、ターミナルに出⼒されたURLをブラウザにコピぺする。

• インストールしたanaconda3のJupyter Notebookに再接続(「Logout」ボタンでログアウト
後に「login page」のリンクをクリックした場合等) した場合に、トークンを⼊⼒する画⾯(P.10)が表⽰される場合がある。そのような使⽤を⾏う場合、事前に以下の⼿順でトークンを取得しておく。
1.
2.

P.13の「Jupyter Notebookのターミナルを使う」の⼿順で、ターミナル画⾯を表⽰する。
ターミナルで以下のコマンドを⼊⼒する。

jupyter notebook list3.

以下のような結果が出⼒された場合、token=XX..XX の”XX..XX”の部分がトークンである。

Currently running servers:
http://localhost:8888/?token=XX...XX ::8

Jupyter Notebookのターミナルを使う

事前準備

Jupyter ホーム画⾯
Jupyter ターミナル画⾯

New -> Terminal
をクリック

9

Jupyter NotebookのPythonを使う

事前準備

Jupyter ホーム画⾯
Jupyter のPython画⾯

New -> Python3
をクリック

10

Jupyter Notebookを終了させる

事前準備• Jupyter Notebookを起動した時に⽴ち上がったターミナルで、「Control-C」を打つ。
• 以下のように聞かれるので、「y」を打つ。
The Jupyter Notebook is running at:
http://localhost:8888/
Shutdown this notebook server (y/[n])?

(Windowsの場合)• Jupyter Notebookの画⾯右上の「Quit」をクリックし、以下のメッセージが表⽰されたらブラウザのタブを閉じる

11

Windows

事前準備

WSL (Windows Subsystem for Linux)によるLinux環境構築• WSLを使えば、 WindowsPCでもターミナルでLinuxコマンドが使えるようになります。
• WSL (Windows Subsystem for Linux)によるLinux環境構築⽅法については、下記のサイト等をご参照ください。
https://qiita.com/tedkuma/items/01e5cfa09347176f4d1a

12

13

事前準備

初回ログインURL、ABCIアカウント、仮パスワードをメール受信したら、、

13

ABCI利⽤ポータルへの初回ログインとパスワード登録

1. 初回ログインURLへアクセス

パスワードは、「仮パスワード」を⼊⼒

14

事前準備

3. パスワード変更

2. 利⽤規定への同意（右）「同意する」をクリック後、「全てを同意して次へ進む」をクリック

14

15
事前準備

初期アクセスURLがタイムアウトになってしまったら、、
操作説明

画⾯

利⽤ポータルにアクセス• ABCIアカウント名を⼊⼒• 画像認証の数値をテキストボックに⼊⼒
利⽤ポータルhttps://portal.abci.ai/user/* ２回目からのア
クセス時には、本パスワードを入力

この場合は「657551」を入力

メール通知されたURLにアクセスし利⽤ポー
タルにログイン• ABCIアカウント名を⼊⼒• 仮パスワードを⼊⼒
xxxxx 様通知メール文例

このメールはABCI利用ポータルよって送信されました。
以下のURLからログインしてください。

接続先URLhttps://portal.abci.ai/user/login.php?action=input_passw
d&login_url=xxxxxxxxxxxxxxxxxxxx※このURLの有効期限は "2019/01/10 12:02" までとなりますのでご注意ください。

期限に注意

仮パスワード(２回目以降は本パスワード)

15

16

事前準備

ABCI利⽤開始前に公開鍵を登録する（必須）

16

17

公開鍵・秘密鍵ペアの⽣成
１） ターミナルを開き、公開鍵・秘密鍵のペアを生成する(ssh-rsaの例)。

事前準備「xxx@yyy.co.jp」は、自分のメルアドと置き換える！

yourpc$ install -m 0700 -d ~/.ssh
yourpc$ cd ~/.ssh
yourpc$ ssh-keygen -t rsa -b 4096 -C ”xxx@yyy.co.jp" -f ~/.ssh/id_rsa
Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): <-- パスフレーズを入力（任意）Enter same passphrase again: <-- もう一度、パスフレーズを入力（任意）Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
yourpc$ ls ~/.ssh
id_rsaid_rsa.pub* id_rsa（秘密鍵）・・・ クライアントPCに配置* id_rsa.pub （公開鍵）・・・ ABCIに登録
２） ターミナルから公開鍵を参照する(ssh-rsaの例)。

* 公開鍵は架空のものです。

yourpc$ cat ~/.ssh/id_rsa.pub
ssh-rsaabcdefghijklmnopqrstuvwxz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXabcdefghijklmnopqrstuvwxz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXabcdefghijklmnopqrstuvwxz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwx
yzABCDEFGHIJKLMNOPQRSTUVWXgxVQ7WEhTBbCel xxx@dhcp012345.a01.yyy.co.jp
yourpc$17

18

公開鍵の登録操作説明

事前準備

ABCI利⽤ポータル

画⾯①登録⽅式は[直接⼊⼒]を選択①②公開鍵をコピペ• [登録]をクリックし公開鍵を登録③[登録]をクリック

公開鍵をコピペ②ssh-rsaabcdefghijklmnopqrstuvwxz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXabcdefghijklmnopqrstu
vwxz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXabcdefghijklmnopqrstuvwxz1234567890ABCD
EFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXgxVQ7WEhTBbCel xxx@dhcp012345.a01.xxx.yy.jp③※ 公開鍵は初回設定後も利⽤ポータルで参照、削除、（追加）登録が可能です。
* 公開鍵は架空のものです。

18

19

ABCI利⽤ポータル
操作説明

画⾯

利⽤者ポータル（画像認証）にアクセス• ABCIアカウント名を⼊⼒• 画像認証の数値をテキストボッ
クに⼊⼒
利⽤者ポータルhttps://portal.abci.ai/user/
この場合は「657551」を入力

メール通知されたURLにアクセスし利⽤者ポータルにログイン• ABCIアカウント名を⼊⼒• パスワードを⼊⼒
xxxxx 様通知メール文例

このメールはABCI利用ポータルよって送信されました。
以下のURLからログインしてください。
https://portal.abci.ai/user/login.php?action=input_
passwd&login_url=xxxxxxxxxxxxxxxxxxxx

接続先URL

事前準備

ABCI利⽤者の設定・参照︓• パスワード変更• 公開鍵の登録• 公開鍵の参照、削除• ノード予約・キャンセル（利⽤者に係るもの）• ABCIポイント使⽤履歴• ABCIポイント追加履歴
https://docs.abci.ai/portal/ja/02/
ABCI利⽤グループの管理︓（利⽤責任者⼜は利⽤管理者権限が必要）• ABCIポイントの追加申請• グループディスクの追加申請• 利⽤者の追加申請• 利⽤者の編集• 利⽤者の削除• 利⽤管理者権限の設定・削除• 利⽤責任者の変更申請
https://docs.abci.ai/portal/ja/03
クラウドストレージ管理 (New)︓• アカウント管理

期限に注意※このURLの有効期限は "2019/01/10 12:02" までとなりますのでご注意ください。

19

ABCI利⽤ポータルへアクセスし、⾃分が所属する利⽤グループを確認する

事前準備

20

21

事前準備

インタラクティブノードへのログイン
Windowsユーザ(かつWSLを導⼊されていない)の皆様は、インタラクティブノードへのロ
グ イ ン は 、 SSH ク ラ イ ア ン ト ソ フ ト ウ ェ ア (PuTTY, Teraterm 等 ) を 使 ⽤ 願 い ま す 。
具体的な接続⽅法については、ABCI User Guideを参照願います。
Teratermの利⽤ : https://docs.abci.ai/ja/tips/tera-term/
PuTTYの利⽤ : https://docs.abci.ai/ja/tips/putty/＊所属する機関によっては下記のようなセキュリティポリシーを適⽤している場合があります。その際は、所属する機関のIT部⾨からのサポートを得てください。
l SSH接続をプロキシー経由としている
l 秘密鍵を（各⾃のPCではなく）サーバーに置くことになっている
l アクセス制御により、下記のようなポート番号を使⽤禁⽌にしている•

10022, 8888, 6006 … （ABCIで利⽤するポート番号）

21

22

インタラクティブノードへのログイン(ssh)１） ターミナルからアクセスサーバ(as.abci.ai)にログインします。

事前準備「aaa12345xx」は、自分の「ABCI-ID」に置き換える！

yourpc$ ssh -L 10022:es:22 -l aaa12345xx as.abci.ai
The authenticity of host 'as.abci.ai (0.0.0.1)' can't be established.
RSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX. → 初回ログイン時のみ表示される。
Are you sure you want to continue connecting (yes/no)? ← yesを入力
Warning: Permanently added ‘XX.XX.XX.XX' (RSA) to the list of known hosts.
Enter passphrase for key '/home/username/.ssh/id_rsa': ← パスフレーズ入力
Welcome to ABCI access server. Please press any key if you disconnect this session.
＊ 秘密鍵ファイルへのパス指定サブコマンド： -i ~/.ssh/秘密鍵ファイル名
Warning
上記状態で何らかのキーを入力するとSSH接続が切断されてしますので注意してください。
２） 別のターミナルで、インタラクティブノード(es)にポートフォーワーディングします。

yourpc$ ssh -p 10022 -l aaa12345xx localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established. RSA key fingerprint is
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX. → 初回ログイン時のみ表示される。
Are you sure you want to continue connecting (yes/no)? yes ← yesを入力
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Enter passphrase for key '/home/username/.ssh/id_rsa': ← パスフレーズ入力[username@es1 ~]$Warning
終了処理： 終了する場合は、「exit」コマンドを投入。何も操作がなければ、１時間でセッションは自動的に切断されます。

ssh -L 10022:es:22 -l aaa12345xx as.abci.ai
ssh -p 10022 -l aaa12345xx localhost

localhostのポート番号：remote host：remote hostのポート番号
localhostのポート番号(ssh –Lで使った番号と一致させる)
22

23＊ハンズオンはここからスタートします。

これで、ABCIを利⽤する準備が整いました

23

ABCI利⽤概念図

これらのリソース使用時には、
必ず、グループIDとの紐付けが必要(ポイント消費)

ABCI

必須情報：
• ABCI-ID: aaa12345xx• グループID: gaa12345

計算ノード
アクセス
サーバ

クライアントPCas

F
W

インタラクティブ
ノード
es1
〜
es4

qsub
qrsh

ファイルシステム

scp

sshログイン*

g0001
〜
g1088

参照する鍵情報：
• 公開鍵
• 秘密鍵

Localhost:10022

sshポートフォワーディング

Remotehost:22

ABCIではSSH認証を採用。
ABCIへのアクセスは、アクセスサーバ(as)へのSSHトンネリングを使う。
* このSSHセッションはABCI利用終了まで接続を切ってはいけない。

24

ディスク領域割当・ ホーム領域: 200GB(無償)・ グループ領域: 1TBの倍数(有償オプション)24

計算ノードへのアクセス⼿順
ABCI
計算ノード
アクセス
サーバ

クライアントPCas

F
W

インタラクティブノード③ qrsh
es1
〜
es4

g0001
〜
g1088

sshログイン

① $ ssh -L 10022:es:22 -l aaa10005yk as.abci.ai

Localhost:10022
Localhost:8889

sshポートフォワーディング② $ ssh -p 10022 -l aaa10005yk localhost

es1:22

sshポートフォワーディング④ $ ssh -L 8889:g0001:8889 -l aaa10005yk -p 10022 localhost

g0001:8889
25

26

ABCIでのオペレーション• ABCIはLinux OSで構成されたシステム– コマンド実⾏による対話的な操作が主体

コマンド
コマンド
実⾏結果

定型の操作を覚えれば利⽤は簡単
26

計算ノードにおける基本操作• ジョブの投⼊ (qsub, qrsh)• ファイルのアップロード、ダウンロード (scp)• クラウドストレージの利⽤

27

28

バッチジョブによるABCI利⽤フロー
アプリ環境の準備

ログイン•

ABCIへのログイン
インタラクティブノード
へのログイン

Python、Tensorflow等の環境設定

ファイルのアップロード

データのアップロード

結果データのダウンロードスクリプトとプログラムのアップロード* ⽂字コード、改⾏コードの違いに注意

ファイルのダウンロード

ジョブ実⾏状態の確認(qstat)スクリプト、プログラムの作成・編集はPCで実施*

ジョブ実⾏状態の確認

ジョブ実⾏

作成したスクリプトを実⾏(qsub)
28

29

バッチジョブの準備
ジョブスクリプトの作成と実⾏権の付与

Linux1） PCでジョブスクリプト(Sample.sh)を作成し、PCのホーム領域に保存。
datehostnameecho "Hello, world"

2） PC環境で作成したジョブスクリプト(Sample.sh)をABCIへアップロード。 「aaa12345xx」は、自分の「ABCI-ID」に置き換える！
yourpc$ scp -P 10022 Sample.sh aaa12345xx@localhost:Sample.shEnter passphrase for key: ++++++++ ← パスフレーズを入力
Sample.sh
100% file-sizetransfer-speedtransfer-time3-1） ジョブスクリプト(Sample.sh)の改行コードがCR+LFまたはCRになっている場合： 改行コードをLinux環境(LF)に変更し、sample.shで保存。
[username@es1 ~]$ nkf –Lu Sample.sh > sample.sh3-2） 文字コードがShift-JIS、改行コードがCR+LFになっている場合： 文字コードと改行コードをLinux環境(UTF-8, LF)に一括変換。
[username@es1 ~]$ nkf –wd Sample.sh > sample.sh3-3）文字コード、改行コードの確認。
[username@es1 ~]$ nkf –-guess sample.shsample.sh: UTF-8 (LF)

4） インタラクティブノード(es)にログインして、ジョブスクリプトに実行権を付与。
[username@es1~]$ chmod u+x sample.sh
ジョブスクリプトに実行権を付与[username@es1~]$ ls -l
実行権”x”がついていることを確認
total 0-rwxr--r-- 1 username usergroup 61 Jan 11 13:12 sample.sh* Linuxでは、文字コード(UTF-8)、改行コード(LF)が使用される。PCのOSによっては文字コード、改行コードの変換が必要。
• Windowsの場合： 文字コード(Shift-JIS)、改行コード(CR+LF)• Mac OS X以前のMacの場合： 改行コード(CR)

29

30

バッチジョブ(qsub)１） インタラクティブノード(es)にログインして、sample.shを実行。

Linux「gaa12345xx」は、自分の「利用グループ名」に置き換える！

[aaa12345xx@es1 ~]$ qsub -g gaa12345 -l rt_C.small=1 sample.sh# gaa12345: グループ名, rt_C.small=1 : 計算資源タイプ（CPU x 5コア）, sample.sh: ジョブスクリプトYour job 151645 ("sample.sh") has been submitted２） バッチジョブの状況を参照。
[aaa12345xx@es1 ~]$ qstat
job-ID
prior
name
user
state submit/start atqueue
jclass slots ja-task-ID--------------------------------------------------------------------------------------------------------------------151646 0.25586 sample.sh aaa12345xx r
01/20/2019 15:16:53 gpu@g0002
10３） バッチジョブの出力（ホームディレクトリ）。
[aaa12345xx@es1 ~]$ ls -l-rw-r--r-- 1 aaa12345xx gaa12345-rw-r--r-- 1 aaa12345xx gaa12345

172 1月 20 15:17 sample.sh.e151646 #エラー出力ファイル（数字はジョブ番号）0 1月 20 13:51 sample.sh.o151235 #正常出力ファイル（数字はジョブ番号）

予約ノードの指定法： サブコマンド（ -ar ar_id )# ar_id は「予約ID」(４桁の数字）# 予約ID は、「利用ポータル」の「ノード予約・キャンセル」または、qrstatコマンドで参照できる。
優先度を上げるには： サブコマンド( -p -400)# ポイントは通常の1.5倍ジョブをプログラム（スクリプト）化 -> 多数のジョブを一度に投げられる
30

31

インタラクティブジョブ(qrsh)
１） インタラクティブノード(es)にログインして実行。

Linux「gaa12345xx」は、自分の「利用グループ名」に置き換える！

[aaa12345xx@es1 ~]$ qrsh -g gaa12345 -l rt_F=1 –l h_rt=01:00:00# gaa12345: グループ名, rt_F=1 : 計算資源タイプ（フルノードを１個）, h_rt=01:00:00（最大１時間確保）
２） インタラクティブジョブの状況を参照。
[aaa12345xx@es1 ~]$ qstat
job-ID
prior
name
user
state submit/start atqueue
jclass slots ja-task-ID--------------------------------------------------------------------------------------------------------------------151646 0.28027 QRLOGIN aaa12345xx r
01/21/2019 09:39:43 gpu@g0371
10

予約ノードの指定法： サブコマンド（ -ar ar_id )# ar_id は「予約ID」(４桁の数字）# 予約ID は、「利用ポータル」の「ノード予約・キャンセル」または、qrstatコマンドで参照できる。

ジョブ実行時に、インタラクティブに計算ノードへアクセス可能 -> デバッグ等に便利

31

32

ファイルのアップロード・ダウンロード(scp)Linux１） ファイルのアップロード： インタラクティブノード(es)にログインし、別のターミナルからscpを実行。

yourpc$ scp -P 10022 local-file aaa12345xx@localhost:remote-file# local-file : PCからアップしたいファイル、 remote-file : リモートファイル名
Enter passphrase for key: ++++++++ ← パスフレーズを入力
local-file100%
file-size transfer-speed transfer-time「aaa12345xx」は、自分の「ABCI-ID」に置き換える！
２） ファイルのダウンロード： インタラクティブノード(es)にログインし、別のターミナルからscpを実行。

yourpc$ scp -P 10022 aaa12345xx@localhost:sample ./# sample: PCへダウンロードしたいファイル
Enter passphrase for key: ++++++++ ← パスフレーズを入力
sample100%
file-size transfer-speed transfer-time

32

ABCIクラウドストレージの特徴

Amazon S3 互換のオブジェクトストレージサービス① AWS CLI（コマンドラインインタフェース）が使える② ABCIにログインしなくても、httpsで外部から使える③ サーバーサイド暗号化に対応している④ 複数のクラウドストレージ・アカウントを持てる⑤ バケット単位で、アクセス制御を設定できる（⾮公開、ABCI利⽤グループで共有、全世界への公開を選択できる）

33

ABCIクラウドストレージの利⽤例
n ＜ユースケース１＞データやプログラムの共有・公開の場として
データやプログラムを特定のグループ内（⼜は複数のグループ間）で共有。バケット単位で⾃由にアクセス制御ができるので、柔軟に共有ができる。特に、クラウドストレージに保存されたデータを利⽤してABCIの計算ノードで処理する場合、データ転送を
低レイテンシーでゼロコストで可能となる。

n ＜ユースケース２＞IoTデバイスやエッジシステムとのデータ連携としてカメラやセンサーなどのIoTデバイスで取得したデータを直接、ABCIクラウドストレージに格納。取得したばかりのデータを使って、ABCI計算ノードで処理させることができる。

n ＜ユースケース３＞ホーム領域の延⻑としてホーム領域が不⾜してきた場合、データの保管場所として利⽤。低額の従量制課⾦なので、グループ領域（共有ディスク）をTB
単位、⽉単位で使⽤するよりも、低料⾦で柔軟に使うことができる。

n ＜ユースケース４＞複数のアカウントで使い分ける
研究者は複数のプロジェクトを推進している場合が殆ど。複数のアカウントを作れるので、プロジェクト毎にバケットの管理（アクセス制御）を⾏うことができる。

n ＜ユースケース５＞暗号化してデータの情報漏洩を防⽌する
サーバーサイドの暗号化機能を使えば、万⼀、クラウドストレージから情報が漏洩してもデータを復元できない。
34

ABCIクラウドストレージの使い⽅

AWS CLI35

https://docs.abci.ai/ja/abci-cloudstorage/usage/
https://docs.abci.ai/portal/ja/03/#manage-cloudstorage•

AWS-CLIモジュールのロード• 認証情報などの設定[username@es1 ~]$ module load aws-cli• 各

種

AWS-CLI構⽂ aws [options] <command> <subcommand> [parameters]例

aws --endpoint-url https://s3.abci.ai s3 ls
s3: コマンド、ls: サブコマンド

バケットの作成︓[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 mb
s3://dataset-summer-2012
make_bucket: dataset-summer-2012
バケットの⼀覧︓[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 ls
2019-06-15 10:47:37 testbucket1
2019-06-15 18:10:37 testbucket2
オブジェクトのリスト︓[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 ls
s3://testbucket1
2019-07-05 17:33:05 4 test1.txt
2019-07-05 21:12:47 4 test2.txt

操作[username@es1 ~]$ aws configure
AWS Access Key ID [None]: ACCESS-KEY-ID
AWS Secret Access Key [None]: SECRET-ACCESS-KEY
Default region name [None]: us-east-1
Default output format [None]:(⼊⼒不要)

データのコピー︓[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 cp ./images/0001.jpg
s3://dataset-c0541/
upload: images/0001.jpg to s3://dataset-c0541/0001.jpg
データの移動︓[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 mv annotations.zip
s3://dataset-c0541/
move: ./annotations.zip to s3://dataset-c0541/annotations.zip
オブジェクトのリスト︓[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 ls s3://testbucket1
2019-07-05 17:33:05 4 test1.txt
2019-07-05 21:12:47 4 test2.txt
ローカルディレクトリとクラウドストレージの同期︓[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 sync ./sensor2
s3://mybucket/
upload: sensor2/0002.dat to s3://mybucket/0002.dat
upload: sensor2/0004.dat to s3://mybucket/0004.dat
オブジェクトの削除︓[username@es1 ~]$ aws --endpoint-url https://s3.abci.ai s3 rm
s3://mybucket/readme.txt
delete: s3://mybucket/readme.txt

35

36

さあ、ABCIを利⽤してみよう︕
ABCI環境構築
l モジュールコマンド︓ABCIにインストール済のソフトウェアを利⽤
例︓python, cuda, cudnn, singularityl インストールコマンド︓利⽤したいソフトウェアをインストール
例︓TensorFlow, Jupyter Notebookl コンテナイメージの利⽤︓ソフトウェア利⽤環境をそのまま利⽤
例︓digits

https://docs.abci.ai/ja/

36

37

①
②
③
④
⑤

アプリケーション環境の構築

Python

インタラクティブジョブ(qrsh)で計算ノードへログイン
Pythonモジュールのロード
インストールを１回だけ実施すれば、
Python仮想環境の設定
ホーム領域に保存される
GPGPU実⾏環境の設定
アプリケーション環境（ex. フレームワーク）の設定⑤ フレームワークのインストール(pip)③ Python仮想環境の設定(venv, virtualenv)② Pythonモジュールのロード① qrshでログイン

インタラクティブ
ノード (es)

フレームワークex) TensorFlow
Python 仮想環境
PythonGPGPU実⾏環境
Ex) CUDA, CUDNN

ユーザがフレームワークをインストールABCIがサポート④ CUDA, CUDNNモジュールのロード

計算ノード (gXXXXX)
37

38

Pythonモジュールのロード

Python• アプリ実⾏環境の適⽤– ABCIで⽤意されたアプリ実⾏環境（環境変数）を設定可能
コマンド$ module [avail] [load MODULE] [unload MODULE] [list]
オプション

説明

avail

利⽤可能な environment module の⼀覧を表⽰。av に省略可。

load

module の読み込み

unloadmodule の解除

list

現在読み込んでいる module をリスト表⽰

実⾏例[username@g0003 Sample]$ which python3
Python3環境は未設定/usr/bin/which: no python3 in (/apps/…..)
python 3.6.5 環境をロード[username@g0003 Sample]$ module load python/3.6/3.6.5[username@g0003 Sample]$ module list
Currently Loaded Modulefiles:
1) python/3.6/3.6.5
Python3.6.5がロードされた38

39

Python仮想環境の設定

Pythonl プロジェクトのアプリ実⾏環境をディレクトリ単位で管理可能（他アプリ実⾏環境とのバージョン⼲渉を排除できる）
l python2 系は virtualenv, python3 系は venv など多数あり
l 仮想環境を使う度に activate で有効化、deactivate で終了
実⾏例︓virtualenv (python2)[username@g0003 ~]$ virtualenv ~/Sample/v_tf_gpu
仮想環境を作成。ディレクトリapp1を作成[username@g0003 ~]$ source ~/Sample/v_tf_gpu/bin/activate
仮想環境を開始。(csh の場合 activate.csh)(v_tf_gpu)[username@g0003 ~]$ pip install ...
この間、pip などで取得するモジュールの(v_tf_gpu)[username@g0003 ~]$ :ファイルは ~/Sample/v_tf_gpuディレクトリに配置される。
(v_tf_gpu)[username@g0003 ~]$ deactivate
仮想環境を終了。

実⾏例︓venv (python3)

仮想環境を作成。ディレクトリapp2を作成[username@g0003 ~]$ python3 –m venv ~/Sample/v_tf_gpu[username@g0003 ~]$ source ~/Sample/v_tf_gpu/bin/activate
仮想環境を開始。(csh の場合 activate.csh)(v_tf_gpu)[[username@g0003 ~]$ pip install ...
この間、pip などで取得するモジュールの(v_tf_gpu)[[username@g0003 ~]$:ファイルは ~/Sample/v_tf_gpuディレクトリに配置される。
(v_tf_gpu)[[username@g0003 ~]$ deactivate
仮想環境を終了。

39

40

ABCIでJupyter Notebookを使う
https://docs.abci.ai/ja/tips/jupyter-notebook/

40

41

ABCIでJupyter Notebookを起動(1) 計算ノードを⼀台占有し、Python仮想環境を作成し、pipでtensorflow-gpuとjupyterをインストール（⼀度、実施すればいい）。

[username@es3 ~]$ qrsh -g gaa12345 -l rt_F=1[username@g0001 ~]$ module load python/3.6/3.6.5 cuda/10.0/10.0.130.1 cudnn/7.4/7.4.2[username@g0001 ~]$ python3 -m venv ~/jupyter_env[username@g0001 ~]$ source ~/jupyter_env/bin/activate(jupyter_env)[username@g0001 ~]$ pip3 install tensorflow-gpu jupyter numpy==1.16.4＊ 次回以降は、以下のようにモジュールの読み込みと~/jupyter_envのアクティベートだけでいい。
[username@es3 ~]$ qrsh -g gaa12345 -l rt_F=1[username@g0001 ~]$ module load python/3.6/3.6.5 cuda/10.0/10.0.130.1 cudnn/7.4/7.4.2[username@g0001 ~]$ source ~/jupyter_env/bin/activate(jupyter_env)[username@g0001 ~](2) Jupyter Notebookを起動。

ローカルPCでJupyterを起動中でポート8888を使⽤している場合、「8889」を使⽤︕(jupyter_env)[username@g0001 ~]$ jupyter notebook --ip=`hostname` --port=8888 --no-browser..
[I 20:41:12.082 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 20:41:12.090 NotebookApp]
To access the notebook, open this file in a browser:
file:///home/username/.local/share/jupyter/runtime/nbserver-xxxxxx-open.html
Or copy and paste one of these URLs:
http://g0001.abci.local:8888/?token=token_stringor http://127.0.0.1:8888/?token=token_string41

42

Jupyter NotebookでABCIを利⽤(3) 別ターミナルで。ローカルPCの8888番ポートを計算ノードの8888番ポートに転送するSSHトンネルを作成。
yourpc$ ssh -L 8888:g0001:8888 -l username -p 10022 localhost(4) ブラウザで下記のURLを開く（トークンは、(2)をコピペ）。
http://127.0.0.1:8888/?token=token_string＊ パスワードを登録しておけば、毎回トークンをコピペする必要はない。
(詳細は、次ページを参照)＊ Jupyter Notebook利⽤上の注意点## notebookコンフィグファイル
Jupyter Notebookの利⽤には、notebookコンフィグファイルが必要です。
「jupyter_notebook_config.py」が下記のフォルダにない場合は、次のコマンドでnotebookコンフィグファイルを作成してください。
・ Windows: C:¥Users¥USERNAME¥.jupyter¥jupyter_notebook_config.py
・ OS X: /Users/USERNAME/.jupyter/jupyter_notebook_config.py
・ Linux: /home/USERNAME/.jupyter/jupyter_notebook_config.py
yourpc$ jupyter notebook --generate-config
42

Jupyter Notebook︓このような画⾯が出たら(2) ⼀度パスワードを登録しておけば、登録したパスワードを⼊⼒(毎回、トークンをコピペする必要なし)(1) ここに、トークンとパスワードを⼊⼒

43

Jupyter NotebookでPythonプログラミング例

44

45

Jupyter Notebookの終了
以下の⼿順で終了。
• ローカルPCのJupyter Notebookホーム画⾯の「quit」ボタンで終了。
• ローカルPCの8888ポートを転送していたSSHトンネル接続を Control-C で終了。
• 計算ノードで起動中のJupyterプログラムが終了してない場合は、 Control-C で終了。

45

46

コンテナ(Singularity)の利⽤
https://docs.abci.ai/ja/09/

46

47

ABCIで利⽤可能なコンテナは、Singularity• Singularity– ABCIではLinuxコンテナとしてSingularityが利⽤可能– 利⽤可能なバージョンは、moduleコマンドで確認可– NGC(※)コンテナレジストリなどから、Docker コンテナイメージ
をSingularityイメージに変換し利⽤が可能※ NGC (NVIDIA GPU Cloud) https://ngc.nvidia.com/
GPUに最適化されたディープラーニングフレームワークコンテナやHPCア
プリケーションコンテナのDockerイメージと、それらを配布するためのNGCコンテナレジストリを提供

実⾏例(module)$ module avail---------------------- /apps/modules/modulefiles/runtimes -----------------hadoop/2.9.1
singularity/2.6.1 spark/2.3.2
hadoop/2.9.2
spark/2.3.1
spark/2.4.0

47

48

Singularityイメージの作成• NVIDIA NGCからDIGITSを取得
NGC コンテナレジストリからDIGITSイメージを取得し、Singularityイメージを作成[aaa12345xx@es3 ~]$ cd ~/abci101[aaa12345xx@es3 abci101]$ mkdir singularity_digits[aaa12345xx@es3 abci101]$ cd singularity_digits[aaa12345xx@es3 singularity_digits]$ module load singularity/2.6.1[aaa12345xx@es3 singularity_digits]$ singularity pull docker://nvcr.io/nvidia/digits:20.06tensorflow-py3

イメージファイルの取得と作成

Docker image path: nvcr.io/nvidia/digits:20.06-tensorflow-py3
Setting 700 permissions on folder /home/aaa12345xx/.singularity/docker
Cache folder set to /home/aaa12345xx/.singularity/docker[73/73] |===================================| 100.0%＜＜中略＞＞
Building Singularity image...
Singularity container built: ./digits-20.06-tensorflow-py3.simg
Docker イメージが変換されCleaning up...
.simg ファイルが作成される
Done. Container is at: ./digits-20.06-tensorflow-py3.simg[aaa12345xx@es3 singularity_digits]$

48

49

Singularityイメージの起動• DIGITSの起動例[aaa12345xx@es3 ~]$ qrsh -g gaa50123 -l rt_G.small=1[aaa12345xx@g0031 ~]$ cd abci101/singularity_digits[aaa12345xx@g0031 singularity_digits]$ module load singularity/2.6.1[aaa12345xx@g0031 singularity_digits]$ module list
前⾴で作成したSingularityイメージ
Currently Loaded Modulefiles:
を実⾏
1) singularity/2.6.1[aaa12345xx@g0031 singularity_digits]$ singularity run --nv digits-20.06-tensorflow-py3.simg -d -p 8889============== DIGITS ==============NVIDIA Release 20.06 (build 13420111)
DIGITS Version 6.1.1
Container image Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.
DIGITS Copyright (c) 2014-2019, NVIDIA CORPORATION. All rights reserved.
Various files include modifications (c) NVIDIA CORPORATION. All rights reserved.
NVIDIA modifications are covered by the license terms that apply to the underlying project or file.
NOTE: Legacy NVIDIA Driver detected. Compatibility mode ENABLED.
_ _ _ _ _| ¥ / __| | / __|| |) | | ( || | | | ¥/_|_| |_| |___/ 6.1.1

49

ABCI利⽤ポータル
https://portal.abci.ai/user/

50

51

51

52

52

53

53

54

54

ABCIサービス諸元

55

56

1. 計算ノードの利⽤
ジョブ割当リソース

資源タイプ 資源タイプ名

割り当て物理 割り当て
ローカル
資源タイプ 割当可能なメモリ(GiB)
ストレージ(GB) 課⾦係数
CPUコア数
GPU数
個数

説明

Full

rt_F

ノード占有

40

4

360

1440

1.00

1-512
(1-32)*

G.large

rt_G.large

ノード共有
GPU利⽤

20

4

240

720

0.90

1

G.small

rt_G.small

ノード共有
GPU利⽤

5

1

60

180

0.30

1

C.large

rt_C.large

ノード共有
CPUのみ利⽤

20

0

120

720

0.60

1

C.small

rt_C.small

ノード共有
CPUのみ利⽤

5

0

30

180

0.20

1

M.largert_M.large

ノード共有
CPUのみ利⽤

8

0

800

480

0.40

1

M.small

rt_M.small

ノード共有
CPUのみ利⽤

4

0

400

240

0.20

1

New!

＊バッチジョブは最大512個、インタラクティブジョブは最大32個

資源タイプ名と数量で資源量を指定
例） 資源タイプ(Full)を１個指定： -l rt_F=156

57

2. 計算リソース
制限事項

hour:minute:second
時間︓分︓秒
インタラクティブ
ジョブ(上限/デフォルト)

バッチジョブ(上限/デフォルト)

１日単位
最大30日間rt_F
rt_G.large
rt_C.large
New!

rt_M.large
rt_M.small

72:00:00/1:00:00
12:00:00/1:00:00
NA

rt_G.small
rt_C.small
ノード時間積

予約

168:00:00/1:00:00
12

2,304

l ７２時間（３日間）以上必要な学習は、「予約」を利用する。
l 小さなジョブは、一度に多数投入できる（分散処理向き）。

57

58

3. 計算ノードの予約利⽤
項目

説明

最小予約日数1日

最大予約日数30日

システムあたりの最大同時予約可能ノード数

442ノード1予約あたりの最大予約ノード数＊システムでの最大同時予約数の制限があるため、最大 32ノード
予約ノード数未満又はノードを予約できない場合がある。
1予約あたりの最大予約ノード時間積

12,288ノード時間積

予約受付開始時刻

30日前の午前10時

予約受付締切時刻

予約開始前日の午後9時

予約取消受付期間

予約開始前日の午後9時

予約開始時刻予約開始日の午前10時

予約終了時刻予約終了日の午前9時30分

予約ノードを利用する際は、qsubコマンド又はqrshコマンドにて、「-ar ar_id」オプションを使う。
58

59

4. ABCI料⾦表︓

2019/2020年度

インタラクティブ
ジョブ

計算資源

New!

ストレージ
New!

バッチジョブ

rt_F

1.0 ポイント/時間

rt_G.large

0.9ポイント/時間

rt_C.large

0.6ポイント/時間

rt_G.small

0.3ポイント/時間

rt_C.small

0.2ポイント/時間

rt_M.large

0.4ポイント/時間

rt_M.small

0.2ポイント/時間

予約

36ポイント/日(1.5ポイント/時間)

NA

グループ領域(共有ディスク)5 ポイント/TB・月(ABCIアカウント毎に割当られる200GBのホーム領域は無償)

ABCIクラウド
ストレージ

0.0001ポイント/GB・日
（従量制）
59

5. ジョブ実⾏上の特⻑

⼤規模演算を必要とする場合、有効• バッチジョブ(Spot)では、最⼤５１２ノードまでを利⽤可能• インタラクティブジョブ(On-demand)でも、最⼤３２ノードまで利⽤可能• ジョブ投⼊数（ユーザあたり）
１）アレイジョブあたりの最⼤投⼊可能タスク数︓
２）同時投⼊可能ジョブ数︓
３）同時実⾏ジョブ数︓75,000

1,000

200

60

61

ABCI参考サイト
より詳細な情報については、以下を参照下さい。
•
•
•
•
•

ABCIユーザガイド
https://docs.abci.ai/ja/
ABCI利用ポータル
https://portal.abci.ai/user/
ABCI利用ポータルの利用ガイド
https://docs.abci.ai/portal/ja/
ABCIユーザサポート
https://abci.ai/ja/how_to_use/user_support.html
ABCI利用法に関するFAQ
https://abci.ai/ja/how_to_use/yakkan.html#faq9

61

62

https://abci.ai/ 62