大規模AIクラウド計算システム「ABCI」

利用チュートリアル動画（ジョブ実行編）
国立研究開発法人 産業技術総合研究所
情報・人間工学領域
デジタルアーキテクチャ研究センター

目次• ABCIシステムを使う、その前に• ABCI2.0システムの概要• ABCIシステム利用の流れ• ABCIシステムへログイン• データのアップ/ダウンロード－ ターミナルからscpコマンドを使う場合 －－ WinSCPを使う場合 －• ジョブ実行のサービス• ジョブ実行で使う計算リソース• ジョブの実行• ジョブの実行の流れ – まとめ －• 参考リンク

ABCIシステムを使う、その前にABCIシステムを使うには、ご利用の端末においてLinuxのコマンドが使える必要があります
下記のABCI User GroupのホームページにABCIに接続するまでの手順を紹介をしています。
ABCIに接続したことない人はご参考ください。
ABCI User Group 「みんなのABCI」
ビデオ：ABCI利用チュートリアル（事前準備）
URL : https://abciug.abci.ai/入門編_1/ビデオabci利用
チュートリアル事前準備_i81

参考：ビデオ：ABCI利用チュートリアル(事前準備) ABCI User GroupABCI2.0システムの概要
ABCI2.0システムは、計算リソース・大容量ストレージを高速ネットワークで結合したシステム① 計算リソース
計算ノード(V) 1088台
計算ノード(A) 120台

ーーーーーーたーーー

ペートーアルーア④ ファイアウォールなど

ール

たーリ

接続

ペリ

リーリ

③ InfiniBand
ネットワーク

トーーービ

ルチ

トー

トー
ト ージームムーホーム（ルム：ルー）（ルインタラクティブノードム：デー）（ルトルーム：）（ルム）（ルムージ）② ストレージシステム
合計47PB
共有ファイルシステム
ABCIクラウドストレージ

参考：ABCI 2.0 User Guide - ABCIシステムの概要

ABCIシステムへログインからジョブ実行の流れ
ABCIシステムへアクセス、ssh接続を確立し、インタラクティブノードでジョブの準備
ジョブの実行はジョブスケジューラから計算ノードへ投入② ①で作成したSSHトンネルを使用して、計算ノードのインタラクティブノードにログイン③ インタラクティブノードでジョブの準備とジョブスケジューラにジョブ投入① アクセスサーバにログイン

ジョブ1

SSHトンネルを作成

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

SSHトンネル
クライアントPC

アクセスサーバas
ABCIシステム

インタラクティブノード
es-a

・・・

計算ノード(V)1,088台・・・

NVIDIA V100
4,352基ジョブスケジューラ
ジョブ2

計算ノード(V)・・・・・・

計算ノード(A)120台
NVIDIA A100960基

計算ノード(A)
参考：ABCI 2.0 User Guide -インタラクティブノードへの接続

ABCIシステムおける各ノードの役割 (1/3)
まず最初はアクセスサーバ(as)にログインして、SSHトンネルを作成する
ABCIシステム
ジョブスケジューラ

SSHトンネル
クライアントPC

計算ノード(V)または(A)・・・

アクセスサーバas

インタラクティブノード
es、または es-a

・・・

アクセスサーバ• インタラクティブノードにアクセスするため、最初にログインするサーバ。
操作不可の踏み台サーバ。
• インタラクティブノードにアクセスするSSHトンネルを作る。
• コマンド操作をおこなうと、インタラクティブノードなどへのSSHセッションが切れることに注意。

ABCIシステムおける各ノードの役割 (2/3)
続いて、インタラクティブノードへログインし、ジョブの実行の準備をする
ABCIシステム
ジョブスケジューラ ジョブスケジューラにジョブ投入

SSHトンネル
クライアントPC

アクセスサーバas

インタラクティブノード
es、または es-a

インタラクティブノード
利用者がログインし、ジョブ実行などの作業を行うABCIのサーバ• コンパイル、アプリのインストール、ジョブ実行スクリプトの用意• ジョブスケジューラにジョブ実行依頼• ABCI へデータアップロード、ダウンロード

計算ノード(V)または(A)・・・・・・

ABCIシステムおける各ノードの役割 (3/3)
ジョブスケジューラにジョブを登録して、確保された計算ノードでジョブを実行する
ABCIシステム
ジョブスケジューラ ジョブスケジューラにジョブ投入
バッチジョブ1

