推論のためのモデルをデプロイする - Amazon SageMaker

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

推論のためのモデルをデプロイする

Amazon では SageMaker、機械学習 (ML) モデルをデプロイして予測を行うことができます。推論 とも呼ばれます。 SageMaker は、ML インフラストラクチャとモデルのデプロイオプションを幅広く提供し、ML 推論のすべてのニーズを満たすのに役立ちます。これはフルマネージドサービスであり、MLOps ツールと統合されています。これにより、モデルのデプロイをスケールし、推論コストを削減し、本番環境でモデルをより効果的に管理し、運用上の負担を軽減できます。

機械学習モデルを構築してトレーニングしたら、 SageMaker 推論を使用してモデルから予測または推論 の取得を開始できます。 SageMaker 推論では、推論を返すエンドポイントを設定するか、モデルからバッチ推論を実行できます。

SageMaker 推論の使用を開始するには、以下のセクションを参照し、 を確認して、ユースケースに最適な機能推論オプションを決定します。

トラブルシューティングや参考情報、使い始めるのに役立つブログや例、よく寄せられるよくある質問については、リソースセクションを参照してください。

始める前に

これらのトピックは、1 つ以上の機械学習モデルを構築およびトレーニングし、それらのモデルをデプロイする準備ができていることを前提としています。モデルを にデプロイ SageMaker して推論を取得 SageMaker するために、 でモデルをトレーニングする必要はありません。独自のモデルがない場合は、 SageMakerの組み込みアルゴリズムまたは事前トレーニング済みモデルを使用することもできます。

を初めて使用し SageMaker 、デプロイするモデルをまだ選択していない場合は、「Amazon の開始方法 SageMaker」チュートリアルの手順を実行してください。チュートリアルを使用して、 が SageMakerデータサイエンスプロセスをどのように管理し、モデルのデプロイをどのように処理するかを理解します。モデルトレーニングの詳細については、「モデルのトレーニング」を参照してください。

追加情報、リファレンス、および例については、「リソース」を参照してください。

モデルをデプロイするための手順

推論エンドポイントの一般的なワークフローは以下のとおりです。

  • Amazon S3 SageMaker に保存されているモデルアーティファクトとコンテナイメージをポイントして、推論でモデルを作成します。

  • 推論オプションを選択します。詳細については、「推論オプション」を参照してください。

  • インスタンスタイプとエンドポイントの背後で必要なインスタンス数を選択して、 SageMaker 推論エンドポイント設定を作成します。Amazon SageMaker Inference Recommender を使用して、インスタンスタイプのレコメンデーションを取得できます。サーバーレス推論の場合は、モデルサイズに基づいて必要なメモリ設定を指定するだけです。

  • SageMaker 推論エンドポイントを作成します。

  • エンドポイントを呼び出して、推論をレスポンスとして受け取ります。

次の図は、ここまでのワークフローを示しています。

から推論を取得する方法を示す、前の段落で説明したワークフローの図 SageMaker。

これらのアクションは、 AWS コンソール、 AWS SDKs、 SageMaker Python SDK、 AWS CloudFormation または を使用して実行できます AWS CLI。

バッチ変換によるバッチ推論の場合は、モデルアーティファクトと入力データを指定し、バッチ推論ジョブを作成します。推論用のエンドポイントをホストする代わりに、 SageMaker は任意の Amazon S3 の場所に推論を出力します。

推論オプション

SageMaker には複数の推論オプションが用意されているため、ワークロードに最適なオプションを選択できます。

  • リアルタイム推論: リアルタイム推論は、低レイテンシや高スループットが要求されるオンライン推論に最適です。リアルタイム推論は、選択したインスタンスタイプに基づいて持続的なトラフィックを処理できる、永続的でフルマネージド型のエンドポイント (REST API) に使用します。リアルタイム推論は、最大 6 MB のペイロードサイズと 60 秒の処理時間のワークロードに対応できます。

  • サーバーレス推論: サーバーレス推論は、断続的または予測不可能なトラフィックパターンがある場合に最適です。 は基盤となるすべてのインフラストラクチャ SageMaker を管理するため、インスタンスやスケーリングポリシーを管理する必要はありません。使用した分のみに課金され、アイドル時間に対する支払いはありません。サーバーレス推論は、最大 4 MB のペイロードサイズと最大 60 秒の処理時間のワークロードに対応できます。

  • バッチ変換: バッチ変換は、大量のデータが事前に利用可能で、永続的なエンドポイントが必要ない場合のオフライン処理に適しています。また、データセットの前処理にも使用できます。バッチ変換は、サイズが GB 単位で、処理時間が何日にも及ぶ大規模なデータセットにも対応できます。

  • 非同期推論: 非同期推論は、リクエストをキューに入れる必要がある推論、および大きなペイロードサイズや長時間の処理を要する推論に最適です。非同期推論は、最大 1 GB のペイロードと最大 1 時間の長い処理時間のワークロードに対応できます。処理するリクエストがない場合は、エンドポイントを 0 にスケールダウンすることもできます。

次の図は、ここまでの情報をフローチャートにまとめたもので、ユースケースに最適なオプションを選択するのに役立ちます。

各 SageMaker 推論オプションの利点を示す図。すべての利点はこれまでの段落で説明されています。

高度なエンドポイントオプション

