「Amazon SageMaker のルーティング戦略を使用して、リアルタイムの推論レイテンシを最小限に抑えましょう」
Using Amazon SageMaker's routing strategy to minimize real-time inference latency
Amazon SageMakerは、リアルタイム推論のための機械学習(ML)モデルの展開を容易にし、AWS InferentiaなどのCPUおよびアクセラレータを備えた多様なMLインスタンスを提供しています。完全に管理されたサービスとして、モデルの展開をスケーリングし、推論コストを最小限に抑え、運用負荷を削減しながらモデルを効果的に管理することができます。SageMakerのリアルタイム推論エンドポイントは、HTTPsエンドポイントとMLインスタンスで構成され、高可用性のために複数のアベイラビリティーゾーンに展開されます。SageMakerのアプリケーション自動スケーリングは、ワークロードの変化に応じてモデルのMLインスタンス数を動的に調整することができます。エンドポイントは、ラウンドロビンアルゴリズムを使用して、受信したリクエストを均等にMLインスタンスに分散させます。
インスタンスに展開されたMLモデルが多数のクライアントからAPIコールを受ける場合、リクエストとレスポンスに変動が少ない場合にはランダムなリクエストの分配が非常に効果的です。しかし、生成的なAIワークロードが存在するシステムでは、リクエストとレスポンスには非常に大きな変動があることがあります。このような場合、ランダムなロードバランシングではなく、インスタンスの容量と利用率を考慮してロードバランスを行うことがしばしば望ましいです。
本記事では、SageMakerの最も未完了リクエスト(LOR)ルーティング戦略について説明し、容量と利用率を考慮したMLインスタンスにおいて特定の種類のリアルタイム推論ワークロードのレイテンシを最小限に抑える方法について説明します。デフォルトのルーティングメカニズムと比較してその利点を紹介し、どのようにLORをモデルの展開に有効化するかについて説明します。最後に、ランダムルーティング戦略と比較したLORによるレイテンシの改善の比較分析を行います。
SageMaker LOR戦略
デフォルトでは、SageMakerのエンドポイントはランダムなルーティング戦略を持っています。SageMakerは現在、LOR戦略をサポートしており、SageMakerが最適なルートを選択してリクエストを適切なインスタンスに送信することができます。SageMakerは、エンドポイントの背後にあるインスタンスの負荷、および各インスタンスに展開されているモデルまたは推論コンポーネントの状態を監視することで、これを実現しています。
- 「Amazon SageMakerを使用して、クラシカルなMLおよびLLMsを簡単にパッケージ化してデプロイする方法、パート2:SageMaker Studioでのインタラクティブなユーザーエクスペリエンス」
- 「Amazon SageMakerを使用してクラシカルなMLとLLMsを簡単にパッケージ化し、デプロイする方法 – パート1:PySDKの改善」
- 新しい – Code-OSS VS Codeオープンソースに基づくコードエディタが、Amazon SageMaker Studioで利用可能になりました
以下のインタラクティブな図は、モデルエンドポイントに対して来たリクエストがランダムな方法でMLインスタンスに転送されるデフォルトのルーティングポリシーを示しています。
以下のインタラクティブな図は、SageMakerが最も未完了のリクエスト数が少ないインスタンスにリクエストをルーティングするルーティング戦略を示しています。
一般的に、LORルーティングは、基幹モデルや生成的なAIモデルにおいて、モデルが数百ミリ秒から数分で応答する場合に適しています。レイテンシが低いモデルの場合(数百ミリ秒まで)、ランダムなルーティングの方がより有益です。ただし、ワークロードに最適なルーティングアルゴリズムをテストして特定することをおすすめします。
SageMakerルーティング戦略の設定方法
SageMakerでは、エンドポイントのEndpointConfiguration
を作成する際にRoutingStrategy
パラメータを設定することができます。SageMakerでサポートされている異なるRoutingStrategy
の値は以下のとおりです。
LEAST_OUTSTANDING_REQUESTS
RANDOM
以下は、LORが有効な推論エンドポイント上にモデルを展開する例です。
-
RoutingStrategy
をLEAST_OUTSTANDING_REQUESTS
として設定してエンドポイント構成を作成します:endpoint_config_response = sm_client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": "variant1", "ModelName": model_name, "InstanceType": "instance_type", "InitialInstanceCount": initial_instance_count, ….. "RoutingConfig": { 'RoutingStrategy': 'LEAST_OUTSTANDING_REQUESTS'} }, ],)
-
エンドポイント構成を使用してエンドポイントを作成します(変更なし):
create_endpoint_response = sm_client.create_endpoint( EndpointName="endpoint_name", EndpointConfigName="endpoint_config_name")
パフォーマンス結果
エンドツーエンドの推論レイテンシとスループットを測定するためにパフォーマンスベンチマーキングを実行しました。デフォルトのルーティングとスマートルーティングのエンドポイントでホストされるcodegen2-7Bモデルについてのものです。 CodeGen2モデルは自己回帰的言語モデルの一種で、英語の提示を受けると実行可能なコードを生成します。
分析では、同時ユーザー数が増加するにつれて各テスト実行ごとに各エンドポイントのml.g5.24xlインスタンスの数を増やしました。次のテーブルに示すように、
テスト | 同時ユーザー数 | インスタンス数 |
1 | 4 | 1 |
2 | 20 | 5 |
3 | 40 | 10 |
4 | 60 | 15 |
5 | 80 | 20 |
インスタンス数を5から20に増やすと、エンドポイントごとのエンドツーエンドのP99レイテンシで4〜33%の改善が見られました。
同様に、インスタンス数を5から20に増やすと、1分あたりの各インスタンスのスループットが15〜16%改善されました。
これは、スマートルーティングがエンドポイント間のトラフィック分散を改善し、エンドツーエンドのレイテンシと全体的なスループットを向上させることができることを示しています。
結論
この記事では、SageMakerのルーティング戦略と新しいLORルーティングの有効化オプションについて説明しました。 LORの有効化方法と、モデルデプロイメントへの影響について説明しました。 パフォーマンステストでは、リアルタイム推論中のレイテンシとスループットの改善が示されました。 SageMakerのルーティング機能について詳しくは、ドキュメントを参照してください。 推論ワークロードを評価し、適切に設定されているかどうかを確認することをお勧めします。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles