GKE の Slurm について

このドキュメントでは、Google Kubernetes Engine(GKE)に Slurm クラスタをデプロイして管理するメリットと責任共有モデルについて説明します。Slurm は、ハイ パフォーマンス コンピューティング(HPC)ワークロードに重点を置いた、スケーラビリティの高いオープンソースのワークロード マネージャーとジョブ スケジューラです。

このドキュメントでは、バッチジョブ用の Slurm インターフェースと GKE のスケーラビリティおよび効率的なリソース管理を統合する GKE 用 Slurm Operator アドオンについて説明します。

このドキュメントは、GKE 用 Slurm Operator アドオンを使用して Slurm を有効にして構成するデータ管理者、オペレーター、デベロッパーを対象としています。

GKE で Slurm を使用する理由

GKE で Slurm を実行すると、同じ共有コンピューティング プールで、Slurm トレーニング ジョブを Ray ジョブや推論のサービングなどの他の Kubernetes ワークロードと並行して実行できる環境を設定できます。

Cloud de Confiance by S3NS には、GKE で Slurm を実行する次の方法が用意されています。

  • Cluster Director: 事前構成された独自の環境を提供するマネージド ソリューション。Google が Slurm コントロール プレーン、ソフトウェア バージョン、構成を管理する、最小限の構成でマネージド エクスペリエンスを実現する場合は、Cluster Director を使用することをおすすめします。詳細については、Cluster Director をご覧ください。

  • GKE 用 Slurm Operator アドオン: オープンソースの Slinky プロジェクトの一部として開発されたオープンソース テクノロジーで、Slurm Operator のマネージド インストールを提供します。この管理対象インストールは、Google のベスト プラクティスに沿っています。GKE 用 Slurm Operator アドオンは、アクセラレータ最適化マシンで AI、ML、HPC ワークロードを実行するカスタム プラットフォームを構築するプラットフォーム エンジニアに役立ちます。Slurm 構成を完全に制御する必要がある場合、カスタム コンテナを統合する場合、または同じクラスタで Ray や推論などの他のワークロードとともに Slurm を実行する必要がある場合は、GKE 用 Slurm Operator アドオンを使用することをおすすめします。GKE 用 Slurm オペレーター アドオンには次のメリットがあります。

    • 統合インフラストラクチャ: HPC バッチジョブとマイクロサービスの両方に対して、単一の GKE クラスタを管理できます。これにより、運用サイロが削減されます。
    • 効率的なスケーリング: GKE 用 Slurm Operator アドオンは、GKE の高速ノード プロビジョニングと効率的なビンパッキングを使用して、リソース使用率を最適化します。
    • 高性能ハードウェア: Slurm コマンドを使用して、 Cloud de Confiance by S3NSの最新のアクセラレータ(TPUGPU など)にアクセスできます。

このドキュメントの以降のセクションでは、Slurm Operator アドオンについて説明します。

インフラストラクチャ レイヤについて

通常、Slurm はベアメタル サーバーまたは VM に直接デプロイされます。このような設定では、Slurm はライフサイクルの期間にわたって管理する比較的静的なノードのセットを想定しています。

一方、GKE は、基盤となる VM を動的プール内のノードとして提示することで、基盤となる VM を抽象化するマネージド サービスです。GKE は、これらのノードのスケジューリングとスケーリングを自動的に処理します。

GKE 用 Slurm オペレーター アドオンを使用すると、Slurm は GKE 上のワークロードとして実行されます。このモデルでは、GKE と Slurm は次の機能を提供します。

  • インフラストラクチャ マネージャーとしての GKE: GKE は、基盤となるノード、ネットワーキング、セキュリティを提供して管理します。
  • ワークロード マネージャーとしての Slurm: Slurm は、ユーザーがバッチジョブを送信して管理するためのインターフェースを提供します。

この統合により、Slurm ジョブが Kubernetes アプリケーション(Ray や推論サービングなど)と同じ基盤となるハードウェア(GPU や TPU など)を共有できる異種スタックが作成されます。

Slurm Operator アドオンの仕組み

GKE クラスタで GKE 用 Slurm オペレーター アドオンを有効にすると、GKE は次の手順を実行します。

  1. GKE は Slurm オペレーターをインストールしてホストします。このオペレーターは GKE コントロール プレーンで実行され、クラスタにデプロイされた Slurm コンポーネントのライフサイクルを管理します。このオペレーターは、証明書の生成やカスタム リソース管理などの前提条件を自動的に処理します。
  2. オペレーターが実行されたら、Kubernetes カスタム リソースを使用して Slurm クラスタ トポロジを定義します。
  3. オペレーターは、ワークロードの仕様に合わせて、コントローラ、ログイン、ワーカーなどの必要な Pod をデプロイします。

カスタム リソース

GKE 用 Slurm Operator アドオンは、次のカスタム リソースを使用して Slurm クラスタを管理します。

  • NodeSet: 同種のワーカーノードのセットを定義します。Slurm ワーカーを特定の GKE ノードプールまたはハードウェア タイプにマッピングできます。たとえば、H100 GPU 用の NodeSet と TPU 用の NodeSet を作成できます。
  • コントローラ: Slurm クラスタのコア コンポーネントであるコントローラを定義します。このリソースは、Pod 内の slurmctld コンポーネントと、NodeSet や LoginSet などの他のすべてのコンポーネントを作成します。
  • LoginSet: ユーザーがログインしてジョブを送信するログインノードを定義します。
  • Restapi: Slurm クラスタの REST API コンポーネントを定義します。
  • アカウンティング: 構成されている場合、slurmdbd コンポーネントをデプロイして、ジョブのアカウンティングと使用状況の追跡を処理します。通常は Cloud SQL データベースに接続されます。

Slurm Operator アドオンの共有責任

GKE 用 Slurm Operator アドオンを使用して GKE で Slurm を実行する場合、Cloud de Confiance by S3NS とお客様が責任を共有します。この統合により、Google がオーケストレーション レイヤを管理しながら、環境を柔軟にカスタマイズできます。

Google の責任

  • Operator のライフサイクル: Slurm Operator をインストールします。
  • GKE コントロール プレーン: GKE コントロール プレーンの信頼性と稼働時間を管理します。
  • Kubernetes CustomResourceDefinition: Slurm に必要なカスタム リソースを管理します。
  • ベースイメージ: Slurm コンポーネント用に最適化された Google 所有のコンテナ イメージを提供します。これらのイメージの使用は任意です。Slurm クラスタを構成するときに、Google 提供のイメージを使用することも、独自のイメージを使用することもできます。

お客様の責任

  • Slurm 構成: YAML ファイルを使用して、Slurm クラスタのトポロジ、パーティション、上限、プラグインを定義します。
  • ジョブの送信: ユーザー アクセスとジョブ送信のワークフローを管理します。
  • カスタム イメージ: デフォルトの Google イメージが特定の要件を満たしていない場合は、ログインノードまたはワーカーノードに使用されるカスタム コンテナ イメージを維持します。
  • 外部依存関係: 会計用の Cloud SQL や共有ストレージ用の Filestore などの外部リソースを管理します。

詳細については、GKE の責任の共有をご覧ください。

次のステップ

GKE 用 Slurm オペレーター アドオンを使用するには、次の操作を行います。