第8章 Kueue によるワークロードの管理
クラスター管理者は、Red Hat build of Kueue を Red Hat OpenShift AI と統合することで、大規模な AI および機械学習のワークロードを管理できます。この統合により、クォータ管理、リソース割り当て、優先順位付けされたジョブのスケジューリング設定の機能が提供されます。
分散ワークロードを管理するための組み込み Kueue コンポーネントは非推奨になりました。Kueue は現在、Red Hat build of Kueue を通じて提供されており、Red Hat build of Kueue Operator によってインストールおよび管理されています。組み込み Kueue および Red Hat build of Kueue Operator の両方を同じクラスターにインストールできません。同じリソースを管理するコントローラーが作成され、競合してしまうためです。
OpenShift AI は既存のワークロードを自動的に移行しません。アップグレード後もワークロードがキュー管理を引き続き使用できるようにするために、クラスター管理者は組み込み Kueue から Red Hat build of Kueue Operator に手動で移行する必要があります。詳細は、Red Hat build of Kueue Operator への移行 を参照してください。
8.1. Kueue によるワークロード管理の概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift AI で Kueue を使用すると、規模の大きい AI および機械学習のワークロードを管理できます。Kueue は、階層的なクォータ管理、動的なリソース割り当て、優先順位付けされたジョブスケジューリングを利用して、クラスターリソースの割り当てと共有方法を制御します。これらの機能は、クラスターの競合を防ぎ、チーム間で公平なアクセスを確保し、ハードウェアアクセラレーターなどの異種のコンピュートリソースの使用を最適化するのに役立ちます。
Kueue を使用すると、分散トレーニングジョブ (RayJob、RayCluster、PyTorchJob)、ワークベンチ (Notebook)、モデルサービング (InferenceService) など、さまざまなワークロードをスケジュールできます。Kueue の検証とキューの適用は、kueue.openshift.io/managed=true ラベルが指定された namespace 内のワークロードのみが対象です。
OpenShift AI で Kueue を使用すると、次のような利点があります。
- リソースの競合を防ぎ、ワークロード処理を優先する
- チームやプロジェクト全体のクォータを管理する
- すべてのワークロードタイプに対して一貫したスケジューリングを確保する
- GPU やその他の特殊なハードウェアの利用率を最大化する
分散ワークロードを管理するための組み込み Kueue コンポーネントは非推奨になりました。Kueue は現在、Red Hat build of Kueue を通じて提供されており、Red Hat build of Kueue Operator によってインストールおよび管理されています。組み込み Kueue および Red Hat build of Kueue Operator の両方を同じクラスターにインストールできません。同じリソースを管理するコントローラーが作成され、競合してしまうためです。
OpenShift AI は既存のワークロードを自動的に移行しません。アップグレード後もワークロードがキュー管理を引き続き使用できるようにするために、クラスター管理者は組み込み Kueue から Red Hat build of Kueue Operator に手動で移行する必要があります。詳細は、Red Hat build of Kueue Operator への移行 を参照してください。
8.1.1. Kueue 管理の状態 リンクのコピーリンクがクリップボードにコピーされました!
DataScienceCluster オブジェクトで managementState を設定することで、OpenShift AI による Kueue の操作方法を設定します。
Unmanagedこの状態は、OpenShift AI で Kueue を使用する場合にサポートされます。状態が
Unmanagedの場合、OpenShift AI は、Red Hat build of Kueue Operator で管理されている既存の Kueue インストールと連携します。Red Hat build of Kueue Operator がクラスターにインストールされ、実行されている必要があります。OpenShift AI Operator は、
Unmanagedモードを有効にすると、まだカスタムリソースが存在しない場合はデフォルトのKueueカスタムリソース (CR) を作成します。これにより、Red Hat build of Kueue Operator がクラスター上で Kueue をアクティブ化するように指示されます。Managed-
この状態は非推奨です。以前は、OpenShift AI は組み込みの Kueue ディストリビューションをデプロイおよび管理していました。
Managedモードは、Red Hat build of Kueue Operator と互換性がありません。両方がインストールされている場合、OpenShift AI は競合を避けるためにリコンシリエーションを停止します。サポートが継続されるように、Managed状態を使用している環境をUnmanaged状態に移行する必要があります。 Removed-
この状態では、OpenShift AI の Kueue が無効になります。以前の状態が
Managedだった場合、OpenShift AI は組み込み Kueue ディストリビューションをアンインストールします。以前の状態がUnmanagedであった場合、OpenShift AI により、外部 Kueue 統合のチェックは停止されますが、Red Hat build of Kueue Operator はアンインストールされません。空のmanagementState値はRemovedとしても機能します。
8.1.2. プロジェクトのキュー適用 リンクのコピーリンクがクリップボードにコピーされました!
ワークロードがキューイングシステムを回避しないように、検証 Webhook により、Kueue 管理が有効になっているすべてのプロジェクトに対してキューイングルールが自動的に強制適用されます。プロジェクトの namespace に kueue.openshift.io/managed=true ラベルを適用して、プロジェクトで Kueue 管理を有効にします。
この検証 Webhook の強制方法は、非推奨の埋め込み Kueue コンポーネントで使用されていた Validating Admission Policy に代わるものです。システムは下位互換性を確保するため、従来の kueue-managed ラベルもサポートしていますが、今後は kueue.openshift.io/managed=true ラベルが推奨されます。
プロジェクトで Kueue 管理が有効になると、Webhook では、新しいワークロードまたは更新されたワークロードに kueue.x-k8s.io/queue-name ラベルを割り当てる必要があります。このラベルがない場合、Webhook はワークロードを作成または更新しません。
OpenShift AI は、デフォルトのクラスタースコープの ClusterQueue (まだ存在しない場合) と、その namespace スコープの LocalQueue (まだ存在しない場合) を作成します。これらのデフォルトリソースは、opendatahub.io/managed=false アノテーションを使用して作成されるため、作成後は管理されません。クラスター管理者はそれらを変更または削除できます。
Webhook は、次のリソースタイプの create および update 操作にこのルールを適用します。
-
InferenceService -
Notebook -
PyTorchJob -
RayCluster -
RayJob
ハードウェアプロファイルを他のワークロードタイプに適用できますが、検証 Webhook はこれらの特定のリソースタイプに対してのみ kueue.x-k8s.io/queue-name ラベル要件を適用します。
8.1.3. Kueue でのワークロード管理の制限 リンクのコピーリンクがクリップボードにコピーされました!
Kueue を使用して OpenShift AI のワークロードを管理する場合、次の制限が適用されます。
-
Kueue の検証とキューの適用を有効にするには、namespace に
kueue.openshift.io/managed=trueのラベルを付ける必要があります。 - ワークベンチやモデルサーバーなど、OpenShift AI ダッシュボードから作成するすべてのワークロードでは、ローカルキューを指定するハードウェアプロファイルを使用する必要があります。
-
ハードウェアプロファイルでローカルキューを指定すると、OpenShift AI は、そのプロファイルを使用するワークロードに対応する
kueue.x-k8s.io/queue-nameラベルを自動的に適用します。 - ノード配置用のノードセレクターまたは toleration を含むハードウェアプロファイルは使用できません。ワークロードを特定のノードに割り当てるには、ローカルキューを指定したハードウェアプロファイルを使用します。ローカルキューは、適切なリソースフレーバーで設定されたキューに関連付ける必要があります。
- Kueue ではアクセラレータープロファイルは使用できません。既存のアクセラレータープロファイルをハードウェアプロファイルに移行する必要があります。
- ワークベンチは中断可能なワークロードではないため、割り込み不可 (non-preemptive) キューに関連付けられたローカルキューにのみ割り当てることができます。OpenShift AI が作成するデフォルトのクラスターキューは割り込み不可 (non-preemptive) です。
8.1.4. Kueue ワークフロー リンクのコピーリンクがクリップボードにコピーされました!
OpenShift AI で Kueue を使用してワークロードを管理するには、OpenShift クラスター管理者、OpenShift AI 管理者、機械学習 (ML) エンジニアまたはデータサイエンティストのタスクを使用します。
クラスター管理者
Kueue をインストールして設定します。
- Red Hat build of Kueue ドキュメント の説明に従い、クラスターに Red Hat build of Kueue Operator をインストールします。
-
Kueue を使用したワークロード管理の設定 で説明されているように、
DataScienceClusterカスタムリソースでmanagementStateをUnmanagedに設定して、Kueue 統合をアクティブ化します。 - Red Hat build of Kueue ドキュメントで説明されているように、ユーザーワークロードのリソース割り当てを最適化するようにクォータを設定します。
ダッシュボードで Kueue を有効にする で説明されているように、
OdhDashboardConfigカスタムリソースでdisableKueueをfalseに設定して、ダッシュボードで Kueue を有効にします。注記ダッシュボードで Kueue が有効になっている場合、OpenShift AI は、ダッシュボードから作成されたすべての新規プロジェクトに対して Kueue 管理を自動的に有効にします。既存のプロジェクト、またはコマンドラインインターフェイスを使用して作成されたプロジェクトの場合は、
kueue.openshift.io/managed=trueラベルをプロジェクト namespace に適用して、Kueue 管理を手動で有効にする必要があります。
OpenShift AI 管理者
OpenShift AI 環境を準備します。
- ハードウェアプロファイルの使用 で説明されているように、ユーザーが OpenShift AI ダッシュボードからワークロードを送信できるように、Kueue 対応のハードウェアプロファイルを作成します。
ML エンジニアまたはデータサイエンティスト
ワークロードをキューイングシステムに送信します。
- ワークベンチやモデルサーバーなどの OpenShift AI ダッシュボードから作成されたワークロードの場合、作成時に Kueue 対応のハードウェアプロファイルを選択します。
-
分散トレーニングジョブなど、コマンドラインインターフェイスまたは SDK を使用して作成されたワークロードの場合、
kueue.x-k8s.io/queue-nameラベルをワークロードの YAML マニフェストに追加し、その値をターゲットのLocalQueue名に設定します。