このノートは、講師が受講者に説明する際に:
- どこを強調すると理解が深まるか
- どこでつまずきやすいか
- どの順番で説明すると自然か
を整理するためのメモです。
このハンズオンで受講者に持ち帰ってほしい理解は、次の3点です。
「実行環境を揃える」
「計算資源を管理し、計算ノードで実行する」
「同じ処理を大量データに対して繰り返し実行する」
この3つが腑に落ちると、受講者はかなり先まで応用できます。
受講者はかなり高い確率でここに引っかかります。
python analyze.py ...で良さそうに見える- なぜわざわざ
singularity execをつけるのか分からない
「Python を動かしたい」のではなく、「同じ環境で Python を動かしたい」
と説明すると伝わりやすいです。
これも非常によくある疑問です。
- その場でコマンドを打てば動くのでは?
- なぜ
qsubを使うのか?
「ログインノードは作業場所、計算は計算ノードでやる」
という役割分担を明示すると理解されやすいです。
補足として:
「共有計算機なので、重い処理を好き勝手に直接回さないため」
も非常に重要です。
ここも受講者はピンと来ないことがあります。
「同じ解析を100個のファイルに回すのが HPC の典型」
という現実の使い方を先に示してから、
#PBS -J 1-100を見せると理解されやすいです。
これは非常に大事です。
ただライブラリを入れるだけのファイルではなく、
「どうやってこの環境を再現するかを書いたもの」
だと強調してください。
受講者は複数のセクションがあると混乱しやすいので、
最初はまずこれだけ理解できれば十分です。
「コンテナに何を入れるかを書く場所」
特に以下の2つは説明価値があります。
- ログが見やすくなる
- PBS 実行時に便利
- GUI なし環境でも matplotlib が安定する
これは「HPCっぽい工夫」として印象に残りやすいです。
これは実務上かなり重要です。
- 再現性が壊れる
- どの版で動かしたか分からなくなる
「昨日の成功環境を自分で消さない」
という表現が分かりやすいです。
ここは単なる「ファイル保存の習慣」ではなく、
「将来の自分や他人のための設計書」
という意味づけをすると理解が深まります。
これは研究用途ではかなり大切です。
受講者は PBS スクリプトを「使い捨てシェル」と見がちですが、
実際には:
- 何CPU使ったか
- 何分の計算か
- どういう条件で回したか
を含む、重要な情報です。
「ジョブスクリプトも再現性の一部」
以下の問いを途中で挟むと、受講者の理解が深まりやすいです。
「この環境を他の人に渡す時、何を渡せばよいでしょう?」
.sif- 必要なら
.def - PBS スクリプト
- 入力データや README
「CPU を 8 にしたら、必ず 8 倍速くなるでしょうか?」
- ならない
- プログラム側の並列化も必要
「なぜログインノードで長時間処理をしてはいけないのでしょう?」
- 共有環境だから
- 他の利用者に影響するから
- 計算は計算ノードでやるべきだから
環境によっては apptainer です。
apptainer --versionを案内してください。
qstat- ジョブID
.o/.eログcd $PBS_O_WORKDIRの有無
MPLBACKEND=Agg- 出力先ディレクトリの存在
- 実行権限 / 書き込み権限
make_sample_data.pyを実行したか- 実行ディレクトリが正しいか
cd $PBS_O_WORKDIRしているか
最後に、講師から次のようにまとめるとかなり綺麗に締まります。
Singularity / Apptainer は「何を使って動かすか」を揃える道具です。
PBS は「どこで・どれだけ資源を使って動かすか」を管理する道具です。実際の HPC 利用では、この2つを組み合わせて、
同じ解析を大量データに対して安全かつ再現可能に回すことがよく行われます。
この教材の次に自然につながるテーマは以下です。
ncpusmemwalltime
multiprocessing- 並列化と PBS の役割分担
- 並列計算機らしさを一段深める
- CUDA / PyTorch / TensorFlow を PBS + Singularity で回す
この教材のゴールは「コマンドを覚えること」ではなく、「役割分担を理解すること」です。