Oracle Cloud MarketplaceからのHPCクラスタ・スタックの構成

HPCクラスタ・スタックは、Terraformを使用してOracle Cloud Infrastructureリソースをデプロイします。スタックは、GPUノード、ストレージ、標準ネットワーキングおよび高パフォーマンスのクラスタ・ネットワーキング、およびクラスタへのアクセスと管理のための要塞/ヘッド・ノードを作成します。

GPUクラスタのデプロイ

Oracle Cloudアカウントは、これらのリソースのデプロイおよび管理権限を持つグループに属している必要があります。ポリシー要件の詳細は、HPCクラスタの使用手順を参照してください。

スタックを既存のコンパートメントにデプロイできますが、クラスタ専用のコンパートメントを作成すると、よりクリーンになる場合があります。

ノート:

Marketplaceスタックを使用して環境をプロビジョニングするコストはありませんが、スタックの起動時にプロビジョニングされたリソースに対して課金されます。
  1. テナンシおよびリージョンのコンパートメントを作成し、ポリシーが使用可能であることを確認します。
    1. 作業するテナンシおよびリージョンのOracle CloudユーザーとしてOCIコンソールにログインします。
    2. クラスタ・リソース用のコンパートメントを作成します。
    3. クラスタを構築できるように、OCIポリシーが設定されていることを確認します。
      これには、セキュリティ管理者またはネットワーク管理者からの支援が必要な場合があります。次にポリシーの例を示します: "グループmyGroupがコンパートメントcompartmentのall-resourcesを管理できるようにします。"
  2. HPCクラスタ・スタックを使用して、GPUクラスタをデプロイします。
    1. 「Marketplace」に移動し、「All Applications」をクリックします。
    2. 「リストの検索」ボックスに、HPCクラスタと入力します。

      ノート:

      HPCクラスタ・スタックがテナンシのOCIマーケットプレイスで使用できない場合は、GitHub (ギット・クローンhttps://github.com/oracle-quickstart/OCI-HPC.git)からスタックをクローニングし、OCIリソース・マネージャにインポートできます。これは同じ機能を提供しますが、GPUノードに適したカスタムOSイメージにアクセスできる必要があります。
    3. 「HPCクラスタ」をクリックします。
    4. バージョンを選択します。
      デフォルトのv2.10.4.1を使用しました。
    5. クラスタを構築するコンパートメントを選択します
    6. 「スタックの起動」をクリックします。

クラスタを構成します

スタックが起動したら、「スタック情報」ページおよび構成ページを完了して、クラスタの構成を開始します。

  1. 「スタック情報」ページに入力します:
    1. クラスタの名前を入力します。
    2. (オプション)簡単な説明を追加します。
    3. 「次」をクリックします。

    「構成変数」ページが表示されます。

  2. クラスタを構成します。
    「構成変数」ページには、ニーズにあわせてクラスタをカスタマイズする多くの機会があります。それぞれの選択肢を詳しく説明しているわけではありません。かわりに、NVIDIAクラスタ・ソフトウェアをサポートするGPUクラスタを構築するためにデフォルト以外の設定が必要なガイダンスを提供します。
    1. 「公開SSHキー」に、クラスタへのログインを可能にする公開キーを追加します。
    2. 「カスタム・クラスタ名の使用」チェック・ボックスを選択し、ベース・ホスト名を入力します。
      これは、要塞およびログイン・ノードのホスト名の接頭辞として使用されます。
  3. ヘッドノード・オプションを使用して、要塞をカスタマイズします。
    このインスタンスは、メイン・ログイン・ノードであるSlurmコントローラとして機能し、クラスタをサポートするビルドやその他のアクティビティにも使用できます。ここでは、要件に合せてCPU、メモリーおよびブート・ボリュームの容量を調整できます
  4. コンピュート・ノード・オプションを使用して、クラスタ内のワーカー・ノードのタイプと量を選択します。これらのノードをマーケットプレイスからOSイメージとともにデプロイしたり、任意のOSビルドでカスタム・イメージを提供したりできます。
    • 可用性ドメイン: 複数の可用性ドメイン(AD)があるリージョンで作業している場合は、GPUリソースの最適な可用性を持つADを選択します。
    • 「クラスタ・ネットワークの使用」を選択します。
    • コンピュート・ノードのシェイプ: このクラスタで使用しているベア・メタルGPUシェイプを選択します。たとえば、BM.GPU4.8です。
    • 初期クラスタ・サイズ: プロビジョニングされるベア・メタル・ノードの数を入力します。
    • Marketplaceから事前構成済のOSイメージを使用して構築するには、「マーケットプレイス・イメージの使用」を選択します。次に、「イメージ・バージョン」で、GPUおよびRDMAネットワーキング用のドライバが事前構成されたOSのGPUイメージのいずれかを選択します。
    • マーケットプレイス・イメージの使用: カスタム・イメージを使用してクラスタを構築する場合は、このチェック・ボックスの選択を解除して「サポートされていないイメージの使用」を選択し、「イメージOCID」で、テナンシにすでにアップロードしたカスタム・イメージのOCIDを指定します。
    • コンピュート・エージェントの使用: このオプションは、マーケットプレイス・イメージに必要になる場合があります。
  5. (オプション)「追加ログイン・ノード」は、クラスタ・ユーザーがクラスタと対話するための2番目のホストを提供します。シェイプ、cpusおよびメモリーは、要件を満たすようにカスタマイズできます。
  6. 拡張ストレージ・オプションでは、クラスタ全体で使用できる共有ストレージを事前構成する複数の方法が提供されます。「拡張ストレージ・オプションの表示」をクリックして選択項目を展開します。
    • 要塞ホーム・ディレクトリは、すべてのクラスタ・ノードでNFS共有されます。これはヘッドノードのブート・ボリュームの一部で、Headnodeオプションでカスタマイズできます。
    • 共有記憶域を増やすには、「共有領域の追加ブロック・ボリューム」を選択し、容量を入力します。このボリュームは要塞にアタッチされ、クラスタ全体で/nfs/clusterとして共有されます。
    • NVMEまたはブロック・ボリュームからの共有NFSスクラッチ領域は、クラスタ全体で最初のコンピュート・ノードのNVME容量を/NFS/scratchとして共有します。これにより、ヘッドノードボリュームよりもパフォーマンスの高いストレージが提供されますが、容量と可用性は低下する可能性があります。
    • マウント・ロカルディスクは、各コンピュート・ノードのNVMeからファイルシステムを作成し、そのノードにローカルにマウントします。
    • 1つの論理ボリュームは、LVMを使用して、複数のNVMeデバイスから1つの大きなボリュームを作成します。
    • 冗長性は、デバイスをミラー化することで、NVMeストレージの信頼性を向上させます(ただし、使用可能な容量は半分になります)。
  7. ネットワーク・オプションを使用して、VCNを選択します。
    • 既存のVCNの使用: デフォルトでは選択解除されています。選択を解除すると、新しいVCNがプロビジョニングされます。既存のVCNおよびサブネット内にクラスタをプロビジョニングするには、このチェック・ボックスを選択します。これにより、このクラスタおよび他のテナンシ・リソースの統合が容易になる場合があります。
  8. 「ソフトウェア」を使用して、インストールするソフトウェアを選択します。
    • SLURMジョブのスケジューリングおよび管理を提供するには、「Install SLURM」を選択します。
    • (オプション)「HPCクラスタ・モニタリング・ツールのインストール」を選択して、クラスタのアクティビティおよび使用状況に関するより詳細なインサイトを提供します。
    • 「コンテナ化されたGPUワークロード用のNVIDIA Enrootのインストール」を選択します。これにより、NVIDIA PyTorch、NVIDIA NeMo Platformおよびその他のコンテナでワークロードを実行する環境が準備されます。

      ノート:

      このオプションを選択することが重要です。
    • Install NVIDIA Pyxis plugin for Slurm」を選択します。
    • コンピュート・ノードへのログイン・アクセスを制限するには、「PAMの有効化」を選択します。
  9. デバッグ: 「システムの構成」が選択されていることを確認します(これがデフォルトです)。
  10. 「次へ」をクリックして構成設定を表示します。

    確認すると、「クラスタ構成」にデフォルト以外のすべての選択内容が表示されます。「前」ページを戻して変更を加え、すべての設定を再確認できます。

  11. 「適用の実行」を選択し、「作成」をクリックして、テナンシへのスタックを起動し、クラスタを構築します。
    スタックはOCI Resource Managerで作成され、仕様に従って起動され、プロビジョニングがすぐに開始されます。

    このプロセスは数分かかります。ノードのプロビジョニングにはコンピュート・ノード当たり数分かかりますが、ノードに追加のソフトウェアをインストールすると、ビルド時間が長くなります。OCIコンソールでビルドの進行状況を監視できます。「リソース・マネージャ」「ジョブ」の順に進み、アクティビティの最新のジョブ・ログおよび考えられるエラーを確認します。リソース・マネージャ・ジョブ・ステータスが「成功」とレポートされると、デプロイメントは完了します。

    最終ステータスが成功しない場合は、ジョブ・ログで詳細を確認します。コンピュート・インスタンスおよびクラスタ・ネットワークに関連する問題については、クラスタ・ネットワーク作業リクエストで詳細を参照できます。ページに移動するには、「コンピュート」「クラスタ・ネットワーク」「クラスタ・ネットワークの詳細」「クラスタ・ネットワーク作業リクエスト」の順に移動します。詳細を表示するには、最新の「作業リクエスト」を選択します。

  12. ビルドが成功すると、要塞のIPアドレスがジョブ・ログの最後にレポートされます。追加のログインノードを構成した場合は、ログインノードのIPアドレスも表示されます。例
    Apply complete! Resources: 23 added, 0 changed, 0 destroyed.
    
    Outputs:
    RDMA_NIC_metrics_url = "https://objectstorage.us-gov-phoenix-1.oraclecloud.com
    backup = "No Slurm Backup Defined"
    bastion = 139.87.214.247
    login = "No Login Node Defined"
    private_ips = 172.16.6.4 172.16.7.109"
  13. クラスタにログインするために必要な要塞パブリックIPアドレスをノートにとります。
    また、IPアドレスは、OCIコンソールの「コンピュート」「インスタンス」の下にあります。