Amazon Web Services ブログ

HPC アプリケーションの AWS におけるベストプラクティスのライブラリ

AWS の HPC 専門家になるという事は、幾つかの重要な責任を伴います。その中でも最も重要なのは、お客様のアプリケーションを可能な限り高速に、且つコスト効率的に実行するよう支援する事です。私達は、ワークロード毎に最適なサービス、ドライバ、設定、オプションを見つけ出し、優れた結果を得られるよう支援しています。

しかし、HPC 関連サービスの数とその機能は時に速いスピードで成長するに従って最適な構成というのが変化し続けるので、AWS を効果的に活用するのは容易ではありません。

そこで今日、AWS HPC スペシャリストソリューションアーキテクト (SSA) コミュニティからのベストプラクティスを集めたリソースを発表します。これらは、GitHub リポジトリ上で一般に公開されています。このリポジトリには、アプリケーションのベストプラクティスの他にも、クラスターの作成に使える CloudFormation テンプレートや、選定したアプリケーションの起動スクリプト (ベンチマーク結果付き) が含まれています。

私達は、お客様のフィードバックや私達のチームからの要請に基づいて、このリポジトリに含まれる HPC アプリケーションのリストを定期的に更新・拡張していく予定です。新しくリポジトリに含めてほしいアプリケーションがある場合は、GitHub Issues を使ってご提案下さい。

背景

現在 AWS には a href=”https://thinkwithwp.com/ec2/”>750 種類以上のインスタンスタイプがありますが、HPC アプリケーションに役立つのはその一部です。HPC に特化したインスタンスタイプや、EFA (Elastic Fabric Adapter) をサポートするインスタンスタイプを含めて、100 種類以上の選択肢があります。

お客様は多くの場合、AWS で HPC アプリケーションをベンチマークして、自社のコードに最適なインスタンスタイプを理解し、アプリケーションのインストールと実行方法が自社のビジネスニーズ (実行時間、コスト) に合っている事を確認します。

時にはお客様が「適切に」アプリケーションを実行しているのかについて疑問を持つ事もあります。つまり、最高のパフォーマンスが得られているのか、という事です。

この疑問は単なる好奇心以上のものになる事もあります。お客様は調達プロセスの一環として、或いは PoC (実証実験) を開始する前にベンチマークを要望する事がよくあります。私達のチームはこうした要求に応えようと思います。

しかしながら、HPC アプリケーションのベンチマークを適切に、しかも大規模に実行するのは複雑な作業です。事前の準備、経験、そして深い専門知識が必要です。新しい環境 (クラウド) でアプリケーションを実行する必要がある場合は、その環境の仕組みを深く理解する必要がある為、更に複雑になります。

これが、今日公開するこのリソースを作成した理由です。AWS の HPC スペシャリストソリューションアーキテクトが、サービスの進化、アプリケーションの新しいバージョンリリース、より最適な実行方法の発見等に合わせて、このリソースを更新・改善していきます。

現時点では、Computer-Aided Engineering (CAE) コミュニティで最も一般的なアプリケーションから始めています。これらのアプリケーションは、お客様から最も多くの要望を受けているものです。

AWS における HPC アプリケーションのベストプラクティスのゴール

このイニシアチブの目的は以下の通りです:

  1. インフラストラクチャとサービスを最大限に活用し、HPC アプリケーションの最適なコストパフォーマンスを実現出来る様にする
  2. パブリックデータセットを使用して、これらのアプリケーションを AWS で実行する際の基準時間やベンチマークメトリック等のデータポイントを提供する
  3. 他のアプリケーションにも適用可能な汎用的なガイダンス、設定、ヒントを共有する
  4. クラウドの専門知識レベルを下げ、これらのワークロードをクラウド上で実行し易くする

このリポジトリは公式のサポート対象ではありませんが、対象とするトピックに関する私達の最善の考え方と経験を提供する事を目指しています。

GitHub リポジトリの概要

リリース時点では、リポジトリは以下の様に構成されています:

/apps にはそれぞれのアプリケーションのベストプラクティスの為のフォルダが含まれています。このフォルダ内には次のものが含まれています:

  • 起動スクリプトの例。場合によっては、アーキテクチャ (x86 vs GPU vs Graviton) やアプリケーションのバージョン (設定が異なる場合) の違いに合わせて複数あります。提供する起動スクリプトの例は実行可能なものですが、ユーザー毎に独自の事情がある為、提供した例をベースに自身の環境に合わせて調整する事をお勧めします。
  • アプリケーションのベストプラクティスに関する短いドキュメント (README.md ファイルと数件のリソース)。通常は、利用方法、ヒントとコツ、アーキテクチャの選択と最も重要なアプリケーション・環境設定のチューニングに関する詳細、最後にベンチマーク結果と共に幾つかのチャートが含まれます。

/docs には、ドキュメント、画像、チャートが含まれています。これはオフィシャルなアプリケーションドキュメントの代替では無く、アーキテクチャの選択や特定のアプリケーションと環境設定の詳細を補足するものです。

