Skip to content

Latest commit

 

History

History
321 lines (196 loc) · 6.99 KB

File metadata and controls

321 lines (196 loc) · 6.99 KB

講師用ノート:Singularity + PBS ハンズオン補足解説

このノートの目的

このノートは、講師が受講者に説明する際に:

  • どこを強調すると理解が深まるか
  • どこでつまずきやすいか
  • どの順番で説明すると自然か

を整理するためのメモです。


1. この教材で一番伝えたい本質

このハンズオンで受講者に持ち帰ってほしい理解は、次の3点です。


1. Singularity / Apptainer の役割

「実行環境を揃える」


2. PBS の役割

「計算資源を管理し、計算ノードで実行する」


3. HPC でよくある実務

「同じ処理を大量データに対して繰り返し実行する」


この3つが腑に落ちると、受講者はかなり先まで応用できます。


2. 初学者が一番つまずきやすいポイント


2-1. 「なぜ Python を直接動かさないのか?」

受講者はかなり高い確率でここに引っかかります。

受講者の感覚

  • python analyze.py ... で良さそうに見える
  • なぜわざわざ singularity exec をつけるのか分からない

講師の説明ポイント

「Python を動かしたい」のではなく、「同じ環境で Python を動かしたい」

と説明すると伝わりやすいです。


2-2. 「なぜ PBS を使うのか?」

これも非常によくある疑問です。

受講者の感覚

  • その場でコマンドを打てば動くのでは?
  • なぜ qsub を使うのか?

講師の説明ポイント

「ログインノードは作業場所、計算は計算ノードでやる」

という役割分担を明示すると理解されやすいです。

補足として:

「共有計算機なので、重い処理を好き勝手に直接回さないため」

も非常に重要です。


2-3. 「Array Job の何が嬉しいのか?」

ここも受講者はピンと来ないことがあります。

講師の説明ポイント

「同じ解析を100個のファイルに回すのが HPC の典型」

という現実の使い方を先に示してから、

#PBS -J 1-100

を見せると理解されやすいです。


3. .def 補足教材で強調したいポイント


3-1. .def は「環境構築手順のコード化」

これは非常に大事です。

ただライブラリを入れるだけのファイルではなく、

「どうやってこの環境を再現するかを書いたもの」

だと強調してください。


3-2. %post が一番重要

受講者は複数のセクションがあると混乱しやすいので、
最初はまずこれだけ理解できれば十分です。

一言で

「コンテナに何を入れるかを書く場所」


3-3. %environment は HPC らしい実践ポイント

特に以下の2つは説明価値があります。

PYTHONUNBUFFERED=1

  • ログが見やすくなる
  • PBS 実行時に便利

MPLBACKEND=Agg

  • GUI なし環境でも matplotlib が安定する

これは「HPCっぽい工夫」として印象に残りやすいです。


4. 運用補足教材で強調したいポイント


4-1. .sif を毎回上書きしない

これは実務上かなり重要です。

なぜか?

  • 再現性が壊れる
  • どの版で動かしたか分からなくなる

受講者向けに言うなら

「昨日の成功環境を自分で消さない」

という表現が分かりやすいです。


4-2. .def を残す理由

ここは単なる「ファイル保存の習慣」ではなく、

「将来の自分や他人のための設計書」

という意味づけをすると理解が深まります。


4-3. PBS スクリプトも実験条件の一部

これは研究用途ではかなり大切です。

受講者は PBS スクリプトを「使い捨てシェル」と見がちですが、
実際には:

  • 何CPU使ったか
  • 何分の計算か
  • どういう条件で回したか

を含む、重要な情報です。

一言で

「ジョブスクリプトも再現性の一部」


5. 講義中に入れると理解が深まる問いかけ

以下の問いを途中で挟むと、受講者の理解が深まりやすいです。


問い1

「この環境を他の人に渡す時、何を渡せばよいでしょう?」

期待する答え

  • .sif
  • 必要なら .def
  • PBS スクリプト
  • 入力データや README

問い2

「CPU を 8 にしたら、必ず 8 倍速くなるでしょうか?」

期待する答え

  • ならない
  • プログラム側の並列化も必要

問い3

「なぜログインノードで長時間処理をしてはいけないのでしょう?」

期待する答え

  • 共有環境だから
  • 他の利用者に影響するから
  • 計算は計算ノードでやるべきだから

6. よくあるトラブルと講師の返し方


トラブル1

singularity: command not found

対応

環境によっては apptainer です。

apptainer --version

を案内してください。


トラブル2

「PBS ジョブを投げたけど何も起きない」

確認ポイント

  • qstat
  • ジョブID
  • .o / .e ログ
  • cd $PBS_O_WORKDIR の有無

トラブル3

「matplotlib で画像が出ない」

確認ポイント

  • MPLBACKEND=Agg
  • 出力先ディレクトリの存在
  • 実行権限 / 書き込み権限

トラブル4

sample_data/data_03.csv が見つからない」

確認ポイント

  • make_sample_data.py を実行したか
  • 実行ディレクトリが正しいか
  • cd $PBS_O_WORKDIR しているか

7. 受講者の理解を一段上げる締めの言葉

最後に、講師から次のようにまとめるとかなり綺麗に締まります。


まとめ例

Singularity / Apptainer は「何を使って動かすか」を揃える道具です。
PBS は「どこで・どれだけ資源を使って動かすか」を管理する道具です。

実際の HPC 利用では、この2つを組み合わせて、
同じ解析を大量データに対して安全かつ再現可能に回すことがよく行われます。


8. 次回につなげやすい発展テーマ

この教材の次に自然につながるテーマは以下です。


発展1

PBS のリソース指定を詳しく学ぶ

  • ncpus
  • mem
  • walltime

発展2

Python 側の並列化

  • multiprocessing
  • 並列化と PBS の役割分担

発展3

MPI と Singularity

  • 並列計算機らしさを一段深める

発展4

GPU ジョブ

  • CUDA / PyTorch / TensorFlow を PBS + Singularity で回す

一言まとめ(講師向け)

この教材のゴールは「コマンドを覚えること」ではなく、「役割分担を理解すること」です。