AWS HPCはじめの一歩

HPC未経験のAWSエンジニア向けに、HPCプロジェクトで必要な基本情報をまとめました。HPCの概念、AWS上でコンポーネントがどのように提供されているのか、どう組み合わせればよいのか理解しましょう。
2020.07.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

クラウドHPCが熱いです。

オンプレで動作する高性能計算(ハイパフォーマンスコンピューティング/HPC)環境をクラウドに移行したり、オンプレではHPC環境を保持できなかった企業がクラウドでオンデマンドにHPCを利用する動きが活発になっており、パブリッククラウド各社もHPCのサービスを強化しています。

Hyperion Researchの調査 *1によると、2011年はクラウドで稼働するHPCは全体の11%だったのに対し、2018年は74%まで増え、AWSはクラウド利用の58%を占めています。

HPCの民主化により、HPCと無縁だったクラウドエンジニアも、HPCにふれる機会が増えています。

本記事では、そのようなAWSエンジニア向けに、AWS 上で HPC を構築するプロジェクトのとっかかりになるような情報をまとめました。

HPC(高性能計算) とは

Wikipedia から引用します。

高性能計算、ハイ・パフォーマンス・コンピューティング(high-performance computing、HPC)は、計算科学のために必要な数理からコンピュータシステム技術までに及ぶ総合的な学問分野である。

わかったような、わからないような説明ですが、HPC=スーパーコンピューター(以下「スパコン」)のようなものと理解しておけば大丈夫です。

最近、スパコンの性能ランキングで理化学研究所の「富岳」やプリファード・ネットワークスの「MN-3」の活躍が大きく取り上げられたアレです。

HPC環境を保持するお客様も、HPCで開発しているエンジニアも、HPCを構築・運用するエンジニアもスパコンとHPCを同義に扱っているフシがあるので、状況によってスパコンとHPCを使い分けましょう。

HPC の概念・用語を学ぼう

HPCはスパコンとみなせば良いとして、AWSエンジニアがスパコンに対してソリッドなバックグランドを持ち合わせているとは限りません。

  • ジョブスケジューラー
  • 並列ファイルシステム
  • MPI
  • SIMD

と言われても、ピンとこない人も多いかと思います。

そのような人は、まずはHPCの基本概念をさらいましょう。

その筋の研究者が 「一週間でなれる!スパコンプログラマ」 というチュートリアルを提供してくださっているので、ありがたく熟読しましょう。

一週間でなれる!スパコンプログラマ

また、AWS の観点から用語・サービス名をまとめたものもあります。

書籍だと、以下のものがよさそうです。

疎結合と密結合

HPC のワークロードは次の2種類に分類できます。

  • 疎結合 : 複数処理、または、並列処理方がいに強く作用しない(embarassingly parallelが代表例)
  • 密結合 : 並列処理を同時に実行し、各反復・ステップで相互に定期的に情報を交換

ワークロードの違いにより、要求される

  • ネットワーク
  • ストレージ
  • コンピュート
  • デプロイ

が大きく異なります。

ワークロードの特性をよく理解しましょう。

HPC と AWSビジネス

Hyperion Researchの調査 *2によると、2011年はクラウドで稼働するHPCは全体の11%だったのに対し、2018年は74%まで増え、AWSはクラウド利用の58%を占めています。

AWS はこの HPC 分野に積極的に投資しています。

re:invent 2019 では AWS グローバルインフラストラクチャおよびカスタマーサポート VP の Peter DeSantis が "Re:Inventing High Performance Computing Infrastructure" というテーマで HPC について熱弁していました。

このセッションは re:Invent 2019で最も再生数が多い動画の一つです。日本語字幕もついているので、ぜひ一度ご視聴ください。

また、スパコン専門誌『HPC Wire』の2019年度のHPCwire Readers' and Editors' Choice Awardsで合計6賞を受賞しました。

AWS's HPC leadership recognized by industry experts with HPCwire awards - All Things Distributed

AWS HPCの技術スタック

HPC の重要キーワードをマスターしたあとは、HPC 環境を AWS 上でどのように構築すればよいか学びます。

AWS で HPC に関連するサービスに以下のものがあります。

HPC を担当しない限り、接点がなさそうなサービスがズラッと並んでいます。

  • FSx for Lustre(並列ファイルシステムLustreのマネージドサービス。Amazon FSx for Windows File Server とは全くの別物)
  • AWS Batch(フルマネージドなバッチコンピューティング。cron などから実行するバッチとは全くの別物)
  • Elastic Fabric Adapter(100 Gbpsに対応したネットワークアダプタ)
  • Placement Group(ノードを密結合させて低レイテンシーを実現)

のような HPC 向けコンポーネントがあり、それらコンポーネントを組み合わせて AWS 上で HPC 環境をシュッと構築するのが AWS ParallelCluster です。

構築を AWS ParallelCluster に落とせると、構築コストを大幅に削減できるので、AWS ParallelCluster の評価は必ず行いましょう。

各コンポーネントは要件に応じて評価ください。

ドキュメントを読むだけでは実感がわかないので、次のステップとして、ワークショップで実際にサービス触ってみましょう。

次の記事で紹介しているワークショップは、情報が散在しているサービス・ツールを HPC の観点から横串して学べるようになっており、非常に有用です。

また、HPCのWell-Architected ホワイトペーパーもおすすめです。

ハイパフォーマンスコンピューティングレンズ AWS Well-Architected フレームワーク

最新は 2019年12月版ですが、2018年8月当時のものがブログにまとめられています。

アーキテクチャー例

アーキテクチャーはジョブスケジューラーによって大きく異なります。

オンプレに近い従来のクラスター環境

※ 画像は "High Performance Computing Lens - AWS Well-Architected Framework" から

  • ヘッドノード
  • コンピュートノード

からなるオンプレと同じような構成です。

AutoScaling Groupを使ってコンピュートノード をスケーリングする点を除き、AWSであることをあまり意識しません。

そのため、オンプレから比較的シームレスに lift and shift にクラウド移行できます。

クラウドネイティブなバッチ処理ベースのアーキテクチャ

※ 画像は "High Performance Computing Lens - AWS Well-Architected Framework" から

AWS のマネージドサービスを積極的に活用します。

アプリケーションをコンテナ化し、AWS Batch がジョブの管理とスケーリングを管理します(裏でECSが動作)。

最後に

HPC未経験のAWSエンジニア向けに、HPC プロジェクトのとっかかりになるような情報をまとめました。

最後におすすめの学習順を紹介します。

  1. HPC/スパコンのキーワードを抑える
  2. AWS ParallelClusterのBlackBeltを読む
  3. ワークショップで手を動かす
  4. Well-Architected HPC Lens を読む
  5. 実践!

HPCはエラスティックでスケーラブルなクラウドの醍醐味の一面を体験できるので、HPC プロジェクトは楽しいですよ。

参考・おすすめリンク

脚注

  1. 1 Steve Conway, Alex Norton, Bob Sorensen, Earl Joseph, “Cloud Computing for HPC Comes of Age,” Hyperion Research, March 2019.
  2. 1 Steve Conway, Alex Norton, Bob Sorensen, Earl Joseph, “Cloud Computing for HPC Comes of Age,” Hyperion Research, March 2019.