kubernetes-sigs/jobset

JobSet: a k8s native API for distributed ML training and HPC workloads

何を解決するか

JobSet は、Kubernetes でジョブのグループを単一の単位として管理するための Kubernetes ネイティブな方法を提供します。PyTorch、Jax、TensorFlow などの分散 AI/ML 学習ワークロードや、MPI などの HPC アプリケーションを Kubernetes 上にデプロイする際の課題、すなわち安定したネットワークエンドポイント、異なる役割に特化したポッドテンプレート、および調整された障害回復を解決します。

動作方法

JobSet は、複数の Kubernetes Job をオーケストレーションする上位レベルの API です。これらのジョブのライフサイクルを管理し、IndexedJobs を通じてポッドに安定したホスト名を提供し、ポッド間通信のための自動ヘッドレスサービス構成を実現します。異なる役割(例:リーダー vs. ワーカー)に応じて異なるポッドテンプレートを定義でき、グループ全体にわたる起動順序および成功/失敗ポリシーを制御できます。

対象ユーザー

Kubernetes クラスタ上で大規模な分散学習やハイパフォーマンスコンピューティングワークロードをデプロイする開発者およびプラットフォームエンジニア向けに設計されています。

主な特徴

  • マルチテンプレート対応: リーダー、ワーカー、パラメータサーバーなど、異なるポッドグループにそれぞれ異なるポッドテンプレートを定義可能。
  • 安定したネットワーク: ML や HPC フレームワークで必要とされる安定したポッドホスト名を提供するため、ヘッドレスサービスを自動構成。
  • カスタマイズ可能なポリシー: ワークロードが完了したタイミングや、全体セットをチェックポイントから再起動すべきタイミングを決定するための特定の成功・失敗ポリシーを設定可能。
  • 排他配置: 子ジョブとトポロジードメイン(ラックやゾーンなど)の 1:1 マッピングを保証し、ローカルリソースへの排他的アクセスを確保。
  • 起動順序制御: ReplicatedJobs の起動順序を設定可能で、リーダー・ワーカーパターンをサポート。
  • Kueue 統合: クラスタのオーバーサブスクリプション、マルチテナント、リソース共有に対応する Kueue と統合可能。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト