Amazon SageMaker エンドポイントを呼び出すと、レイテンシーが高くなります。
簡単な説明
Amazon CloudWatch を使用して、単一モデルにサービスを提供する SageMaker エンドポイントのレイテンシーメトリクス ModelLatency と OverheadLatency をモニタリングします。
- ModelLatency とは、モデルが推論リクエストに応答するまでにかかる時間です(SageMaker から見た場合)。この期間には、モデルがリクエストを送信してレスポンスを取得するまでのローカル通信時間が含まれます。また、モデルコンテナ内の推論の完了時間も含まれます。
- OverheadLatency は、SageMaker がオーバーヘッドのある呼び出しリクエストに応答するまでにかかる時間です。この測定は、SageMaker がリクエストを受け取ってから応答を返すまで、ModelLatency を差し引いた時間続きます。
SageMaker マルチモデルエンドポイントを使用すると、CloudWatch で以下の追加メトリックスを使用できます。
- ModelLoadingWaitTime: 推論を実行する前に、呼び出しリクエストが、ターゲットモデルがダウンロードまたはロードされるまで待機する時間です。
- **ModelDownloadingTime:**Amazon Simple Storage Service (Amazon S3) からモデルをダウンロードするまでの時間。
- ModelLoadingTime: コンテナからモデルをロードする時間。
- ModelCacheHit: モデルが以前にロードされたエンドポイントに送信された InvokeEndpoint リクエストの数。
マルチモデルエンドポイントは、その存続期間を通じてモデルをロードおよびアンロードします。LoadedModelCount CloudWatch メトリックスを使用して、エンドポイントにロードされたモデルの数を表示できます。
解決策
高 ModelLatency
この待ち時間を短縮するには、次のいずれかのアクションを実行してください。
- SageMaker エンドポイントの外部でモデルのベンチマークを行い、パフォーマンスをテストします。
- SageMaker Neo がモデルをサポートしている場合は、そのモデルをコンパイルできます。SageMaker Neo は、精度を損なうことなく、10 分の 1 未満のメモリフットプリントで最大 2 倍の速さで実行するようにモデルを最適化します。
- AWS Inferentia がお使いのモデルをサポートしている場合は、そのモデルを Inferentia 用にコンパイルできます。これにより、AWS GPU ベースのインスタンスと比較して、スループットが最大 3 倍高くなり、推論あたりのコストが最大 45% 削減されます。
- CPU インスタンスを使用し、モデルが GPU アクセラレーションをサポートしている場合は、GPU インスタンスを使用してインスタンスに GPU アクセラレーションを追加します。
**注:**推論コードは、コードが推論をどのように処理するかによっては、モデルのレイテンシーに影響を与える可能性があります。コードに遅延があると、レイテンシーが増加します。
- エンドポイントを使いすぎると、モデルのレイテンシーが高くなる可能性があります。エンドポイントで使用できるインスタンスの数を動的に増減するには、エンドポイントに自動スケーリングを追加します。
高 OverheadLatency
複数の要因が OverheadLatency の原因となる可能性があります。これらの要因には、リクエストとレスポンスのペイロードサイズ、リクエストの頻度、リクエストの認証または承認が含まれます。
エンドポイントの初回呼び出しでは、コールドスタートが原因でレイテンシーが増加する可能性があります。これは、最初の呼び出しリクエストで想定されることです。この問題を回避するには、エンドポイントにテストリクエストを送信して事前にウォームアップします。リクエストの頻度が低いと、OverheadLatency が増加する可能性があることに注意してください。