6

Amazon EKS (Kubernetes) で Argo と KFServing を使用して InferenceService をセットアップしています。私たちのチームは、環境ごとに 1 つの EKS クラスターを持っていることを知っておくことが重要です。つまり、クラスター内に制御できない複数のアプリケーションが存在する可能性があります。

これまでにセットアップしたものは次のとおりです

  1. モデルをトレーニングしてデプロイするためのロジックを含む Docker イメージを Amazon ECR にプッシュします。
  2. argo#1 でトレーニングを開始するワークフローを送信するために使用します。argo を kubernetes クラスターにインストールすると、そのコンポーネントが GPU ノードに割り当てられることがあります。
  3. KFServingも使用しています。KFServing を使用すると、GPU を自動スケールアップおよびスケールダウンできます。具体的には、使用されていないときにゼロにスケールします。KFServing のコンポーネントは、クラスターに適用するときに GPU ノードにも割り当てられます。

#2 と #3 (上記) の現在の設定では、KFServing がゼロにスケールダウンする機能を禁止しているようです。これらのコンポーネントを GPU に搭載すると、GPU をスケールダウンできないことが懸念されます。

GPU ノードに割り当てる必要があるポッドはどれですか?

(オプション 1) argo ワークフロー ポッドのみを割り当てて、残りを撃退する必要がありますか?

- また -

(オプション 2) GPU ノード内で正常に動作するために必要な他の kfserving コンポーネントはありますか?

  • オプション 1: argo ワークフロー ポッド以外のすべてのポッドが GPU ノードに入らないようにするにはどうすればよいですか? 念のために言っておきますが、制御できないアプリケーションが他にもあるため、すべてのポッドにノード アフィニティを追加することは非現実的です。

  • オプション 2:これらの GPU ノードに kfserving コンポーネントがある場合、GPU ノードをゼロにスケールするにはどうすればよいですか? スケールダウンは、ノードにポッドがないことを意味するという印象を受けました。

4

1 に答える 1

5

tl;dr taintsを使用できます。

GPU ノードに割り当てる必要があるポッドはどれですか?

GPU を必要とするジョブのポッド。

トレーニングジョブに GPU が必要な場合は、トレーニング/デプロイ デプロイの仕様でnodeSelectorとを使用して割り当てる必要があります。こちらの良い例を参照してください。tolerations

モデルが CV/NLP (多数の行列乗算) の場合、GPU にも推論サービスが必要な場合があります。その場合は、ここで説明されているように、その仕様で要求する必要があります。

argo ワークフロー ポッドのみを割り当てて、残りを撃退する必要がありますか?

はい、推論サービスが GPU を必要としない場合。

GPU ノード内で正常に動作するために必要な他の kfserving コンポーネントはありますか?

いいえ、唯一の kfserving コンポーネントは でありkfserving-controller、inferenceservice の istio&knative リソースの作成を調整するだけなので、gpu は必要ありません。

仕様で GPU が要求されていない GPU ノードグループで実行されている推論サービスがある場合、ノードグループが汚染効果を持つように構成されていないことを意味しますNoScheduleドキュメントで説明されているように、eksctl 構成の gpu ノードグループにテイントがあることを確認してください。

于 2021-02-27T21:16:54.850 に答える