「クラウド HPC のためのベストプラクティス」ワークショップに参加してきた #reinvnet #CMP305

2022.12.01

AWS re:Invent 2022 で行われた Workshop「Best practices for high performance computing in the cloud」のレポートです。

ハンズオンの内容が公開されていないこともあり、ハンズオン中に出くわしたトラブルとその時の会場の様子を多めにお届けします。

概要

Join this workshop to gain a solid skills foundation to run common high performance computing (HPC) workloads using cloud technologies. Start with a primer on modern cloud foundations and how they map to common HPC concepts. Then, get a deeper view into how to use cloud-native technologies, such as object storage, in HPC workflows. Get hands-on experience setting up your own cluster in the cloud and running a sample application. You must bring your laptop to participate.

Workshop

HPC Solution Architect の Maxime Hugues さんからハンズオンの前に基本的なインフラの説明から始まりました。

クラウド HPC の説明

  • HPC インスタンスと、コンピュートリソースの説明
  • VPC, Subenets 基本的なネットワーク要素の説明
  • 必要数のコンピュートリソースを管理できる Auto Scaling group の説明

ジョブをサブミットした後の Auto Scaling group の動きの図

需要に応じてスケールアウトし、需要がなくなったらスケールインする

※ scalling up/down と言っていたけどこの場合は out/in では思いました

ハンズオンパートで ParallelCluster を使う3つの理由

  • クラスターの管理が容易
    • 1つの設定ファイルでインスタンス数、キュー数を設定できる
    • ジョブを実行すればオートスケールする
  • S3, CloudWatch などの多くのサービスとシームレスに統合できる

Handson

ハンズオン開始

Workshop 用に環境セットアップ済みのアカウントを利用してハンズオンを進めます

AWS ParallelCluster のバージョンは現時点で最新の 3.3.0 を利用したハンズオンです。Web 公開されている HPC ワークショップは 3.1.x 代だった記憶があるので re:Invent 書き下ろされたものかもしれません。ひとまず世に出回っているハンズオンではなさそうです。

クラスター作成

AWS ParallelCluster Manager からクラスターを作成しました。Cloud 9 を利用しないパターンのハンズオンははじめてです。 肝心の ParallelCluster Manager はデプロイ済みかつ、初期ユーザー登録も終わっておりログインして、Web UI でクラスターのコンフィグ作成、クラスターの作成まで実行しました。クラスターのコンフィグ作成はウィザードではじめ、VPC と、サブネットも作成済みだったので選択するだけで終わりました。

  • NICE DCV 有効
  • セッションマネージャー 有効

ハンズオンで作成したクラスターのコンフィグを参考に載せておきます。

HeadNode:
  InstanceType: c5.xlarge
  Networking:
    SubnetId: subnet-0e96964f0765dc925
  LocalStorage:
    RootVolume:
      VolumeType: gp3
  Iam:
    AdditionalIamPolicies:
      - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
  Dcv:
    Enabled: true
Scheduling:
  Scheduler: slurm
  SlurmQueues:
    - Name: queue0
      ComputeResources:
        - Name: queue0-c5xlarge
          MinCount: 0
          MaxCount: 10
          InstanceType: c5.xlarge
      Networking:
        SubnetIds:
          - subnet-0e96964f0765dc925
      ComputeSettings:
        LocalStorage:
          RootVolume:
            VolumeType: gp3
Region: us-east-2
Image:
  Os: alinux2

クラスター環境でテストジョブのサブミット

AWS ParallelCluster Manager からシェル接続(セッションマネージャー)し、テストジョブを作成してサブミットしてコンピュートノードの起動と、テストジョブの実行結果を確認しました。

  • IntelMPI を利用した Hello World スクリプトを作成(コピペ)
  • 4ノード指定でジョブをサブミットして、4ノードで実行されたことを確認

実行結果

$ mpirun -n 4 ./mpi_hello_world

Hello World from Step 1 on Node 0, (ip-172-31-0-188)
Hello World from Step 1 on Node 1, (ip-172-31-0-188)
Hello World from Step 1 on Node 2, (ip-172-31-0-188)
Hello World from Step 1 on Node 3, (ip-172-31-0-188)
Hello World from Step 2 on Node 2, (ip-172-31-0-188)
Hello World from Step 2 on Node 0, (ip-172-31-0-188)
Hello World from Step 2 on Node 1, (ip-172-31-0-188)
Hello World from Step 2 on Node 3, (ip-172-31-0-188)
Hello World from Step 3 on Node 2, (ip-172-31-0-188)
Hello World from Step 3 on Node 0, (ip-172-31-0-188)
Hello World from Step 3 on Node 1, (ip-172-31-0-188)
Hello World from Step 3 on Node 3, (ip-172-31-0-188)
Hello World from Step 4 on Node 2, (ip-172-31-0-188)
Hello World from Step 4 on Node 0, (ip-172-31-0-188)
Hello World from Step 4 on Node 1, (ip-172-31-0-188)
Hello World from Step 4 on Node 3, (ip-172-31-0-188)

FSx for Lustre をマウント

デプロイ済みのクラスターに後付けで FSx for Lustre を組み込みます。

外部ストレージサービス(ファイルシステム)を後付でクラスターに組み込む機能は v3.3.0 で追加されたものなので間違いなく新しいハンズオンでした。そして、v3.3.0 のリリース後、にわかに信じがたかったこのアップデートを試す機会が訪れたました。

ワークショップ参加者にアンケートをとって、オンプレミスで Lustre 使っている方を手をあげてというのがありました。50名くらい参加できる会場だったと思うのですが、3名しかいませんでした。Lustre ファイルシステムの運用は大変そうですしね。

  • Cloud 9 がデプロイ済みで用意されていたのでpclusterコマンドをインストール
  • AWS CLI で FSx for Lustre を作成
  • クラスターのコンフィグは S3 に上がっているものをダウロード
  • クラスターのコンフィグに FSx for Lustre の設定を追加
    • ハンズオンの設定内容に誤りがありドキュメント参照して解消
    • この誤りはすでに話題にあがっていたようでディスプレイに探したドキュメントと同じものが表示されていた
    • リスニングに 100% 集中しないと聞き取れないのでハンズオンしながらガヤガヤした内容を把握できず...
  • GROMACS をヘッドノードにインストール
    • GROMACS は分子動力学計算する OSS
    • インストール時に所定のフォルダにアクセス権がなく失敗したのでsudo chown ec2-user. /pathで解消しました
    • 後に隣の席の方が同じトラブルにあいます
    • 英語でヒアリングして切り分け手伝う自信がないので心のなかで「たぶん同じトラブルなんだけど...すまん」と思います
    • スタッフを呼んでどうしたらいいのかと確認されました
    • 再インストールしてくださいとのことで再インストールしたけど解消されませんでした
    • スッタフはなにが起きたのかわかないけどと前置きをした上でchownしていました
  • GROMACS 実行のジョブをサブミット
    • タンパク質の立方構造をシュミレートした(と思われる、専門知識がない)
  • PyMol をヘッドノードにインストール
    • PyMolは分子の可視化ツールの OSS
  • NICE DCV でヘッドノードに接続して PyMol でジョブの実行結果を可視化
    • AWS ParallelCluster Manager から NICE DCV 接続できないトラブルにあいます
    • 迎えの席の方も同じトラブルにあいスタッフへ確認されていました
    • 最初に確認したスタッフは原因がわからないので、なんとかさんが NICE DCV のエキスパートだから呼ばれます
    • NICE DCV エキスパートのなんとかさんが召喚されました
    • スタッフから NICE DCV のコネクションがクローズしてしまっているときどうしたらよのか確認します
    • 「わからない」と即答して笑って済むやさしい世界
    • 他のスタッフも集まってきます、登壇していた方もきたので HPC SA の方々だと思うのですが解決できませんでした
    • 終了時間も迫っていたので迎えの方も OK ということで終わります
    • 私も後は NICE DCV 接続して PyMol で可視化するだけだったので諦めて終わりました

最終的に確認できるはずだったタンパク質の立方構造のイメージ

ハンズオンは半数の方は完走できず時間を迎えました。

おわりに

クラスターのコンフィグ更新で外部のストレージサービスを組み込みを実際に試させたのは良かったです。 2時間の時間内にトラブルにも見舞われて完走できなかったので、一般向けにアレンジしてハンズオン資料を公開してもらいたいところです。 でも、ワークショップは現地でしかできないから価値があるような気もします。