AWS HPCはじめの一歩
クラウド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 の評価は必ず行いましょう。
各コンポーネントは要件に応じて評価ください。
- AWS ParallelCluster
- AWS Batch
- Amazon FSx for Lustre
- Elastic Fabric Adapter
- Nice DCV
ドキュメントを読むだけでは実感がわかないので、次のステップとして、ワークショップで実際にサービス触ってみましょう。
次の記事で紹介しているワークショップは、情報が散在しているサービス・ツールを HPC の観点から横串して学べるようになっており、非常に有用です。
また、HPCのWell-Architected ホワイトペーパーもおすすめです。
ハイパフォーマンスコンピューティングレンズ AWS Well-Architected フレームワーク
最新は 2019年12月版ですが、2018年8月当時のものがブログにまとめられています。
- HPC on AWS での Well-Architected Framework を学ぼう!(前編) | Developers.IO
- HPC on AWS での Well-Architected Framework を学ぼう!(後編) | Developers.IO
アーキテクチャー例
アーキテクチャーはジョブスケジューラーによって大きく異なります。
オンプレに近い従来のクラスター環境
※ 画像は "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 プロジェクトのとっかかりになるような情報をまとめました。
最後におすすめの学習順を紹介します。
HPCはエラスティックでスケーラブルなクラウドの醍醐味の一面を体験できるので、HPC プロジェクトは楽しいですよ。
参考・おすすめリンク
- 弊社の HPC 過去ブログ
- ハイパフォーマンスコンピューティング(HPC) - ユースケース別クラウドソリューション | AWS
- ハイ パフォーマンス コンピューティング製品とソリューション - NVIDIA