SSHトンネル
クライアントPC

計算ノード(V)または(A)・・・

バッチジョブ2

アクセスサーバas

インタラクティブノード
es、または es-a

計算ノード (V)または(A)インタラクティブ
ジョブ・・・

利用者のジョブ（プログラム）を実際に実行するサーバ群• ジョブスケジューラから受けたジョブを実行• ジョブの実行方法① Spotサービス （バッチジョブ実行）
ジョブスケジューラにジョブの実行を依頼し、確保された計算ノードでジョブを実行② On-demandサービス（インタラクティブジョブ実行）
ジョブスケジューラが確保した計算ノードに利用者が直接ログインしプログラムを実行

ABCIシステムおける各ノードの役割 (まとめ)ABCIシステムにおけるジョブの実行には、複数のノードを経由して計算ノードで実行する
ABCIシステム
ジョブスケジューラ
バッチジョブ1

SSHトンネル
クライアントPC

計算ノード(V)または(A)・・・

バッチジョブ2

アクセスサーバas

インタラクティブノード
es、または es-a

インタラクティブ
ジョブ・・・

アクセスサーバ

インタラクティブノード

計算ノード• インタラクティブノードにアクセスするため、最初にログインするサーバ。
• コマンド操作をおこなうと、SSHセッションが切れるので注意

利用者がログインし、ジョブ実行などの作業を行うABCIのサーバ• コンパイル、アプリのインストール、ジョブ実行
スクリプトの用意• ジョブスケジューラにジョブ実行依頼• データアップロード、ダウンロード利用者のジョブ（スクリプト）を実際に実行するサーバ群• ジョブスケジューラから受けたジョブを実行• ジョブの実行方法① Spotサービス （バッチジョブ実行）② On-demandサービス（インタラクティブジョブ実行）
参考：ABCI 2.0 User Guide -計算リソース

ABCIシステム利用の流れ
ジョブの実行結果を確認しながら、再度、データのアップロードとジョブ実行を繰り返す

ABCIへ
ロ

入力デー のアロー

ア リ環境の準備

実行

リの作成

ト

ジョ実行

ジョ結果を見て、再 繰 返し実行状態の確認

結果デー のダロー

ABCIシステムへログイン－ ターミナルからログインする場合 －① ターミナルから、アクセスサーバ(as)にSSHでログインし、SSHトンネルを設定します② 別のターミナルを開き、インタラクティブノード (es) へログインします
ABCIシステム① アクセスサーバへログイン

ジョブスケジューラ

SSHトンネル
クライアントPC（ローカルホスト② SSHトンネルを使ってポート番号10022） インタラクティブノードへログイン

計算ノード(V)または(A)・・・

アクセスサーバ
as.abci.ai

インタラクティブノード
es、または es-a・・・（リモートホスト ポート番号 22）① アクセスサーバへログイン コマンド書式例
ssh -L 10022:es:22 -l aaa12345xx as.abci.ai-L (クライアントPCで受けるポート番号) : (接続先インタラクティブノード名) : (インタラクティブノードのポート番号) -l (ABCIアカウント名) (アクセスサーバ名)② インタラクティブノードへログイン コマンド書式例
ssh -p 10022 -l aaa12345xx localhost-p (クライアントPCで受けるポート番号) -l (ログインするABCIアカウント名) (ホスト名)
参考： ABCI 2.0 User Guide ー ABCIの利用開始 SSHクライアントによるログインデータのアップ/ダウンロード－ ターミナルからscpコマンドを使う場合 (1/3)－
SSHトンネルを利用して、データのアップロード・ダウンロードが可能
ABCIシステム

アクセスサーバ

インタラクティブノードジョブスケジューラ

SSHトンネルData
クライアントPC（ローカルホスト側 ポート番号10022）

計算ノード(V)または(A)
・・・

Data

（リモートホスト側ポート番号 22） Home領域

