2億ユーロのスーパーコンピューターでコードを実行するのに実際に必要なこと
(towardsdatascience.com)- バルセロナ・カタルーニャ工科大学の MareNostrum V は、世界トップ15のスーパーコンピューターの1つであり、8,000ノードにまたがる分散計算を行う、2億ユーロ規模の公共研究インフラ
- 単一の高性能コンピューターではなく、数千台の独立したコンピューターが InfiniBand NDR200 ファットツリー・トポロジ で接続された分散システムで、どのノード同士でも同一の最小遅延で通信可能
- ジョブの投入は SLURM ワークロードマネージャー を通じて行われ、リソース要求・時間制限・プロジェクト予算を明記したバッチスクリプトでスケジューラーにジョブをキューイング
- 外部インターネット接続が遮断された エアギャップ環境 で運用されるため、必要なライブラリやデータセットを事前に準備する必要があり、計算よりも結果の取り出しがボトルネックになることもある
- 研究者に無料で提供される公共資源であり、スペインの機関は RES を通じて、欧州全域では EuroHPC Joint Undertaking の定期公募を通じてアクセス可能
アーキテクチャ: ネットワークこそがコンピューター
- HPC における最大の誤解は、1台の超強力なコンピューターを借りるものだという認識だが、実際には数千台の独立したコンピューターにジョブを 分散投入 する構造
- 分散計算で GPU がデータ転送待ちで遊休状態になる問題を防ぐため、MareNostrum V は InfiniBand NDR200 ファブリックを ファットツリー(fat-tree) トポロジ で構成
- 一般的なネットワークでは、複数のコンピューターが同じスイッチを共有すると帯域幅のボトルネックが発生
- ファットツリー・トポロジでは、ネットワーク階層の上位に行くほどリンク帯域幅を増やし、ノンブロッキング(non-blocking)帯域幅 を保証
- 8,000ノードのうち、どのノード同士でも同一の最小遅延で通信可能
コンピューティング・パーティション構成
- 汎用パーティション(GPP): 高度に並列化された CPU ジョブ向けに設計され、6,408ノードにそれぞれ112個の Intel Sapphire Rapids コアを搭載、合計ピーク性能は 45.9 PFlops
- アクセラレーテッド・パーティション(ACC): AI 学習、分子動力学などの特殊用途向けに設計され、1,120ノードにそれぞれ4基の NVIDIA H100 SXM GPU を搭載、ピーク性能は 260 PFlops
- 単体の H100 の小売価格を約25,000ドルとすると、GPU だけで1億1,000万ドルを超える
- ログインノード(Login Nodes): SSH 接続時の最初の入口であり、ファイル移動・コードのコンパイル・ジョブスクリプトの投入などの軽量作業専用で、計算用ではない
量子インフラ
- MareNostrum 5 には、スペイン初の 量子コンピューター が物理的・論理的に統合されている
- デジタルゲート型量子システムと、超伝導キュービットベースの量子アニーラー MareNostrum-Ona を含む
- 量子処理装置(QPU)はクラシックなスーパーコンピューターを置き換えるのではなく、特化型アクセラレーター として機能する
- H100 GPU でも処理が難しい最適化問題や量子化学シミュレーションを量子ハードウェアにオフロードし、大規模ハイブリッド・クラシック量子コンピューティング のパワーハウスを実現
エアギャップ、クォータ、HPC 運用の現実
- エアギャップ(Airgap): 外部から SSH で接続は可能だが、コンピュートノードは外部インターネットに接続できない
pip install,wget, 外部 HuggingFace リポジトリへの接続などは不可能- スクリプトに必要なものはすべて事前にダウンロード・コンパイルし、ストレージディレクトリに用意しておく必要がある
- 管理者が
moduleシステムを通じて大半のライブラリやソフトウェアを提供
- データ移動: ログインノード経由で
scpまたはrsyncによりデータの入出力を行う- 実際の計算が非常に高速なため、完了した結果をローカルマシンへ取り出す工程が ボトルネック になることもある
- 制限とクォータ: プロジェクトごとに特定の CPU 時間予算 が割り当てられ、単一ユーザーの同時実行・待機ジョブ数にはハードリミットがある
- すべてのジョブに厳格な wall-time 制限 を指定する必要がある
- 要求時間を1秒でも超えると、スケジューラーがプロセスを即座に終了する
- ロギング: ジョブ投入後はライブのターミナル出力はなく、すべての
stdoutとstderrはログファイル(例:sim_12345.out,sim_12345.err)に自動リダイレクトされる- ジョブ完了またはクラッシュ後にテキストファイルを確認して、結果の確認やデバッグを行う
squeueまたはtail -fで投入済みジョブの状態を監視可能
SLURM ワークロードマネージャー
- 研究用アロケーションの承認後に SSH ログインすると、完全に普通の Linux ターミナルプロンプト が表示される
- 数千人の研究者が同時に使うため、ターミナルで直接重いスクリプトを実行するとログインノードがダウンし、システム管理者から警告メールが届く
- SLURM(Simple Linux Utility for Resource Management): オープンソースのジョブスケジューリングソフトウェアで、bash スクリプトに必要なハードウェア・ソフトウェア環境・実行コードを記述するとキューに入り、ハードウェア確保後に実行され、その後ノードが解放される
- 主な
#SBATCHディレクティブ:--nodes: 必要な物理マシン数--ntasks: 生成する MPI プロセス(タスク)の総数で、SLURM がノード間への分配を処理--time: 厳格な wall-clock 時間制限で、超過すると即時終了--account: CPU 時間が差し引かれるプロジェクト ID--qos: Quality of Service または特定のキューを指定(例: debug キューは高速アクセスを提供する代わりに短い実行時間制限がある)
実践例: OpenFOAM スイープのオーケストレーション
- ML サロゲートモデルで空力ダウンフォースを予測するため、50種類の異なる 3D メッシュに対して50件の高精度 CFD(数値流体力学)シミュレーション を実行する必要がある
- 汎用パーティションで単一の OpenFOAM CFD ケースに対する SLURM ジョブスクリプトの例:
--nodes=1,--ntasks=6,--time=00:30:00などでリソースを指定module load OpenFOAM/11-foss-2023aで環境をロードsrun --mpi=pmixで surfaceFeatureExtract, blockMesh, decomposePar, snappyHexMesh, potentialFoam, simpleFoam, reconstructPar を順次実行
- 50件を手動で投入する代わりに、SLURM の依存関係(dependency) を使って各ジョブを前のジョブの後ろにチェーン
sbatch --dependency=afterany:$PREV_JOB_IDで50件のジョブを数秒でキュー登録- 翌朝までに50件の空力評価の処理とロギングが完了し、ML 学習用テンソルへの変換準備も完了
並列化の限界: アムダールの法則
- 1ノードあたり112コアあるのに CFD シミュレーションに6タスクしか要求しなかった理由は、アムダールの法則 のため
- あらゆるプログラムには並列化できない 直列部分(serial fraction) が存在し、理論上の高速化はこの直列比率によって厳しく制限される
- 式: S = 1 / ((1−p) + p/N)。S は全体の高速化、p は並列化可能な比率、N はプロセッサコア数
- コードの 5% が直列であるだけでも、MareNostrum V の全コアを使っても理論上の最大高速化は 20倍
- あまりに多くのコアへタスクを分割すると、InfiniBand ネットワーク経由の 通信オーバーヘッド が増大
- コア間の境界条件伝達に実計算より多くの時間を費やすようになると、ハードウェア追加がかえって速度低下を招く
- 小規模システム(N=100)のシミュレーションでは16スレッド以降で実行時間が増加し、大規模(N=10k+)でのみハードウェアが完全に生産的になる
- スーパーコンピューター向けコードの作成は、計算対通信比 を管理する訓練でもある
アクセス方法
- ハードウェアコストにもかかわらず、MareNostrum V へのアクセスは研究者に 無料 で提供され、計算時間は公的資金で支えられる科学資源として扱われる
- スペインの機関に所属する研究者は スペイン・スーパーコンピューティング・ネットワーク(RES) を通じて申請可能
- 欧州全域の研究者は EuroHPC Joint Undertaking の定期的なアクセス公募を通じて申請可能
- "Development Access" トラックは、コード移植や ML モデルのベンチマークプロジェクト向けに設計されており、データサイエンティストにとって利用しやすい
まだコメントはありません。