/ParallelCluster には、AWS ParallelCluster を使って HPC クラスターを構築する為の簡単な設定ファイルが含まれています。関連する新しいサービスや機能を HPC リソースの管理に追加する毎に、このセクションも適宜更新していきます。選択した AWS リージョンで ParallelCluster を使ってベーシックなクラスターを自動的にデプロイ出来る幾つかの CloudFormation ベースの手順も含まれています。時間と共に、機能の成長や新しい資料に合わせて、このセクションの構造は変化していきます。

リポジトリに含まれる各アプリケーションは、若干異なるセットのアセット (起動スクリプト、ドキュメンテーション、パフォーマンスチャート等) をサポートしています。但し、全ての含まれるアプリケーションに共通の最小限のセットがあります。

/apps フォルダから始めると、リポジトリ内にある利用可能なベストプラクティスのリストが表示されます。

Figure 1. The list of available best practices you can find in the GitHub repository under /apps/

図1. GitHub リポジトリの /apps/ 配下にある利用可能なベストプラクティスのリスト

アプリケーションのフォルダに入ると、そのまま利用可能か、ニーズに合わせてカスタマイズ出来る起動スクリプトが 1 つ以上見つかります。場合によっては、CPU アーキテクチャや GPU アーキテクチャ別にサブディレクトリに分かれています。

Figure 2. Shows a typical example of the assets you can expect to find for an application.

図2. アプリケーション毎に提供されるアセットの典型的な例

README.md ファイル (又は関連ドキュメントへのリンク) による簡単なドキュメント

Figure 3. An example of the documentation available.

図3. 提供されるドキュメントの例

ドキュメントは網羅的と言うよりも、AWSで最適な方法でアプリケーションを実行する為に重要な事に焦点を当てています。アプリケーション自体のエンドユーザーガイドや管理者ガイド等の一般的なドキュメントは、アプリケーションの公式ガイドをご確認下さい。

通常、リポジトリ内のドキュメントには、テストしたバージョンとアーキテクチャ、アプリケーションのインストールに関するヒント、一般的なヒント、パフォーマンスチューニングに関する重要な設定、そして最も関連性の高いインスタンスタイプのパフォーマンス関連の情報 (チャートとメトリクス) が含まれています。

Figure 4. An example of the performance charts we will provide.

図4. 提供するパフォーマンスチャートの例

これらのベストプラクティスの使い方

既にクラスターが立ち上がっている場合は、このリポジトリをクローンして、これらのベストプラクティスを試す事が出来ます:


git clone https://github.com/aws-samples/hpc-applications.git

既存の HPC クラスターが無い、又は新しいクラスターを立ち上げたい場合は、ParallelCluster を立ち上げるガイドに従って下さい。テスト用の新しい HPC クラスターを数クリックで作成出来る幾つかの簡単な CloudFormation テンプレートを含めています。より複雑な環境でテストしたい場合は、連携するよう設計されたモジュール式のテンプレートを使う事をお勧めします。これらは「HPC Recipes Library」としても GitHub 上で公開されています (以前のブログ記事で詳しく説明しています)。

ワンクリックスタックの 1 つをデプロイするには、表に示された AWS リージョンの中から好きなものを選択し、該当の Launch ボタンをクリックします。ネットワークやストレージに関する幾つかの質問に答えて頂きます。答えが分からない場合は、デフォルトの「AUTO」のままで構いません。ワンクリックのデプロイ手順により、HPC クラスターを正しく実行する為に必要な全てが作成されます。

Figure 5. the links to the 1-Click CloudFormation templates.

図5. ワンクリックの CloudFormation テンプレートへのリンク

CloudFormation スタックのデプロイが完了したら、CloudFormation コンソールの「出力」タブをクリックし、「SystemManagerUrl」のリンクをクリックします。これにより、パスワードや証明書を必要とせずに、AWS Systems Manager (SSM) を使ってセキュアにヘッドノードにアクセス出来ます。GitHub の HPC Applications Best Practices リポジトリのクローンが /fsx 配下にあります。

Figure 6. The Outputs tab in the CloudFormation console shows a link to securely connect to the cluster through AWS Systems Manager (SSM), without needing a password or certificate.

図6. CloudFormation の出力タブには、パスワードや証明書無しでAWS Systems Manager (SSM) を使ってクラスターに安全に接続出来るリンクが表示されます。

まとめ

クラスター上で HPC アプリケーションを最適に調整するのは複雑な作業です。私たちは、今後のアプリケーションや AWS サービスのバージョンアップに合わせて、このリポジトリを最新の状態に保ち、出来る限り簡単な手順でベストな体験を提供する事を目指しています。

このリソースが役立つかどうか、或いは他にどの様なものが必要か等、皆様のフィードバック (GitHub Issues を使用) をお待ちしております。

この記事は 2024 年 6 月 24 日に投稿された「A library of HPC Applications Best Practices on AWS」をソリューションアーキテクトの小野が翻訳したものです。