・・・① クライアントPCからデータをアップロードする場合
コマンド
書式$scp -P 10022 ローカルのファイル名 aaa12345xx@localhost:./###/リモートの転送先ファイル名-P (クライアントPCのローカルホストポート番号) (転送するファイル) (ABCIアカウント名)@localhost : (転送先で受けるディレクトリのパスとファイル名)② データをクライアントPCへダウンロードする場合
コマンド
書式$scp -P 10022 aaa12345xx@localhost:リモートのファイル名 ./###/ローカルの転送先ファイル名-P (クライアントPCのローカルホストポート番号) (ABCIアカウント名)@localhost : (転送するファイル) (クライアントPC側の保存パスとファイル名）
参考： ABCI 2.0 User Guide ーインタラクティブノードへのファイル転送データのアップロード－ ターミナルからscpコマンドを使う場合 (2/3)－
ABCIシステム

アクセスサーバ

インタラクティブノード

SSHトンネル

ジョブスケジューラ

計算ノード(V)または(A)・・・

Sample.sh

クライアントPC（ローカルホスト側 ポート番号10022）

Home領域・・・

コマンド例
インタラクティ [abci username@es1 ~]$ls
ブノード側

ホームディレクトリのファイルを表示するが、データは何もない状態

yourpc$ scp –P 10022 sample.sh aaa12345xx@localhost:./sample.sh

クライアントEnter passphrase for key '/home/username/.ssh/id_rsa’:
PC側sample.sh
100% ##(ファイルサイズ) #.#KB/s(転送速度) ##:##(転送時間)
インタラクティ [abci username@es1 ~]$ls
ブノード側 sample.sh

クライアントPCのカレントディレクトリにある「sample.sh」をABCI上の自身のホームディレクトリに転送設定した鍵のパスフレーズを入力すると、指定したファイルが転送される
scpコマンドでファイル転送後、ホームディレクトリのファイルを表示すると、指定したファイルが格納されている

参考： ABCI 2.0 User Guide ーインタラクティブノードへのファイル転送データのダウンロード－ ターミナルからscpコマンドを使う場合 (3/3) －ABCIシステム

アクセスサーバ

インタラクティブノード

SSHトンネル
クライアントPC

計算ノード(V)または(A)・・・

Sample.sh（ローカルホスト側 ポート番号10022）

ジョブスケジューラ

Home領域・・・

コマンド例

クライアント yourpc$ scp –P 10022 aaa12345xx@localhost:./sample.sh ./sample.sh
PC側Enter passphrase for key '/home/username/.ssh/id_rsa’:sample.shyourpc$ls
sample.sh

100% ##(ファイルサイズ) #.#KB/s(転送速度) ##:##(転送時間)

クライアントPCのカレントディレクトリにある「sample.sh」をABCI上の自身のホームディレクトリに転送設定した鍵のパスフレーズを入力すると、指定したファイルが転送される
scpコマンドでファイル転送後、作業ディレクトリのファイルを表示すると、指定したファイルが格納されている

参考： ABCI 2.0 User Guide ーインタラクティブノードへのファイル転送データのアップ/ダウンロード－ WinSCPを使う場合 (1/7) －① WinSCPをダウンロード・インストールする【Windowsをお使いの方向け】• WinSCPダウンロードURL
https://winscp.net/eng/download.php• インストールはガイドに従ってインストールする• 本説明ではWinSCPの「コマンダー」と呼ばれる、ローカル側とリモート側の２つのディレクトリが表示されるモードを利用する• PuTTYでABCIのログイン設定を設定済みの場合、そのログイン設定をインポートしてくれる

データのアップ/ダウンロード－ WinSCPを使う場合 (2/7) －② 秘密鍵情報を登録する作成した秘密鍵のファイルを指定し、”OK”をクリック•WinSCPを起動すると[ログイン]ウィンドウが開くので、[新しいサイト] → [設定(D)…]をクリック•もし[ログイン]ウィンドウが開かない場合
WinSCPの画面のメニューバーから[セッション(S)] → [新しいセッション(N)] を選択する•[高度なサイトの設定]画面の左ペインメニューより[SSH] → [認証]を選択する•画面右側の[秘密鍵(K)]欄において、作成した秘密鍵を指定して、画面下部の[OK]をクリックして、設定情報を保存する

