概要
注:
ノードのスケジュール設定はエージェント ノードにのみ適用可能です。サーバー ノードには適用しないでください。
ノードのスケジュール設定は特に、ハードウェアの運用を効率化し、ML レプリカ (ポッド)、スキル、パイプラインを確実に処理するのに役立ちます。主に次の 2 つの状況で使用します。
- GPU ノードがある場合に、GPU を必要とするワークロードだけがそのノードでスケジュール設定されるようにする場合
- ML ワークロードの分離を向上させ、ML ワークロードが他のアプリケーションの妨げにならないようにする場合
既定では、必要なリソースを持つノードは Kubernetes スケジューラーによってすべて等しいと見なされます。
ML レプリカ (ポッド)、スキル、またはパイプラインのスケジュール設定を特定のノードに移動する方法は 2 つあり、どちらの方法も UiPath AI CenterTM でサポートされています。
- Assign Pods to Nodes using Node Affinity: this is useful when collocating ML pods with other pods on a node. Multiple labels can be applied to a node.
- Taints and Tolerations: intended for a dedicated node, either repelling all pods (
NoSchedule
), or imposing a low scheduling preference (PreferNoSchedule
) for pods that don't match the scheduling criteria. Although multiple taints can be applied to a node(s), node taints only support the “AND” Boolean logic.
ノード アフィニティは、ポッドを一連のノードに引き付けるポッド プロパティであり、優先条件または要件のいずれかとして設定します。これに対し、taint ではノードで一連のポッドを排除できます。
1 つ目の方法では、ノード ラベルを使用してレプリカとノードの間にアフィニティを作成します。一方、2 つ目の方法では、ノードに taint を割り当てることでアンチアフィニティを適用します。
ML レプリカの 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 を使用するか、ノード アフィニティと 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
ノード アフィニティと taint を組み合わせる
エージェント ノードを ML GPU ポッドへのサービング専用にし、同じノードへの ML CPU ポッドのスケジュール設定に影響を及ぼすには、ノード アフィニティと taint を組み合わせて使用できます。
kubectl taint node <node_name> nvidia.com/gpu=present:PreferNoSchedule
kubectl label node <node_name> node.type=aic.ml.cpu
2 か月前に更新