まるまろぐ

本ブログに記載の情報は全て飼い犬が書いたものであり、その内容に誤りや欠陥があった場合にも、私は一切の責任を負いません。

TSUBAME3.0の使い方

はじめに

この記事はもともと岡崎研究室の新メンバーに向けて内部Wikiに書いたものを少し編集し公開したものです。なのでグループやグループディスクが既に存在している前提で書かれていますが、所属可能なTSUBAMEグループがない場合は新しくグループを作る必要があります。また、この記事は初心者向けかつ研究室のメンバー向けに情報を絞って書かれています。より多くの機能を知るにはこの記事の最後に挙げられているような一次情報に当たってください。

アカウントの取得

まだTSUBAMEアカウントを持ってない場合は取得する必要があります。東工大の学生または職員であれば東工大ポータルにログインし、「TSUBAME ポータル」リンクから申請してください。 - 学生や職員でない場合はここを参考に取得してください。

なお、課金するにはグループに追加されている必要があります。アカウントの取得後、研究室などのグループに追加してもらってください。

.ssh/configの設定

自分が利用するMacbook等のクライアントの~/.ssh/configに以下の設定をしておきましょう(下二行は設定しないと接続が切れる)。

Host tsubame
    User {your TokyoTech ID or TSUBAME ID}
    HostName login.t3.gsic.titech.ac.jp
    ServerAliveInterval 120
    ServerAliveCountMax 30

ログイン

  1. TSUBAME ポータルにログインし、sshするために公開鍵を登録する
  2. ssh tsubameでログイン

これでログインノードにログインできました。

TSUBAMEの環境

ここでは、TSUBAMEのストレージとソフトウェアについて述べます。

ストレージ

ホームディレクトリの容量は25GBしかないので、グループディスクと呼ばれるストレージをグループごとに購入して使うことになります。グループのストレージへのパスを誰かに聞く必要があるでしょう。 基本的には全てこのディレクトリ下に保存したほうがいいと思います。

ソフトウェア

TSUBAMEでは、moduleコマンドを使用することでコンパイラやアプリケーションの切り替えを行うことができます。 使えるmoduleを確認してみましょう。

module avail

python3をロードしてみましょう。

python --version
module load python/3.6.5
python --version

他には、module listで現在利用しているmoduleを確認したり、module unload {module name}でunloadしたり、module purgeで初期化することなどができます。

ジョブ実行

ログインノードでは重い計算はできないので、計算ノードで行う必要があります。

計算ノードでジョブを実行する方法には - インタラクティブ実行(qrsh) - バッチ実行(qsub) - 通常実行 - 予約実行

があります。また、計算ノードには資源タイプという概念があり目的に合わせて選ぶことになりますが、ざっくり言うと - GPUを1つ使いたい:q_node - GPUを4つ使いたい:f_node - CPUだけ使う:q_core - メモリをたくさん使う:f_node

あたりを選ぶといいです。詳しくは講習会TSUBAME利用法スライドが参考になります。

インタラクティブ実行

普段のCLIのように対話的にプログラムを実行するには、qrshコマンドを使います。

qrsh -g {your-group-name} -l q_core=1 -l h_rt=00:30:00 -p -4  

上記で使われているオプションを以下に示します。

オプション 説明
-g TSUBAME3グループ名を指定します。指定しないとお試し実行になります。
-l [資源タイプ名]=[個数] 資源タイプおよびその個数を指定します。
-l h_rt=[時間] 時間を指定します。
-p [-5 | -4 | -3] ジョブの実行優先度を指定します。 -3,-4を指定すると通常よりも高い課金係数が適用されます。-4は-5の2倍、-3は-5の4倍お金がかかります。

終了するときは普通にexitしてください。

バッチ実行

バッチ実行では、ジョブスクリプトを記述してそれをqsubコマンドによって投入します。

ジョブスクリプトの作成

以下にジョブスクリプトの例を示します。なお、qsubコマンドのオプションはqrshと同じですが、コマンドラインで指定することも、以下のようにスクリプトファイルの最初のコメントに書いておくこともできます。ただし-gオプションだけはコマンドの引数として指定する必要があります。

#!/bin/sh

# カレントディレクトリでジョブを実行する場合に指定
#$ -cwd
# ノードのタイプと数を指定
#$ -l f_node=1
# 実行時間を指定
#$ -l h_rt=0:10:00
# ジョブ名(指定しない場合はスクリプトファイル名になる)
#$ -N test
# 標準出力ファイル名(指定しないとジョブの名前とIDを元に生成される)
#$ -o test_job.out
# 標準エラー出力ファイル名(同上)
#$ -e test_job.err
# メールを送信する条件を指定(a:中止時、b:開始時、e:終了時)
#$ -m abe
# 送信先メールアドレス
#$ -M example@example.com


# Moduleコマンドの初期化(必ず行うこと)
. /etc/profile.d/modules.sh
# CUDA&cuDNN環境の読込
module load cuda/9.0.176
module load cudnn/7.3

# プログラムの実行
python -c 'import this'

オプションについて詳しくはこちら

スクリプトの実行

上記のようなスクリプトをjob.shというファイル名で保存したとすると、ジョブは次のように実行できます。

qsub -g {your-group-name} -p -4 job.sh

ジョブの確認や削除

  • 確認:qstat
  • 削除:qdel {job-ID}

予約実行について

上記のような通常実行では1つのジョブに最大24時間までしか指定することができません。それ以上使いたい場合には、予約実行をする必要があります。予約はTSUBAMEポータルから行い、与えられた予約IDを-arオプションで指定してqsubすることで実行できますが、ここでは詳しく触れません。利用の手引きを参考にしてください。

この記事で説明されていないこと

  • アレイ実行
  • 依存実行
  • 並列化(複数ノードの使用)

Tips

スペック

TSUBAME

  • ノード数:540
  • GPU:Tesla P100 (NVlink)

詳しくは

各ノード

資源タイプ名 CPUコア数 メモリ (GB) GPU
f_node 28 240 4
q_node 7 60 1
q_core 4 30 0

詳しくは https://helpdesk.t3.gsic.titech.ac.jp/manuals/handbook.ja/jobs/

利用料金

ポイント制。東工大の学内の人間が使う場合利用料金が75%オフになる。 - 購入代金:720,000ポイント / 5,000円 (学内の場合)

消費ポイントの計算式は以下の通り。

消費ポイント=
利用ノード数×資源タイプ係数×優先度係数×(0.7× 実際の実行時間(秒) + 0.1×指定した実行時間(秒))
  • 例:f_nodeを1つ24時間指定した上で24時間優先度-4で使った場合、138,240ポイント消費する(金額に換算すると960円)

その他

  • ログインノードはlogin0とlogin1のふたつあり、sshすると自動的にどちらかに振り分けられる(通常は気にする必要はない)

ドキュメント