View a markdown version of this page

サービングキャパシティの自動スケーリング - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

サービングキャパシティの自動スケーリング

HyperPod での容量の供給は 2 つのレベルでスケールされます。Ray Serve はリクエストの負荷に合わせてクラスター内でレプリカをスケーリングし、マネージド Karpenter はクラスターノードをスケーリングしてそれらのレプリカを保持します。レプリカの自動スケーリングが最初に反応し、既存のノードが不足するとノードの自動スケーリングによって容量が追加されます。

Ray Serve レプリカの自動スケーリング

Ray Serve は、リクエストのロードに基づいてデプロイのレプリカの数を調整します。固定レプリカ数の代わりにデプロイで自動スケーリング設定を設定します。

deployments: - name: Model autoscaling_config: min_replicas: 1 max_replicas: 8 target_ongoing_requests: 5

レプリカの自動スケーリングでワーカーポッドを追加および削除するには、クラスターに対して Ray Autoscaler を有効にする必要があります。RayCluster 仕様または rayClusterConfigの enableInTreeAutoscaling: trueで を設定しますRayService。

spec: enableInTreeAutoscaling: true

これがないと、デプロイの はターゲットレプリカ数autoscaling_configを変更しますが、KubeRay はそれを満たすワーカーポッドを作成しません。

レプリカの自動スケーリングは、クラスターの現在のノード容量内に留まります。Ray Serve がノードが保持できる数よりも多くのレプリカを必要とする場合、ポッドはノードが使用可能になるまで保留中のままになります。

マネージド Karpenter によるノードの自動スケーリング

HyperPod の Managed Karpenter は、Ray ポッドが保留中のときにノードを追加し、アイドル状態のときにノードを削除するため、配信キャパシティは固定ノードプールなしで需要に従います。スポットインスタンスはノード容量でサポートされるため、中断耐性のある処理のコストを削減できます。セットアップと設定については、「」を参照してくださいSageMaker HyperPod EKS での Auto Scaling。

両方一緒に使用する

デプロイでレプリカの自動スケーリングを設定し、クラスターでノードの自動スケーリングを設定します。2 つのレベルは、リクエスト負荷の増加に応答するチェーン内で連携します。

  1. Ray Serve は負荷の増加を検出します。オートスケーラーは、進行中のリクエストが を超えていることを観察しtarget_ongoing_requests、別のレプリカを追加することにしました。

  2. KubeRay は新しいワーカーポッドを作成します。Ray Serve は KubeRay にワーカーグループをスケールするようにシグナルを送信し、KubeRay は新しいレプリカのポッドを作成します。

  3. 容量がない場合、ポッドは保留中のままです。既存のノードが新しいポッド (GPU またはメモリが不十分) に収まらない場合、ポッドは Pending状態になります。

  4. Managed Karpenter はノードをプロビジョニングします。HyperPod マネージド Karpenter は保留中のポッドを検出し、適切なインスタンスタイプを選択して、新しいノードを起動します。

  5. ノードが起動し、ポッドの実行が開始されます。ノードの準備ができてクラスターに参加すると、Kubernetes は保留中のポッドをそのノードにスケジュールします。新しいレプリカはモデルをロードし、リクエストの処理を開始します。

スケールダウンすると、プロセスは逆になります。Ray Serve はアイドルレプリカを削除し、KubeRay はワーカーポッドを削除し、マネージド Karpenter は統合ウィンドウの後に実行中のポッドがないノードを終了します。