- リリース ノート
- はじめる前に
- 基本情報
- AI Center をインストールする
- 移行とアップグレード
- プロジェクト
- データセット
- データのラベル付け
- ML パッケージ
- すぐに使えるパッケージ
- パイプライン
- ML スキル
- ML ログ
- AI Center の Document UnderstandingTM
- AI Center API
- 使い方
- ノードのスケジュール設定を管理する
- ライセンス
- 基本的なトラブルシューティング ガイド
ノードのスケジュール設定を管理する
ノードのスケジュール設定は特に、ハードウェアの運用を効率化し、ML レプリカ (ポッド)、スキル、パイプラインを確実に処理するのに役立ちます。主に次の 2 つの状況で使用します。
- GPU ノードがある場合に、GPU を必要とするワークロードだけがそのノードでスケジュール設定されるようにする場合
- ML ワークロードの分離を向上させ、ML ワークロードが他のアプリケーションの妨げにならないようにする場合
既定では、必要なリソースを持つノードは Kubernetes スケジューラーによってすべて等しいと見なされます。
There are two methods in which you can direct the scheduling of ML replicas (pods), skills, or pipelines to specific nodes, and both are supported in UiPath® AI Center:
- Node Affinity を利用して Pod をノードに割り当てる: ML ポッドをノード上の他のポッドと併置する場合に便利です。1 つのノードに複数のラベルを適用できます。
- Taint と Toleration: 専用ノード向けです。すべてのポッドを排除するか (
NoSchedule
)、またはスケジュール設定の条件に一致しないポッドに低いスケジュール設定を適用します (PreferNoSchedule
)。1 つまたは複数のノードに複数の taint を適用できますが、ノードの taint では「AND」の Boolean 論理のみがサポートされます。
ノード アフィニティは、ポッドを一連のノードに引き付けるポッド プロパティであり、優先条件または要件のいずれかとして設定します。これに対し、taint ではノードで一連のポッドを排除できます。
1 つ目の方法では、ノード ラベルを使用してレプリカとノードの間にアフィニティを作成します。一方、2 つ目の方法では、ノードに taint を割り当てることでアンチアフィニティを適用します。
PodSpec
テンプレートは、両方の方法をサポートするよう設計されており、デプロイ時に GPU または GPU なしのどちらを選択するかに基づいてカスタマイズされます。
エージェント ノードを追加してリソース プールを拡張している状況で、エージェント ノードでの ML ポッドのスケジュール設定に影響を与えたい場合は、ノード アフィニティを適用できます。そのためには、以下のコマンドを使用してノードにラベルを追加します。
- CPU の場合:
kubectl label node <node_name> node.type=aic.ml.cpu
- GPU の場合:
kubectl label node <node_name> node.type=aic.ml.gpu
ノード アフィニティを使用しても、ノードが確実に ML ワークロードへのサービング専用になるわけではありません。また、ラベルが適用された同じノードに、他のワークロード ポッドがスケジュール設定されなくなるわけではありません。
ノードを専用にするには、taint を使用するか、ノード アフィニティと taint を組み合わせて使用する必要があります。エージェント ノードを ML GPU ポッドまたは ML CPU ポッドへのサービング専用にするには、ノードに次の taint を適用します。
- CPU の場合:
kubectl taint node <node_name> aic.ml/cpu=present:NoSchedule
- GPU の場合:
kubectl taint node <node_name> nvidia.com/gpu=present:NoSchedule
kubectl taint node <node_name> nvidia.com/gpu=present:PreferNoSchedule
kubectl label node <node_name> node.type=aic.ml.cpu
kubectl taint node <node_name> nvidia.com/gpu=present:PreferNoSchedule
kubectl label node <node_name> node.type=aic.ml.cpu