

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

# マルチモデルエンドポイント
<a name="multi-model-endpoints"></a>

マルチモデルエンドポイントは、多数のモデルをデプロイするためのスケーラブルで費用対効果の高いソリューションを提供します。同じリソース群と共有サービングコンテナを使用して、すべてのモデルをホストします。これにより、単一モデルエンドポイントを使用する場合と比較して、エンドポイントの使用率が向上し、ホスティングコストが削減されます。また、Amazon SageMaker AI によってメモリへのモデルのロードが管理され、エンドポイントへのトラフィックパターンに基づいてモデルがスケーリングされるため、デプロイのオーバーヘッドも削減されます。

次の図は、マルチモデルエンドポイントが単一モデルのエンドポイントと比較してどのように機能するかを示しています。

![\[マルチモデルエンドポイントでホストする方法と、単一モデルのエンドポイントでモデルをホストする方法の比較を示す図。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/multi-model-endpoints-diagram.png)


マルチモデルエンドポイントは、共有サービングコンテナ上で同じ ML フレームワークを使用する多数のモデルをホストするのに理想的です。アクセス頻度の高いモデルとアクセス頻度の低いモデルが混在している場合、マルチモデルエンドポイントは、より少ないリソースと高いコスト削減でトラフィックを効率的に処理できます。使用頻度の低いモデルを呼び出すときに発生する、コールドスタート関連のレイテンシーのペナルティをアプリケーション側で許容する必要があります。

マルチモデルエンドポイントは、CPU と GPU ベースのモデル両方のホスティングをサポートします。GPU ベースのモデルを使用すると、エンドポイントとその基盤となる高速コンピューティングインスタンスの使用率が高まるため、モデルのデプロイコストを削減できます。

マルチモデルエンドポイントにより、モデル間でメモリリソースのタイムシェアリングが可能になります。これは、モデル間でサイズと呼び出しレイテンシーが酷似している場合に最適です。この場合、マルチモデルエンドポイントは、すべてのモデル間でインスタンスを効果的に使用できます。1 秒あたりのトランザクション (TPS) やレイテンシーの要件が非常に高いモデルがある場合は、専用のエンドポイントでそれらのモデルをホストすることをお勧めします。

以下の機能を備えたマルチモデルエンドポイントを使用できます。
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html) VPCs
+ [Auto scaling](multi-model-endpoints-autoscaling.md)
+ [シリアル推論パイプライン](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html) (ただし、推論パイプラインに含めることができるマルチモデル対応コンテナは 1 つだけです)
+ A/B テスト

 AWS SDK for Python (Boto) または SageMaker AI コンソールを使用して、マルチモデルエンドポイントを作成できます。CPU ベースのマルチモデルエンドポイントでは、[Multi Model Server](https://github.com/awslabs/multi-model-server) ライブラリを統合することで、カスタム構築コンテナでエンドポイントを作成できます。

**Topics**
+ [マルチモデルエンドポイントの仕組み](#how-multi-model-endpoints-work)
+ [マルチモデルエンドポイントのサンプルノートブック](#multi-model-endpoint-sample-notebooks)
+ [マルチモデルエンドポイントでサポートされるアルゴリズム、フレームワーク、インスタンス](multi-model-support.md)
+ [マルチモデルエンドポイントのデプロイのためのインスタンスの推奨事項](multi-model-endpoint-instance.md)
+ [マルチモデルエンドポイントを作成する](create-multi-model-endpoint.md)
+ [マルチモデルエンドポイントを呼び出す](invoke-multi-model-endpoint.md)
+ [モデルの追加または削除](add-models-to-endpoint.md)
+ [SageMaker AI マルチモデルエンドポイント用の独自のコンテナを構築する](build-multi-model-build-container.md)
+ [マルチモデルエンドポイントのセキュリティ](multi-model-endpoint-security.md)
+ [マルチモデルエンドポイントのデプロイの CloudWatch メトリクス](multi-model-endpoint-cloudwatch-metrics.md)
+ [SageMaker AI マルチモデルエンドポイントモデルのキャッシュ動作を設定する](multi-model-caching.md)
+ [マルチモデルエンドポイントデプロイの自動スケーリングポリシーの設定](multi-model-endpoints-autoscaling.md)

## マルチモデルエンドポイントの仕組み
<a name="how-multi-model-endpoints-work"></a>

 SageMaker AI は、コンテナのメモリ内にある、マルチモデルエンドポイントでホストされるモデルのライフサイクルを管理します。SageMaker AI では、エンドポイントの作成時に Amazon S3 バケットからコンテナにすべてのモデルをダウンロードするのではなく、モデルを呼び出したときに動的にモデルをロードしキャッシュします。SageMaker AI が特定のモデルの呼び出しリクエストを受信すると、次の処理が行われます。

1. エンドポイントの背後にあるインスタンスにリクエストをルーティングします。

1. S3 バケットからインスタンスのストレージボリュームにモデルをダウンロードします。

1. その高速コンピューティングインスタンス上のコンテナのメモリ (CPU と GPU ベースのインスタンスのどちらを使用しているかによって CPU または GPU) にモデルをロードします。モデルがコンテナのメモリにすでにロードされている場合、SageMaker AI はモデルをダウンロードしてロードする必要がないため、呼び出しが速くなります。

SageMaker AI は、モデルがすでにロードされているインスタンスに、モデルへのリクエストを引き続きルーティングします。ただし、モデルが多数の呼び出しリクエストを受信し、マルチモデルエンドポイントに追加のインスタンスがある場合、SageMaker AI はトラフィックに対応するために一部のリクエストを別のインスタンスにルーティングします。モデルが 2 番目のインスタンスにまだロードされていない場合、モデルはそのインスタンスのストレージボリュームにダウンロードされ、コンテナのメモリにロードされます。

インスタンスのメモリ使用率が高く、SageMaker AI がメモリに別のモデルをロードする必要がある場合、そのインスタンスのコンテナから未使用のモデルをアンロードして、モデルをロードするのに十分なメモリを確保します。アンロードされたモデルはインスタンスのストレージボリュームに残り、S3 バケットから再度ダウンロードすることなく、後でコンテナのメモリにロードできます。インスタンスのストレージボリュームが最大容量に達すると、SageMaker AI はストレージボリュームから未使用のモデルを削除します。

モデルを削除するには、リクエストの送信を停止し、そのモデルを S3 バケットから削除します。SageMaker AI は、サービングコンテナでマルチモデルエンドポイントの機能を提供します。マルチモデルエンドポイントに対するモデルの追加と削除では、エンドポイント自体を更新する必要はありません。モデルを追加するには、そのモデルを S3 バケットにアップロードして、その呼び出しを開始します。この機能を使用するためにコードを変更する必要はありません。

**注記**  
マルチモデルエンドポイントを更新すると、マルチモデルエンドポイントのスマートルーティングがトラフィックパターンに適応するため、エンドポイントでの初回呼び出しリクエストの待ち時間が長くなる可能性があります。ただし、トラフィックパターンを学習すると、最も頻繁に使用されるモデルのレイテンシーは短くなります。使用頻度の低いモデルでは、モデルがインスタンスに動的に読み込まれるため、コールドスタートのレイテンシーが発生する可能性があります。

## マルチモデルエンドポイントのサンプルノートブック
<a name="multi-model-endpoint-sample-notebooks"></a>

マルチモデルエンドポイントの使用方法の詳細については、以下のサンプルノートブックを試すことができます。
+ CPU ベースのインスタンスを使用するマルチモデルエンドポイントの例。
  + [マルチモデルエンドポイント XGBoost サンプルノートブック](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_xgboost_home_value/xgboost_multi_model_endpoint_home_value.html) – このノートブックでは、複数の XGBoost モデルをエンドポイントにデプロイする方法を説明します。
  + [マルチモデルエンドポイント BYOC サンプルノートブック](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_bring_your_own/multi_model_endpoint_bring_your_own.html) – このノートブックでは、SageMaker AI のマルチモデルエンドポイントをサポートするカスタムコンテナを設定およびデプロイする方法を示します。
+ GPU ベースのインスタンスを使用するマルチモデルエンドポイントの例。
  + [Amazon SageMaker AI マルチモデルエンドポイント (MME) を使用して GPU で複数の深層学習を実行する](https://github.com/aws/amazon-sagemaker-examples/blob/main/multi-model-endpoints/mme-on-gpu/cv/resnet50_mme_with_gpu.ipynb) – このノートブックでは、NVIDIA Triton Inference コンテナを使用して ResNet-50 モデルをマルチモデルエンドポイントにデプロイする方法を示します。

SageMaker AI で前のサンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法の詳細については、「[Amazon SageMaker ノートブックインスタンス](nbi.md)」を参照してください。ノートブックインスタンスを作成して開いた後、**[SageMaker AI サンプル]** タブを選択して、すべての SageMaker AI サンプルのリストを表示します。マルチモデルエンドポイントノートブックは **[高度な機能]** セクションにあります。ノートブックを開くには、その [**Use (使用)**] タブを選択し、[**Create copy (コピーを作成)**] を選択します。

マルチモデルエンドポイントのユースケースの詳細については、以下のブログとリソースを参照してください。
+ 動画: [SageMaker AI で何千ものモデルをホスティングする](https://www.youtube.com/watch?v=XqCNTWmHsLc&t=751s)
+ 動画: [SaaS のための SageMaker AI ML](https://www.youtube.com/watch?v=BytpYlJ3vsQ)
+ ブログ: [マルチテナント SaaS ユースケースの機械学習推論をスケーリングする方法](https://aws.amazon.com/blogs/machine-learning/how-to-scale-machine-learning-inference-for-multi-tenant-saas-use-cases/)
+ ケーススタディ: [Veeva Systems](https://aws.amazon.com/partners/success/advanced-clinical-veeva/)