データのアップ/ダウンロード－ WinSCPを使う場合 (3/7) －③ インタラクティブノードへの接続情報を登録して、ログインする• 左のCategoryメニューより✓ ホスト名(H) ：localhost✓ ポート番号(R)：10022（SSHトンネルで設定したポート番号を指定）✓ ユーザ名(U) ：ABCIアカウント名を入力する• [ログイン]をクリックして、インタラクティブノードへ接続する
ホスト名、ポート番号、ユーザ名を入力後、ログインをクリックするデータのアップ/ダウンロード－ WinSCPを使う場合 (4/7) －もし「警告」が表示されたら• 初めてWinSCPでABCIに接続する場合に表示されます。
• 「更新」ボタンを選択します。
（お使いの環境によっては「Warning」画面が表示され、選択するボタンは「Update」を選択します。）

データのアップ/ダウンロード－ WinSCPを使う場合 (5/7) －④ ファイルをドラッグ＆ドロップするだけで、ファイルのアップロード・ダウンロードが可能
セッション名セッション名ドラッグ＆ドロップでファイルの転送可能【ウィンドウの左側】
利用者の端末のディレクトリ

インタラクティブノードへアップロード【ウィンドウの右側】
インタラクティブノード側のディレクトリ

インタラクティブノードからダウンロード• インタラクティブノードにログインできると、ローカル側・接続先のリモート側、両方のディレクトリが表示される。
左側：利用者端末のディレクトリ、右側：インタラクティブノードのディレクトリ
• ファイルをドラッグ＆ドロップするだけで、ファイルのアップロード・ダウンロードか可能データのアップロード－ WinSCPを使う場合 (6/7) －⑤ ファイルをドラッグ＆ドロップするだけで、ファイルのアップロードが可能• WinSCPでファイルをアップロードする前ファイル・データは何もない状態

アカウント名

端末側にある「sample.sh」をドラッグ＆ドロップする• ログインしたインタラクティブノードには、ファイルやデータは何もない状態• 左側：利用者端末のディレクトリを表示するエリアにあるファイルを、右側：インタラクティブノードのディレクトリを表示するエリアに、ドラッグ＆ドロップして、ファイルのアップロードを実行• WinSCPでファイルをアップロードした後転送したファイルがある状態• ファイル・データは何もなかったところにWinSCPで転送したファイル「sample.sh」がある

データのダウンロード－ WinSCPを使う場合 (7/7) －⑥ ファイルをドラッグ＆ドロップするだけで、ファイルのダウンロードが可能• データをダウンロードする前ダウンロードするファイルは無い状態

アカウント名インタラクティブノード側にある「download_data.dat」をドラッグ＆ドロップする• ダウンロードしたいファイルはローカル側のディレクトリにはない状態• 右側：インタラクティブノードのディレクトリにあるファイルを、左側：利用者端末のディレクトリを表示するエリアにドラッグ＆ドロップして、ファイルのダウンロードを実行• WinSCPでファイルをダウンロードした後転送したファイルがある状態• WinSCPで転送したファイル「download_data.dat」がローカル側の端末のディレクトリ内にある

ジョブ実行のサービス
ジョブの実行には、3種類のサービスから処理方法に応じた適切なサービスを選択する
ジョブ実行のサービスの種類① Spotサービス：ジョブ実行スクリプト作成し、ジョブスケジューラにバッチ処理依頼する② On-demandサービス ：ジョブスケジューラに計算ノードの確保を依頼し、計算ノードでプログラムを実行する③ Reservedサービス：事前に計算ノードの予約をジョブスケジューラに依頼するサービス

本説明では、① Spotサービスと、② On-demandサービスについてご紹介
ジョブの実行には、「利用する計算リソースの種類とその数量」、「自分が所属するABCIグループ名」を引数に使用
Spotサービスのコマンド例

qsub -l rt_G.small=1 –g gxx12345 ./sample.sh
リソーの種類

ルー名

実行

リト

参考： ABCI 2.0 User Guide ー ジョブサービスジョブ実行で使う計算リソース計算ノード(V)、計算ノード(A)に加え、メモリインテンシブノードの３種に多数のリソースメニューを用意⚫ 計算ノード(V)：GPUにNVIDIA V100を搭載した計算ノード、計算ノード(V)には５種類のメニューがある⚫ 計算ノード(A)：GPUにNVIDIA A100を搭載した計算ノード、計算ノード(A)には２種類のメニューがある⚫ メモリインテンシブノード：Intel Optaneを搭載した大容量のメモリを持つノード、２種類のメニューがある（注意：2023年10月にサービス提供終了予定）

