kubernetes-sigs/jobset

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

何を解決するか

JobSet は、Kubernetes のネイティブ API を使って、複数の Kubernetes Job を単一の単位として管理する仕組みです。分散型 AI/ML 学習ワークロード(PyTorch、Jax、TensorFlow など)や HPC アプリケーション(MPI など)のデプロイを簡素化します。これらのワークロードは通常、複数のポッド間での同期、安定したネットワークエンドポイント、特定の障害回復パターンを必要とします。

仕組み

JobSet は分散ワークロードを Kubernetes Job のグループとしてモデル化します。ヘッドレスサービスの自動管理により、ワーカー間通信に必要な安定したポッドホスト名を提供します。また、異なる役割(例:リーダーとワーカー)に応じた複数のポッドテンプレートを定義でき、成功・失敗ポリシーをカスタマイズして、グループ全体のライフサイクルを管理できます。

対象ユーザー

Kubernetes クラスタ上で大規模な分散型 AI/ML 学習や HPC ワークロードをデプロイする開発者およびプラットフォームエンジニア。

主な特徴

  • マルチテンプレート対応: リーダーやパラメータサーバーなど、異なるポッドグループに異なるポッドテンプレートを定義可能。
  • 安定したネットワーキング: ヘッドレスサービスと IndexedJobs の自動設定により、分散学習における安定したポッドホスト名を確保。
  • ポリシーのカスタマイズ: チェックポイントからの自動再起動や、リソースの効率的な解放を実現する成功ポリシーをカスタマイズ可能。
  • 排他配置: 子ジョブとトポロジードメイン(ラックやゾーンなど)の 1:1 マッピングを保証し、排他的なリソースアクセスを実現。
  • 起動順序制御: ポッドの順序付き起動をサポートし、リーダー・ワーカーパターンなどのパターンを実現可能。
  • Kueue 連携: Kueue との連携により、クラスタの過剰割り当て、マルチテナント、リソース共有を実現。

関連

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