kubernetes-sigs/lws
LeaderWorkerSet: An API for deploying a group of pods as a unit of replication
何であるか
LeaderWorkerSet (LWS) および DisaggregatedSet (DS) は、大規模なAI/ML推論ワークロード(特に複数のGPUやその他のアクセラレータに分散される必要があるもの)をより簡単に実行できるように設計された新しいKubernetes APIです。
- LeaderWorkerSet は、グループ のポッドを単一の論理的なレプリカとして扱えるようにします。各グループには1つのリーダーポッドと、同じライフサイクルを持つワーカーポッドの集合が含まれます。グループには一意のインデックス(0–n)が割り当てられ、すべてのポッドが同じトポロジー(例:同じラックまたはノードプール)に配置されるように(ギャングスケジューリング)一緒にスケジューリングできます。
- DisaggregatedSet はLWSを基盤として、より複雑なマルチステージの推論パイプライン(例:1つのマシン群でプレフィル、別のマシン群でデコード)を処理します。複数のLWSグループを調整し、ロールアウト中にキャパシティ比を一定に保ち、すべての役割にわたる障害を処理します。
これらのAPIは、llm-dプロジェクト(CNCFサンドボックスの分散推論サービングスタック)と共同設計されており、実世界のサービングフレームワークと密接にマッピングされています。
AI/MLにとってなぜ重要か
本番環境で大規模言語モデル(LLM)を実行する際には、以下のことが一般的です:
- モデルを多数のGPUやTPUにシャーディングする。
- 異なるハードウェア上で実行される複数のフェーズ(プレフィル、デコード、ポストプロセッシング)を調整する。
- パイプライン全体を維持する——どのポッドでもクラッシュすると、推論リクエストが失敗する可能性がある。
標準的なKubernetes Deploymentsは各ポッドを独立して扱うため、シャード化されたモデルのすべての部分が同時に起動・停止・スケーリングされることを保証するのが困難です。LWSはスーパーポッドを提供し、単一のユニットとして動作します。DSは複数のこのようなスーパーポッドを同期してオーケストレーションできます。これにより、高スループット・低レイテンシの推論サービスにおける運用の複雑さが軽減され、信頼性が向上します。
コア機能(LeaderWorkerSet)
| 機能 | 機能の説明 |
|---|---|
| ポッドのグループとしての単位 | レプリカはリーダー+ワーカーで構成され、ライフサイクルを共有。並列に作成され、同時にロールアウト可能。 |
| 一意のポッドID | 各ポッドにインデックス(0–n)が割り当てられ、モデルのシャーディングロジックに有用。 |
| ギャングスケジューリング(alpha) | グループ内のすべてのポッドが同時にスケジューリングされるか、まったくスケジューリングされない。コロケーションを保証。 |
| デュアルテンプレート | リーダーとワーカー用に別々のポッドテンプレートを提供。リソース仕様を異なるものに設定可能。 |
| 複数のグループ | 複数の同一レプリカを作成可能。各グループはスケーリングおよび更新の単位となる。 |
| スケールサブリソース | /scaleエンドポイントを公開。Horizontal Pod Autoscaler(HPA)がグループ数を調整可能。 |
| グループ単位でのローリング更新 | 更新はグループ単位で行われ、ロールアウト中に全体の整合性を保つ。 |
| トポロジーに配慮した配置 | オプションで、グループ内のポッドを同じノード、ゾーン、または他のトポロジーに配置可能。 |
| すべてまたはなしの再起動 | グループ内のいずれかのポッドが失敗した場合、グループ全体が再作成される。障害処理を簡素化。 |
高度な機能(DisaggregatedSet)
| 機能 | 機能の説明 |
|---|---|
| 非統合アーキテクチャ | 異なる役割(例:プレフィル、デコード)が別々のハードウェアクラスタで実行されるパイプラインをサポート。 |
| N次元の同期ロールアウト | 2~10の役割を同時に更新しつつ、希望するキャパシティ比を維持。 |
| 統一されたライフサイクル | 複数のLWSオブジェクトを1つの論理ユニットとして扱い、スケーリング、更新、削除を統合。 |
| 自動サービスオーケストレーション | 各役割に対してヘッドレスサービスを自動作成。ポッド同士の相互発見に追加設定不要。 |
| 高度な障害処理 | すべての役割にわたってドレインと再起動を調整し、全体のパイプラインの健全性を維持。 |
どのような人が使うか
- MLプラットフォームチーム:多数のGPUに分散される大規模LLMの本番推論サービスを構築する人。
- クラウドプロバイダー:Kubernetesとより緊密に統合されたマネージド推論スタックを提供したい人。
- 研究グループ:マルチノードモデルサービング実験を実施し、再現可能でバージョン管理されたデプロイメントが必要な人。
はじめ方
- インストール – インストールガイドに従ってください(Kubernetes 1.34+が必要)。プロジェクトはCRDマニフェストとクラスタ内に実行されるコントローラーを提供します。
- LeaderWorkerSetの定義 – リーダーポッドテンプレート、ワーカーポッドテンプレート、希望するレプリカ数を指定するYAMLを記述します。
- (オプション)DisaggregatedSetの使用 – ワークロードに明確な役割がある場合は、複数のLWSオブジェクトを参照するDSオブジェクトを作成します。
- スケーリングとモニタリング – 標準の
kubectl scaleまたはHPAを/scaleサブリソースに適用。コントローラーがギャングスケジューリングと同期ロールアウトを処理します。
コミュニティとサポート
- Slack: Kubernetes Slackワークスペースの
#sig-appsチャンネル。 - メーリングリスト:
kubernetes-sig-appsGoogleグループ。 - ドキュメントとトーク: https://lws.sigs.k8s.io/docs/ (例、採用事例、プレゼンテーション動画を含む)。
- 貢献方法: 通常のKubernetes SIGプロセスに従ってください — PRを提出し、CI(ユニット、統合、E2Eテスト、K8s 1.34–1.37対応)を実行し、Kubernetes Code of Conductに従ってください。
TL;DR
LWS + DSは、Kubernetes上でマルチポッド・マルチノードの推論ワークロード(例:シャーディングされたLLMサービング)をデプロイ・管理するための第一級の手段を提供します。グループ単位のライフサイクル、ギャングスケジューリング、スケーリング、同期ロールアウトを備え、大規模AI推論の信頼性と運用のしやすさを向上させます。
関連
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト
- プロジェクト