それぞれのリソースに特徴があり、またメニューごとにCPU/メモリなどのスペックが異なり、同時に使えるノード数の制約などがある

参考： ABCI 2.0 User Guide ー ジョブ実行リソース

割り当てGPU数

メモリ (GiB)

ローカルストレージ (GB)

資源タイプ課金
係数

占有40

4360

1440

1.00

計算ノード(V)G.large

rt_G.large

ー 共有
GPU利用

20

4240

720

0.90

G.small

rt_G.small

ー 共有
GPU利用

5160

180

0.30

C.large

rt_C.large

ー 共有
CPUのみ利用

200120720

0.60

C.small

rt_C.small

ー 共有
CPUのみ利用5030

1800.20

資源タイプ

資源タイプ名

説明

割り当て物理CPUコア数

割り当てGPU数

メモリ (GiB)

ローカルストレージ (GB)

資源タイプ課金
係数

Full

rt_AF

占有

7284803440

3.00

AG.small

rt_AG.small

ー 共有
GPU利用

9160

3900.50

資源タイプ

資源タイプ名

説明

割り当て物理CPUコア数

割り当てGPU数

メモリ (GiB)

ローカルストレージ (GB)

資源タイプ課金係数

M.Largert_M.large

ー 共有
CPUのみ利用

8-

800

480

0.40

M.Small

rt_M.small

ー 共有
CPUのみ利用

4-

400

240

0.20

メモリ
インテンシ
ブノード

割り当て物理CPUコア数

計算ノード(A)

ジョブ実行で使う計算リソース
資源タイプ

資源タイプ名

Full

rt_F

説明ー

ー

参考： ABCI 2.0 User Guide ー 利用可能な資源タイプ

実行スクリプトの作成実行するプログラムのコマンドを記述したスクリプトを端末で作成して、ABCIへアップロードする
使用するシェルを指定
ジョブ実行のコマンドのオプションを「#$」のあとに指定実行するプログラムを記述
注意：Windowsの改行コードは「CRLF」、Linuxでは扱えず、変換が必要
ファイルを保存するときは、文字コードは「UTF-8」で保存作成・保存したスクリプトファイルをABCIへアップロードする

参考： ABCI 2.0 User Guide ー ジョブ実行オプション

ジョブの実行― Spotサービス：スクリプトの作成―
作成したスクリプトをABCIへアップロードして、改行コードを変更する[abci username@es1]$mkdir Sample
インタラク [abci username@es1]$cd Sample
ティブノード[abci username@es1 Sample]

ジョブ実行用に「Sample」ディレクトリを作成する

クライアントPC側

WinSCPまたはscpコマンド
で、作成した「Sample」ディレクトリにスクリプトをアップロードする

コマンド例

側

端末側にある「Sample_CRLF.sh」を作成した「Sample」ディレクトリへアップロードする
yourpc$ scp –P 10022 Sample_CRLF.sh aaa12345xx@localhost:./Smple/Sample_CRLF.sh

インタラク
ティブノード [abci username@es1 Sample] $nkf –Lu ./Sample_CRLF.sh > sample.sh側

nkfコマンドで改行コードを変更する

ジョブの実行― Spotサービス (文字コード・改行コード変更）―
文字コード・改行コードを変換と変換の確認もできる• 改行コードがCR+LFまたはCRの場合：→ 改行コードをLinux環境(LF)に変更し、sample.shで保存する

インタラク
ティブノード [abci username@es1 ~] $nkf -Lu ./Sample_CRLF.sh > sample.sh側• 文字コードがShift-JIS、改行コードがCR+LFになっている場合：→ 文字コードと改行コードをLinux環境(UTF-8, LF)に一括変換するインタラク
ティブノード [abci username@es1 ~] $nkf -wd Sample_SJIS-CRLE.sh > sample.sh側• 文字コードと改行コードを確認したい場合
インタラク
ティブノード側[abci username@es1 ~] $ nkf - -guess sample.shsample.sh: UTF-8 (LF)

ジョブの実行― Spotサービス ―バッチジョブの実行$qsub –l リソースタイプ = 数量 –g グループ名 実行スクリプトのパス
コマンド例
インタラクティブ
ノード側[abci username@es1 Sample] $cat sample.sh#使用するシェルを指定します#!/bin/sh
実行スクリプトの確認#ジョブスケジューラのオプションを指定します#$-cwd#$-j y#実行するプログラムを指定します。
datehostnameecho "Hello, world"
実行スクリプトに実行権を付ける[abci username@es1 Sample] $chmod u+x ./sample.sh[abci username@es1 Sample] $ls –l実行権”x”を確認-rwxr--r-- 1 username usergroup 231 Jan 1 12:00 sample.sh[abci username@es1 Sample] $qsub –l rt_G.small=1 –g gaa12345 ./sample.shYour job 12345678 (“sample.sh”) has been submiitted

リソースタイプを指定 所属グループ名を指定

実行したジョブの結果を確認― Spotサービス ―ジョブ終了後に出力されたファイルに実行結果がしるされれている
コマンド例
インタラクティブ
ノード側[abci username@es1 Sample] $ls -l-rwxr--r– 1 username usergroup 231 Jan1 12:00 sample.sh-rw-r--r– 1 username usergroup 59 Jan 1 12:00 sample.sh.o12345678[abci username@es1 Sample] $[abci username@es1 Sample] $cat sample.sh.o12345678
Sun Jan 1 12:00:00 JST 2023
g0009.abci.local
計算ノードで実行した結果
Hello, world[abci username@es1 Sample] $ジョブの標準エラー出力ファイル

ジョブの実行― On-demandサービス ―インタラクティブジョブの実行$qrsh –l リソースタイプ = 数量 –g グループ名
コマンド例
インタラクティブ
ノード側[abci username@es1] $qrsh –l rt_G.small=1 –g gaa12345[abci username@g0009.abci.ai] $リソースタイプと所属グループを指定[abci username@g0009.abci.ai] $uname -n
g0009.abci.local
計算ノードにログインしている状態[abci username@g0009.abci.ai] $cd Sample[abci username@g0009.abci.ai Sample] $ls -l-rwxr--r-- 1 username usergroup 231 Jan 1 12:00 sample.sh[abci username@g0009.abci.ai Sample] $./sample.sh
Sun Jan 1 12:00:00 JST 2023
g0009.abci.local
計算ノードで実行した結果
Hello, world[abci username@g0009.abci.ai Sample] $参考： ABCI 2.0 User Guide ーインタラクティブジョブ

ジョブの実行状態の確認
コマンド書式

オプションコードコマンド例
バッチジョブの場合-r-j$qstat –(オプションコード)

ジョブのリソース情報を表示します
ジョブに関する追加情報を表示します[abci username@es1] $qstat
job-IDprior
nameuserstate submit/start atqueuejclass slots ja-task-ID----------------------------------------------------------------------------------------------------------------------114535 0.25586 sample.sh aaa12345xx r
01/01/2023 12:00:00 gpu@g0016
10

コマンド例
[abci username@g0009 ] $qstat
インタラクティブジョブ job-ID
prior
nameuserの場合

state submit/start atqueuejclass slots ja-task-ID----------------------------------------------------------------------------------------------------------------------114535 0.25586 QRLOGIN aaa12345xx r
01/01/2023 12:00:00 gpu@g0016
10

参考： ABCI 2.0 User Guide ー バッチジョブの状態の確認

ジョブの実行の流れ― まとめ ―
ABCIでジョブの実行は実はシンプル。是非試してみましょう。
① スクリプトファイルの作成② スクリプトファイルのアップロード $scp -P 10022 ローカルのファイル名 aaa12345xx@localhost:./###/リモートの転送先ファイル名③ 文字コード・改行コードの変更

実行権の付与④ ジョブの実行
オプションでリソースタイプとグループ名を指定[abci username@es1] $nkf –Lu ./Sample_CFLR.sh > sample.sh[abci username@es1] $chmod u+x ./sample.sh[abci username@es1] $qsub –l rt_G.small=1 –g gaa12345 ./sample.sh[abci username@es1] $qrsh –l rt_G.small=1 –g gaa12345

参考リンク• ABCI公式サイト (https://abci.ai/ja/)• ABCI 2.0 User Guide (https://docs.abci.ai/ja/)
ABCI 2.0の技術的詳細や利用方法について説明。

• WinSCP (https://winscp.net)

まとめhttps://abci.ai/