リアルタイム推論では、以下の高度な推論オプションを使用してパフォーマンスとコストをさらに最適化できます。

  • 1 つのエンドポイントの背後にある 1 つのコンテナで複数のモデルをホストする – 同じフレームワークを使用し、コンテナを共有できる複数のモデルがある場合は、このオプションを使用します。このオプションは、エンドポイントの利用率を高め、デプロイのオーバーヘッドを減らすことでコストを最適化するのに役立ちます。

  • 1 つのエンドポイントの背後に異なるコンテナを使用する複数のモデルをホストする – このオプションは、異なるフレームワークを使用し、独自のコンテナを必要とする複数のモデルがある場合に使用します。マルチモデルエンドポイントには多くの利点があり、さまざまなフレームワークやモデルをデプロイできます。

  • シリアル推論パイプライン — エンドポイントの背後にある前処理と後処理のロジックでモデルをホストする場合は、このオプションを使用します。推論パイプラインは によって完全に管理 SageMaker され、すべてのコンテナが同じ Amazon EC2 インスタンスでホストされるため、レイテンシーが低くなります。

独自の R モデルを取り込む

で既存の Docker コンテナを使用するには SageMaker、「」を参照してください独自の Docker コンテナを と連携させる SageMaker

新しい Docker コンテナを作成し、独自の推論コードの実行方法に関するより高度なガイダンスを受け取るには、以下のリンクを参照してください。

次のステップ

エンドポイントがあり、一般的な推論ワークフローを理解したら、 SageMaker 推論内で次の機能を使用して推論ワークフローを改善できます。

モニタリング

モデルの精度やドリフトなどの指標を使用してモデルを時系列的に追跡するには、Model Monitor を使用します。Model Monitor では、モデルの品質に偏差がある場合に通知するアラートを設定できます。詳細については、 モデルモニタードキュメントを参照してください。

モデルのデプロイとエンドポイントを変更するイベントのモニタリングに使用できるツールの詳細については、「Amazon SageMakerのモニタリング」を参照してください。例えば、Amazon メトリクスを使用して、呼び出しエラーやモデルレイテンシーなどの CloudWatch メトリクスを通じてエンドポイントの状態をモニタリングできます。SageMaker エンドポイント呼び出しメトリクスは、エンドポイントのパフォーマンスに関する貴重な情報を提供します。

モデルのデプロイのための CI/CD

機械学習ソリューションを にまとめるには SageMaker、SageMakerMLOps を使用できます。この機能を使用すると、機械学習ワークフローのステップを自動化して、CI/CD を実践できます。MLOps プロジェクトテンプレートを使用すると、 SageMaker MLOps プロジェクトのセットアップと実装に役立ちます。 は、CI/CD システムを作成するための独自のサードパーティー Git リポジトリの使用 SageMaker もサポートしています。

ML パイプラインについては、モデルレジストリを使用してモデルバージョンとモデルのデプロイと自動化を管理します。

デプロイガードレール

本番環境に影響を与えずに本番稼働中にモデルを更新する場合、デプロイガードレールを使用できます。デプロイガードレールは、Inference SageMaker のモデルデプロイオプションのセットで、本番環境で機械学習モデルを更新します。このフルマネージドデプロイオプションを使うと、本番環境の現在のモデルから新しいモデルへの切り替えをコントロールできます。トラフィックシフトモードを使用すると、トラフィックシフトプロセスをきめ細かく制御できます。また、自動ロールバックなどの組み込みの保護機能により、問題を早期に発見できます。

デプロイガードレールの詳細については、デプロイガードレールのドキュメントを参照してください。

Inferentia

大規模な機械学習および深層学習アプリケーションを実行する必要がある場合は、リアルタイムエンドポイントでInf1インスタンスを使用できます。このインスタンスタイプは、画像や音声の認識、自然言語処理 (NLP)、パーソナライゼーション、予測、不正検出などのユースケースに適しています。

Inf1 インスタンスは、機械学習推論アプリケーションをサポートし、Inferentia チップを搭載するように構築されています。 AWS Inf1インスタンスは、GPU ベースのインスタンスよりもスループットが高く、推論あたりのコストが低くなります。

Inf1 インスタンスにモデルをデプロイするには、Neo SageMaker でモデルをコンパイルし、デプロイオプションのInf1インスタンスを選択します。詳細については、 SageMaker 「Neo を使用してモデルのパフォーマンスを最適化する」を参照してください。

モデルパフォーマンスの最適化

SageMaker は、機械学習モデルをデプロイするときに、リソースを管理し、推論パフォーマンスを最適化する機能を提供します。 SageMakerの組み込みアルゴリズムと構築済みモデル 、および機械学習用に開発された構築済み Docker イメージ を使用できます。

モデルをトレーニングしてデプロイ用に最適化するには、「構築済みの Docker イメージ SageMaker Neo を使用してモデルのパフォーマンスを最適化する」を参照してください。 SageMaker Neo を使用すると、 TensorFlow、Apache MXNetモデルをトレーニングできます。 PyTorch XGBoost その後、それらを最適化し、ARM、Intel、および Nvidia プロセッサにデプロイできます。

Autoscaling

エンドポイントへのトラフィックの量が変化する場合は、オートスケーリングを試してください。例えば、ピーク時には、リクエストを処理するためにより多くのインスタンスが必要になる場合があります。ただし、トラフィックが少ない時間帯は、コンピューティングリソースの使用を減らすことをお勧めします。ワークロードの変動に応じて、プロビジョニングされたインスタンスの数を動的に調整するには、Amazon SageMaker モデルの自動スケーリング を参照してください。

予測不可能なトラフィックパターンがある場合、またはスケーリングポリシーを設定しない場合は、エンドポイントにサーバーレス推論を使用することもできます。次に、 が自動スケーリング SageMaker を管理します。トラフィックが少ない間、 はエンドポイントを SageMaker スケールダウンし、トラフィックが増加すると、 はエンドポイントを SageMaker スケールアップします。詳細については、サーバーレス推論 ドキュメントを参照してください。