リアルタイム推論用のモデルをデプロイする - Amazon SageMaker

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

リアルタイム推論用のモデルをデプロイする

重要

Amazon SageMaker Studio または Amazon SageMaker Studio Classic が Amazon SageMaker リソースを作成できるようにするカスタム IAM ポリシーは、それらのリソースにタグを追加するアクセス許可も付与する必要があります。Studio と Studio Classic は、作成したリソースに自動的にタグ付けするため、リソースにタグを追加するアクセス許可が必要です。IAM ポリシーで Studio と Studio Classic がリソースの作成を許可しているが、タグ付けを許可していない場合、リソースの作成時にAccessDenied「」エラーが発生する可能性があります。詳細については、「リソースにタグ付け SageMakerするためのアクセス許可を提供する」を参照してください。

AWS Amazon の マネージドポリシー SageMaker SageMaker リソースを作成するアクセス許可を付与する には、それらのリソースの作成中にタグを追加するアクセス許可が既に含まれています。

SageMaker ホスティングサービスを使用してモデルをデプロイするには、いくつかのオプションがあります。 SageMaker Studio を使用してモデルをインタラクティブにデプロイできます。または、 SageMaker Python AWS SDK や SDK for Python (Boto3) などの SDK を使用してプログラムでモデルをデプロイすることもできます。を使用してデプロイすることもできます AWS CLI。

開始する前に

SageMaker モデルをデプロイする前に、以下を見つけてメモします。

  • Amazon S3 バケット AWS リージョン がある 。

  • モデルアーティファクトが保存される Amazon S3 URI パス

  • の IAM ロール SageMaker

  • 推論コードを含むカスタムイメージの Docker Amazon ECR URI レジストリパス、または でサポートされる組み込み Docker イメージのフレームワークとバージョン AWS

各 AWS のサービス で使用できる のリストについては AWS リージョン、「リージョンマップ」と「エッジネットワーク」を参照してください。IAM ロールの作成については、「IAM ロールの作成」を参照してください。

重要

モデルアーティファクトが保存されている Amazon S3 バケットは、作成するモデル AWS リージョン と同じ にある必要があります。

複数のモデルで共有リソース使用率

Amazon では、エンドポイントに 1 つ以上のモデルをデプロイできます SageMaker。複数のモデルがエンドポイントを共有する場合、ML コンピューティングインスタンス、CPUs、アクセラレーターなど、そこでホストされているリソースを共同で使用します。エンドポイントに複数のモデルをデプロイする最も柔軟な方法は、各モデルを推論コンポーネント として定義することです。

推論コンポーネント

推論コンポーネントは、モデルをエンドポイントにデプロイするために使用できる SageMaker ホスティングオブジェクトです。推論コンポーネント設定で、モデル、エンドポイント、およびモデルがエンドポイントがホストするリソースを利用する方法を指定します。モデルを指定するには、 SageMaker モデルオブジェクトを指定するか、モデルのアーティファクトとイメージを直接指定できます。

設定では、必要な CPU コア、アクセラレーター、メモリをモデルに割り当てる方法を調整することで、リソース使用率を最適化できます。エンドポイントに複数の推論コンポーネントをデプロイできます。各推論コンポーネントには 1 つのモデルとそのモデルのリソース使用率のニーズが含まれます。

推論コンポーネントをデプロイした後、 SageMaker API で InvokeEndpoint アクションを使用すると、関連するモデルを直接呼び出すことができます。

推論コンポーネントには次の利点があります。

柔軟性

推論コンポーネントは、モデルのホストの詳細をエンドポイント自体から切り離します。これにより、モデルがエンドポイントでホストおよび提供される方法をより柔軟に制御できます。同じインフラストラクチャで複数のモデルをホストでき、必要に応じてエンドポイントにモデルを追加または削除できます。各モデルは個別に更新できます。

スケーラビリティ

ホストする各モデルのコピー数を指定でき、最小コピー数を設定して、モデルがリクエストを処理するために必要な量でロードされるようにできます。推論コンポーネントのコピーをゼロにスケールダウンできるため、別のコピーをスケールアップするスペースを確保できます。

SageMaker は、以下を使用してモデルをデプロイするときに推論コンポーネントとしてパッケージ化します。

  • SageMaker Studio Classic。

  • Model オブジェクトをデプロイする SageMaker Python SDK (エンドポイントタイプを に設定)EndpointType.INFERENCE_COMPONENT_BASED

  • エンドポイントにデプロイするInferenceComponentオブジェクト AWS SDK for Python (Boto3) を定義する 。

SageMaker Studio でモデルをデプロイする

SageMaker Studio を使用してインタラクティブにモデルを作成してデプロイするには、次のステップを実行します。Studio の詳細については、Studio のドキュメントを参照してください。さまざまなデプロイシナリオの詳細なチュートリアルについては、ブログ「Amazon でクラシック ML モデルと LLMs SageMaker 」を参照してください。

アーティファクトとアクセス許可を準備する

SageMaker Studio でモデルを作成する前に、このセクションを完了してください。

Studio でアーティファクトを持ち込んでモデルを作成するには、次の 2 つのオプションがあります。

  1. モデルアーティファクト、カスタム推論コード、およびrequirements.txtファイルにリストされている依存関係を含むパッケージ済みのtar.gzアーカイブを取り込むことができます。

  2. SageMaker はアーティファクトをパッケージ化できます。raw モデルアーティファクトと依存関係をrequirements.txtファイルに含めるだけで、デフォルトの推論コードを提供 SageMaker できます (または、デフォルトのコードを独自のカスタム推論コードで上書きできます)。 SageMaker は PyTorch、次のフレームワークでこのオプションをサポートします。、XGBoost 。

モデル、 AWS Identity and Access Management (IAM) ロール、および Docker コンテナ (またはコンテナ SageMaker が事前に構築されている必要なフレームワークとバージョン) を持ち込むだけでなく、Studio を通じて SageMakerモデルを作成およびデプロイするアクセス許可も付与する必要があります。

AmazonSageMakerFullアクセスポリシーを IAM ロールにアタッチして、 SageMaker およびその他の関連サービスにアクセスできるようにする必要があります。Studio でインスタンスタイプの料金を確認するには、AWS PriceListServiceFullアクセスポリシーもアタッチする必要があります (ポリシー全体をアタッチしない場合は、 pricing:GetProductsアクション)。

モデルの作成時にモデルアーティファクトをアップロードする場合 (または推論レコメンデーション用のサンプルペイロードファイルをアップロードする場合)、Amazon S3 バケットを作成する必要があります。バケット名には、 という単語のプレフィックスを付ける必要がありますSageMaker。または の代替大文字 SageMaker も使用可能ですSagemakersagemaker

バケット命名規則 を使用することをお勧めしますsagemaker-{Region}-{accountID}。このバケットは、アップロードしたアーティファクトを保存するために使用されます。

バケットを作成したら、次の CORS (クロスオリジンリソース共有) ポリシーをバケットにアタッチします。

[ { "AllowedHeaders": ["*"], "ExposeHeaders": ["Etag"], "AllowedMethods": ["PUT", "POST"], "AllowedOrigins": ['https://*.sagemaker.aws'], } ]

次のいずれかの方法を使用して、CORS ポリシーを Amazon S3 バケットにアタッチできます。

デプロイ可能なモデルを作成する

このステップでは、目的のコンテナとフレームワーク、カスタム推論コード、ネットワーク設定などの追加の仕様とともにアーティファクトを提供すること SageMaker で、 でモデルのデプロイ可能なバージョンを作成します。

Studio でデプロイ可能なモデルを作成するには、次の手順 SageMaker を実行します。

  1. SageMaker Studio アプリケーションを開きます。

  2. 左のナビゲーションペインで [モデル] を選択します。

  3. デプロイ可能なモデルタブを選択します。

  4. デプロイ可能なモデルページで、 の作成 を選択します。

  5. デプロイ可能なモデルの作成ページのモデル名フィールドに、モデルの名前を入力します。

デプロイ可能なモデルの作成ページには、他にもいくつかのセクションがあります。

コンテナ定義セクションは次のスクリーンショットのようになります。

Studio でモデルを作成するためのコンテナ定義セクションのスクリーンショット。
コンテナ定義セクションで、次の操作を行います。
  1. コンテナタイプ で、 SageMaker マネージドコンテナを使用する場合はビルド済みコンテナを選択するか、独自のコンテナがある場合は独自のコンテナを使用するを選択します。

  2. 構築済みコンテナ を選択した場合は、使用するコンテナフレームワーク フレームワークバージョン ハードウェアタイプを選択します。

  3. 「独自のコンテナを使用」を選択した場合はコンテナイメージ への ECR パスの Amazon ECR パスを入力します。

次に、次のスクリーンショットのようなアーティファクトセクションに入力します。

Studio でモデルを作成するための Artifacts セクションのスクリーンショット。
Artifacts セクションで、次の操作を行います。
  1. がモデルアーティファクト (PyTorch または XGBoost ) のパッケージ化に SageMaker サポートするフレームワークのいずれかを使用している場合は、アーティファクト でアーティファクトのアップロード オプションを選択できます。このオプションを使用すると、raw モデルアーティファクト、カスタム推論コード、および requirements.txt ファイルを指定するだけで、アーカイブのパッケージ化 SageMaker を処理できます。以下の操作を実行します。

    1. Artifacts で、アーティファクトのアップロードを選択してファイルの提供を続行します。それ以外の場合は、モデルファイル、推論コード、requirements.txtファイルを含むtar.gzアーカイブが既にある場合は、事前にパッケージ化されたアーティファクトへの入力 S3 URI を選択します。

    2. アーティファクトのアップロードを選択した場合は、S3 バケット に、アーティファクト SageMaker をパッケージ化した後にアーティファクトを保存するバケットへの Amazon S3 パスを入力します。次に、次の手順を実行します。

    3. モデルアーティファクトのアップロード で、モデルファイルをアップロードします。

    4. 推論コード で、推論の提供に が提供するデフォルトコードを使用する場合は、デフォルトの推論コードを使用する を選択します。 SageMaker それ以外の場合は、カスタマイズした推論コードをアップロードを選択して独自の推論コードを使用します。

    5. アップロード requirements.txt では、ランタイムにインストールする依存関係を一覧表示するテキストファイルをアップロードします。

  2. モデルアーティファクトのパッケージ化に SageMaker をサポートするフレームワークを使用していない場合、Studio はパッケージ化済みアーティファクトオプションを表示し、すでにtar.gzアーカイブとしてパッケージ化されているすべてのアーティファクトを提供する必要があります。以下の操作を実行します。

    1. アーカイブが既に Amazon S3 にアップロードされている場合は、パッケージ化されたアーティAmazon S3ファクト で、パッケージ化されたモデルアーティファクトの入力 S3 URI S3 を選択します。 tar.gzアーカイブを に直接アップロードする場合は、パッケージ済みのモデルアーティファクトをアップロードを選択します SageMaker。

    2. パッケージ化されたモデルアーティファクト の入力 S3 URI を選択した場合は、Amazon S3 S3 パスを入力します。それ以外の場合は、ローカルマシンからアーカイブを選択してアップロードします。

次のセクションはセキュリティ で、次のスクリーンショットのようになります。

Studio でモデルを作成するためのセキュリティセクションのスクリーンショット。
セキュリティセクションで、次の操作を行います。
  1. IAM ロール には、IAM ロールの ARN を入力します。

  2. (オプション) Virtual Private Cloud (VPC) では、モデル設定とアーティファクトを保存するための Amazon VPC を選択できます。

  3. (オプション) コンテナのインターネットアクセスを制限する場合は、ネットワーク分離トグルをオンにします。

最後に、オプションで、次のスクリーンショットのような詳細オプションセクションに入力できます。

Studio でモデルを作成するための詳細オプションセクションのスクリーンショット。
(オプション) 詳細オプションセクションで、次の操作を行います。
  1. 作成後にモデルで Amazon SageMaker Inference Recommender ジョブを実行する場合は、カスタマイズされたインスタンスのレコメンデーショントグルをオンにします。Inference Recommender は、推論のパフォーマンスとコストを最適化するために推奨されるインスタンスタイプを提供する機能です。これらのインスタンスの推奨事項は、モデルのデプロイを準備するときに表示できます。

  2. 「環境変数を追加」に、コンテナの環境変数をキーと値のペアとして入力します。

  3. タグ には、任意のタグをキーと値のペアとして入力します。

  4. モデルとコンテナの設定が完了したら、デプロイ可能なモデルの作成 を選択します。

これで、デプロイする準備ができたモデルが SageMaker Studio にあるはずです。

モデルをデプロイする

最後に、前のステップで設定したモデルを HTTPS エンドポイントにデプロイします。1 つのモデルまたは複数のモデルをエンドポイントにデプロイできます。

モデルとエンドポイントの互換性

モデルをエンドポイントにデプロイする前に、次の設定で同じ値を指定してモデルとエンドポイントに互換性を持たせる必要があります。

  • IAM ロール

  • サブネットとセキュリティグループを含む Amazon VPC

  • ネットワーク分離 (有効または無効)

Studio では、次の方法で互換性のないエンドポイントにモデルをデプロイすることはできません。

  • モデルを新しいエンドポイントにデプロイしようとすると、 は互換性のある初期設定でエンドポイント SageMaker を設定します。これらの設定を変更して互換性を破ると、Studio はアラートを表示し、デプロイを禁止します。

  • 既存のエンドポイントにデプロイしようとしたときに、そのエンドポイントに互換性がない場合、Studio はアラートを表示し、デプロイを禁止します。

  • デプロイに複数のモデルを追加しようとすると、Studio は互いに互換性のないモデルをデプロイできなくなります。

Studio がモデルとエンドポイントの非互換性に関するアラートを表示したら、アラートの詳細を表示を選択して、互換性のない設定を確認できます。

モデルをデプロイする 1 つの方法は、Studio で以下を実行することです。

  1. SageMaker Studio アプリケーションを開きます。

  2. 左のナビゲーションペインで [モデル] を選択します。

  3. モデルページで、モデルのリストから 1 つ以上の SageMaker モデルを選択します。

  4. [デプロイ] を選択します。

  5. エンドポイント名 で、ドロップダウンメニューを開きます。既存のエンドポイントを選択するか、モデルをデプロイする新しいエンドポイントを作成できます。

  6. インスタンスタイプ で、エンドポイントに使用するインスタンスタイプを選択します。以前にモデルに対して Inference Recommender ジョブを実行したことがある場合、推奨インスタンスタイプは推奨 のタイトルのリストに表示されます。それ以外の場合は、モデルに適したプロスペクティブインスタンスがいくつか表示されます。

    のインスタンスタイプの互換性 JumpStart

    JumpStart モデルをデプロイする場合、Studio にはモデルがサポートするインスタンスタイプのみが表示されます。

  7. 初期インスタンス数 には、エンドポイントにプロビジョニングするインスタンスの初期数を入力します。

  8. 最大インスタンス数 には、トラフィックの増加に合わせてスケールアップするときにエンドポイントがプロビジョニングできるインスタンスの最大数を指定します。

  9. デプロイするモデルがモデルハブで最も使用されている JumpStart LLMs の 1 つである場合、インスタンスタイプとインスタンス数フィールドの後に代替設定オプションが表示されます。

    最も人気のある JumpStart LLMs、 AWS には、コストまたはパフォーマンスを最適化するために事前にベンチマークされたインスタンスタイプがあります。このデータは、LLM のデプロイに使用するインスタンスタイプを決定するのに役立ちます。代替設定を選択して、事前にベンチマークされたデータを含むダイアログボックスを開きます。パネルは次のスクリーンショットのようになります。

    代替設定ボックスのスクリーンショット

    「代替設定」ボックスで、次の操作を行います。

    1. インスタンスタイプの選択 1 時間あたりのコストまたは最適なパフォーマンスを選択して、指定したモデルのコストまたはパフォーマンスを最適化するインスタンスタイプを表示できます。その他のサポートされているインスタンスを選択して、 JumpStart モデルと互換性のある他のインスタンスタイプのリストを表示することもできます。ここでインスタンスタイプを選択すると、ステップ 6 で指定した以前のインスタンス選択が上書きされることに注意してください。

    2. (オプション) 選択した設定のカスタマイズトグルをオンにして、最大合計トークン (許可するトークンの最大数。入力トークンとモデルで生成された出力の合計)、最大入力トークン長 (各リクエストの入力を許可するトークンの最大数)、および最大同時リクエスト (モデルが一度に処理できるリクエストの最大数) を指定します。

    3. 選択 を選択して、インスタンスタイプと設定を確認します。

  10. Model フィールドには、デプロイするモデルの名前がすでに入力されている必要があります。モデルの追加を選択して、デプロイにモデルを追加できます。追加するモデルごとに、次のフィールドに入力します。

    1. CPU コア数 には、モデルの使用に専念する CPU コアを入力します。

    2. 最小コピー数 には、任意の時点でエンドポイントでホストするモデルコピーの最小数を入力します。

    3. 最小 CPU メモリ (MB) には、モデルに必要な最小メモリ量 (MB) を入力します。

    4. 最大 CPU メモリ (MB) には、モデルの使用を許可する最大メモリ量 (MB) を入力します。

  11. (オプション) 詳細オプション では、次の操作を行います。

    1. IAM ロール では、デフォルトの SageMaker IAM 実行ロールを使用するか、必要なアクセス許可を持つ独自のロールを指定します。この IAM ロールは、デプロイ可能なモデルの作成時に指定したロールと同じである必要があることに注意してください。

    2. Virtual Private Cloud (VPC) では、エンドポイントをホストする VPC を指定できます。

    3. Encryption KMS キー で、 AWS KMS キーを選択して、エンドポイントをホストする ML コンピューティングインスタンスにアタッチされたストレージボリュームのデータを暗号化します。

    4. ネットワーク分離を有効にするトグルをオンにして、コンテナのインターネットアクセスを制限します。

    5. タイムアウト設定 にはモデルデータのダウンロードタイムアウト (秒) およびコンテナ起動ヘルスチェックタイムアウト (秒) フィールドに値を入力します。これらの値は、 がモデルをコンテナにダウンロードし、コンテナを起動 SageMaker できる最大時間を決定します。

    6. タグ には、任意のタグをキーと値のペアとして入力します。

    注記

    SageMaker は、デプロイするモデルと互換性のある初期値を使用して、IAM ロール、VPC、およびネットワーク分離設定を設定します。これらの設定を変更して互換性を破ると、Studio はアラートを表示し、デプロイを禁止します。

オプションを設定した後、ページは次のスクリーンショットのようになります。

Studio のモデルをデプロイページのスクリーンショット。

デプロイを設定したら、デプロイ を選択してエンドポイントを作成し、モデルをデプロイします。

Python SDKs

SageMaker Python SDK を使用すると、2 つの方法でモデルを構築できます。1 つ目は、 Modelまたは ModelBuilder クラスからモデルオブジェクトを作成することです。Model クラスを使用してModelオブジェクトを作成する場合は、モデルパッケージまたは推論コード (モデルサーバーによって異なります)、クライアントとサーバー間のデータのシリアル化と逆シリアル化を処理するスクリプト、および消費のために Amazon S3 にアップロードされる依存関係を指定する必要があります。モデルを構築する 2 つ目の方法は、モデルアーティファクトまたは推論コードを提供する ModelBuilderを使用することです。 は依存関係ModelBuilderを自動的にキャプチャし、必要なシリアル化および逆シリアル化関数を推測し、依存関係をパッケージ化してModelオブジェクトを作成します。ModelBuilder の詳細については、「 SageMaker を使用して Amazon でモデルを作成する ModelBuilder」を参照してください。

次のセクションでは、モデルを作成し、モデルオブジェクトをデプロイする両方の方法について説明します。

セットアップする

次の例では、モデルデプロイプロセスの準備をします。必要なライブラリをインポートし、モデルアーティファクトを見つける S3 URL を定義します。

SageMaker Python SDK
例 インポートステートメント

次の例では、 SageMaker Python SDK、SDK for Python (Boto3)、および Python Standard Library からモジュールをインポートします。これらのモジュールは、モデルのデプロイに役立つ方法を提供し、以下の残りの例で使用されます。

import boto3 from datetime import datetime from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements from sagemaker.predictor import Predictor from sagemaker.enums import EndpointType from sagemaker.model import Model from sagemaker.session import Session
boto3 inference components
例 インポートステートメント

次の例では、SDK for Python (Boto3) と Python Standard Library からモジュールをインポートします。これらのモジュールは、モデルのデプロイに役立つ方法を提供し、以下の残りの例で使用されます。

import boto3 import botocore import sys import time
boto3 models (without inference components)
例 インポートステートメント

次の例では、SDK for Python (Boto3) と Python Standard Library からモジュールをインポートします。これらのモジュールは、モデルのデプロイに役立つ方法を提供し、以下の残りの例で使用されます。

import boto3 import botocore import datetime from time import gmtime, strftime
例 モデルアーティファクト URL

次のコードは、Amazon S3 URL の例を構築しています。URL は、Amazon S3 バケット内の事前トレーニング済みモデルのモデルアーティファクトを見つけます。

# Create a variable w/ the model S3 URL # The name of your S3 bucket: s3_bucket = "DOC-EXAMPLE-BUCKET" # The directory within your S3 bucket your model is stored in: bucket_prefix = "sagemaker/model/path" # The file name of your model artifact: model_filename = "my-model-artifact.tar.gz" # Relative S3 path: model_s3_key = f"{bucket_prefix}/"+model_filename # Combine bucket name, model file name, and relate S3 path to create S3 model URL: model_url = f"s3://{s3_bucket}/{model_s3_key}"

完全な Amazon S3 URL は変数 に保存されmodel_url、次の例で使用されます。

概要

SageMaker Python SDK または SDK for Python (Boto3) を使用してモデルをデプロイする方法は複数あります。以下のセクションでは、いくつかの可能なアプローチで実行するステップをまとめます。これらのステップは、以下の例で示されています。

SageMaker Python SDK

SageMaker Python SDK を使用すると、次のいずれかの方法でモデルを構築できます。

  • Model クラスからモデルオブジェクトを作成する – モデルパッケージまたは推論コード (モデルサーバーによって異なります)、クライアントとサーバー間のデータのシリアル化と逆シリアル化を処理するスクリプト、および消費のために Amazon S3 にアップロードされる依存関係を指定する必要があります。

  • ModelBuilder クラスからモデルオブジェクトを作成する – モデルアーティファクトまたは推論コードを提供し、依存関係ModelBuilderを自動的にキャプチャし、必要なシリアル化および逆シリアル化関数を推測して、依存関係をパッケージ化してModelオブジェクトを作成します。

    ModelBuilder の詳細については、「 SageMaker を使用して Amazon でモデルを作成する ModelBuilder」を参照してください。詳細については、ブログ「 パッケージ」を参照し、「パート 1LLMs を簡単にデプロイ SageMakerすることもできます。

以下の例では、モデルを作成し、モデルオブジェクトをデプロイする両方の方法について説明しています。これらの方法でモデルをデプロイするには、次のステップを実行します。

  1. ResourceRequirements オブジェクトを使用してモデルに割り当てるエンドポイントリソースを定義します。

  2. Model または ModelBuilder クラスからモデルオブジェクトを作成します。ResourceRequirements オブジェクトはモデル設定で指定されます。

  3. Model オブジェクトの deployメソッドを使用して、モデルをエンドポイントにデプロイします。

boto3 inference components

以下の例は、モデルを推論コンポーネントに割り当て、推論コンポーネントをエンドポイントにデプロイする方法を示しています。この方法でモデルをデプロイするには、次のステップを実行します。

  1. (オプション) create_modelメソッドを使用して SageMaker モデルオブジェクトを作成します。

  2. エンドポイント設定オブジェクトを作成して、エンドポイントの設定を指定します。作成するには、 create_endpoint_configメソッドを使用します。

  3. create_endpoint メソッドを使用してエンドポイントを作成し、リクエストで作成したエンドポイント設定を指定します。

  4. create_inference_component メソッドを使用して推論コンポーネントを作成します。設定で、次のいずれかを実行してモデルを指定します。

    • SageMaker モデルオブジェクトの指定

    • モデルイメージ URI と S3 URL の指定

    また、モデルにエンドポイントリソースを割り当てます。推論コンポーネントを作成することで、モデルをエンドポイントにデプロイします。モデルごとに 1 つずつ、複数の推論コンポーネントを作成することで、複数のモデルをエンドポイントにデプロイできます。

boto3 models (without inference components)

以下の例は、モデルオブジェクトを作成し、モデルをエンドポイントにデプロイする方法を示しています。この方法でモデルをデプロイするには、次のステップを実行します。

  1. create_model メソッドを使用して SageMaker モデルを作成します。

  2. エンドポイント設定オブジェクトを作成して、エンドポイントの設定を指定します。作成するには、 create_endpoint_configメソッドを使用します。エンドポイント設定では、モデルオブジェクトを本番稼働用バリアントに割り当てます。

  3. create_endpoint メソッドを使用してエンドポイントを作成します。リクエストで、作成したエンドポイント設定を指定します。

    エンドポイントを作成すると、 はエンドポイントリソースを SageMaker プロビジョニングし、モデルをエンドポイントにデプロイします。

構成する

次の例では、モデルをエンドポイントにデプロイするために必要なリソースを設定します。

SageMaker Python SDK

次の例では、 ResourceRequirements オブジェクトを持つモデルにエンドポイントリソースを割り当てます。これらのリソースには、CPU コア、アクセラレーター、メモリが含まれます。次に、この例では Model クラスからモデルオブジェクトを作成します。または、ModelBuilderクラスをインスタンス化して実行することでモデルオブジェクトを作成することもできます。buildこのメソッドは例にも示されています。 ModelBuilderはモデルパッケージング用の統合インターフェイスを提供し、このインスタンスでは、大規模なモデルデプロイ用にモデルを準備します。この例では、 を使用して Hugging Face モデルModelBuilderを構築します。( JumpStart モデルを渡すこともできます)。モデルを構築したら、モデルオブジェクトでリソース要件を指定できます。次のステップでは、このオブジェクトを使用してモデルをエンドポイントにデプロイします。

resources = ResourceRequirements( requests = { "num_cpus": 2, # Number of CPU cores required: "num_accelerators": 1, # Number of accelerators required "memory": 8192, # Minimum memory required in Mb (required) "copies": 1, }, limits = {}, ) now = datetime.now() dt_string = now.strftime("%d-%m-%Y-%H-%M-%S") model_name = "my-sm-model"+dt_string # build your model with Model class model = Model( name = "model-name", image_uri = "image-uri", model_data = model_url, role = "arn:aws:iam::111122223333:role/service-role/role-name", resources = resources, predictor_cls = Predictor, ) # Alternate mechanism using ModelBuilder # uncomment the following section to use ModelBuilder /* model_builder = ModelBuilder( model="<HuggingFace-ID>", # like "meta-llama/Llama-2-7b-hf" schema_builder=SchemaBuilder(sample_input,sample_output), env_vars={ "HUGGING_FACE_HUB_TOKEN": "<HuggingFace_token>}" } ) # build your Model object model = model_builder.build() # create a unique name from string 'mb-inference-component' model.model_name = unique_name_from_base("mb-inference-component") # assign resources to your model model.resources = resources */
boto3 inference components

次の例では、 create_endpoint_configメソッドを使用してエンドポイントを設定します。この設定は、作成時にエンドポイントに割り当てます。設定では、1 つ以上の本番稼働用バリアントを定義します。バリアントごとに、Amazon が SageMaker プロビジョニングするインスタンスタイプを選択し、マネージドインスタンススケーリングを有効にできます。

endpoint_config_name = "endpoint-config-name" endpoint_name = "endpoint-name" inference_component_name = "inference-component-name" variant_name = "variant-name" sagemaker_client.create_endpoint_config( EndpointConfigName = endpoint_config_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", ProductionVariants = [ { "VariantName": variant_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1, "ManagedInstanceScaling": { "Status": "ENABLED", "MinInstanceCount": 1, "MaxInstanceCount": 2, }, } ], )
boto3 models (without inference components)
例 モデル定義

次の例では、 の create_modelメソッドを使用して SageMaker モデルを定義します AWS SDK for Python (Boto3)。

model_name = "model-name" create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", PrimaryContainer = { "Image": "image-uri", "ModelDataUrl": model_url, } )

この例では、以下を指定します。

  • ModelName: モデルの名前 (この例では、model_name という文字列変数として保存されています)。

  • ExecutionRoleArn: ML コンピューティングインスタンスへのデプロイまたはバッチ変換ジョブのために、Amazon がモデルアーティファクトと Docker イメージにアクセスするために引き受け SageMaker ることができる IAM ロールの Amazon リソースネーム (ARN)。

  • PrimaryContainer: 推論コード、関連アーティファクト、予測のためにモデルがデプロイされるときに推論コードが使用するカスタム環境マップを含むプライマリ Docker イメージの場所。

例 エンドポイント設定

次の例では、 create_endpoint_configメソッドを使用してエンドポイントを設定します。Amazon SageMaker は、この設定を使用してモデルをデプロイします。設定では、 create_modelメソッドで作成された 1 つ以上のモデルを特定し、Amazon にプロビジョニングさせたいリソース SageMaker をデプロイします。

endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName = "endpoint-config-name", # List of ProductionVariant objects, one for each model that you want to host at this endpoint: ProductionVariants = [ { "VariantName": "variant-name", # The name of the production variant. "ModelName": model_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )

この例では、 ProductionVariantsフィールドに次のキーを指定します。

  • VariantName: 本番稼働用バリアントの名前。

  • ModelName: ホストするモデルの名前。これは、モデル作成時に指定した名前です。

  • InstanceType: コンピューティングインスタンスタイプ。サポートされているコンピューティングインスタンスタイプhttps://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.htmlと各インスタンスタイプのSageMaker料金のリストについては、「」および「料金表」のInstanceType「」フィールドを参照してください。

デプロイ

次の例では、モデルをエンドポイントにデプロイします。

SageMaker Python SDK

次の例では、モデルオブジェクトの deployメソッドを使用して、モデルをリアルタイムの HTTPS エンドポイントにデプロイします。モデルの作成とデプロイの両方に resources引数の値を指定すると、デプロイに指定するリソースが優先されます。

predictor = model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, resources = resources, )

instance_type フィールドでは、モデルの Amazon EC2 インスタンスタイプの名前を指定します。initial_instance_count フィールドでは、エンドポイントを実行するインスタンスの初期数を指定します。

次のコードサンプルは、モデルをエンドポイントにデプロイし、別のモデルを同じエンドポイントにデプロイする別のケースを示しています。この場合、両方のモデルのdeployメソッドに同じエンドポイント名を指定する必要があります。

# Deploy the model to inference-component-based endpoint falcon_predictor = falcon_model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" resources = resources, ) # Deploy another model to the same inference-component-based endpoint llama2_predictor = llama2_model.deploy( # resources already set inside llama2_model endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" # same endpoint name as for falcon model )
boto3 inference components

エンドポイント設定が完了したら、create_endpoint メソッドを使用してエンドポイントを作成します。エンドポイント名は、アカウントの AWS リージョン AWS 内で一意である必要があります。

次の例では、リクエストで指定されたエンドポイント設定を使用してエンドポイントを作成します。Amazon SageMaker はエンドポイントを使用してリソースをプロビジョニングします。

sagemaker_client.create_endpoint( EndpointName = endpoint_name, EndpointConfigName = endpoint_config_name, )

エンドポイントを作成したら、推論コンポーネントを作成して、エンドポイントに 1 つまたは複数のモデルをデプロイできます。次の例では、 create_inference_componentメソッドを使用して を作成します。

sagemaker_client.create_inference_component( InferenceComponentName = inference_component_name, EndpointName = endpoint_name, VariantName = variant_name, Specification = { "Container": { "Image": "image-uri", "ArtifactUrl": model_url, }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }, RuntimeConfig = {"CopyCount": 2} )
boto3 models (without inference components)
例 デプロイメント

エンドポイント設定を に提供します SageMaker。このサービスは、ML コンピューティングインスタンスを起動し、設定で指定された 1 つ以上のモデルをデプロイします。

モデルとエンドポイントの設定が完了したら、create_endpoint メソッドを使用してエンドポイントを作成します。エンドポイント名は、アカウントの AWS リージョン AWS 内で一意である必要があります。

次の例では、リクエストで指定されたエンドポイント設定を使用してエンドポイントを作成します。Amazon SageMaker はエンドポイントを使用してリソースをプロビジョニングし、モデルをデプロイします。

create_endpoint_response = sagemaker_client.create_endpoint( # The endpoint name must be unique within an AWS Region in your AWS account: EndpointName = "endpoint-name" # The name of the endpoint configuration associated with this endpoint: EndpointConfigName = "endpoint-config-name")

を使用してモデルをデプロイする AWS CLI

を使用して、モデルをエンドポイントにデプロイできます AWS CLI。

概要

を使用してモデルをデプロイする場合 AWS CLI、推論コンポーネントの有無にかかわらずモデルをデプロイできます。以下のセクションでは、両方のアプローチで実行するコマンドの概要を説明します。これらのコマンドは、以下の例で示されています。

With inference components

推論コンポーネントを使用してモデルをデプロイするには、次の手順を実行します。

  1. (オプション) create-model コマンドを使用してモデルを作成します。

  2. エンドポイント設定を作成して、エンドポイントの設定を指定します。作成するには、 create-endpoint-config コマンドを実行します。

  3. create-endpoint コマンドを使用してエンドポイントを作成します。コマンド本文で、作成したエンドポイント設定を指定します。

  4. create-inference-component コマンドを使用して推論コンポーネントを作成します。設定で、次のいずれかを実行してモデルを指定します。

    • SageMaker モデルオブジェクトの指定

    • モデルイメージ URI と S3 URL の指定

    また、モデルにエンドポイントリソースを割り当てます。推論コンポーネントを作成することで、モデルをエンドポイントにデプロイします。モデルごとに 1 つずつ、複数の推論コンポーネントを作成することで、複数のモデルをエンドポイントにデプロイできます。

Without inference components

推論コンポーネントを使用せずにモデルをデプロイするには、次の手順を実行します。

  1. create-model コマンドを使用して SageMaker モデルを作成します。

  2. エンドポイント設定オブジェクトを作成して、エンドポイントの設定を指定します。作成するには、 create-endpoint-config コマンドを使用します。エンドポイント設定では、モデルオブジェクトを本番稼働用バリアントに割り当てます。

  3. create-endpoint コマンドを使用してエンドポイントを作成します。コマンド本文で、作成したエンドポイント設定を指定します。

    エンドポイントを作成すると、 はエンドポイントリソースを SageMaker プロビジョニングし、モデルをエンドポイントにデプロイします。

構成する

次の例では、モデルをエンドポイントにデプロイするために必要なリソースを設定します。

With inference components
例 create-endpoint-config コマンド

次の例では、create-endpoint-config コマンドを使用してエンドポイント設定を作成します。

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name\ --production-variants file://production-variants.json

この例では、 ファイルは次の JSON を使用して本番稼働用バリアントproduction-variants.jsonを定義します。

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

コマンドが成功すると、 は作成したリソースの ARN で AWS CLI 応答します。

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }
Without inference components
例 create-model コマンド

次の例では、create-model コマンドを使用してモデルを作成します。

aws sagemaker create-model \ --model-name model-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name \ --primary-container "{ \"Image\": \"image-uri\", \"ModelDataUrl\": \"model-s3-url\"}"

コマンドが成功すると、 は作成したリソースの ARN で AWS CLI 応答します。

{ "ModelArn": "arn:aws:sagemaker:us-west-2:111122223333:model/model-name" }
例 create-endpoint-config コマンド

次の例では、create-endpoint-config コマンドを使用してエンドポイント設定を作成します。

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --production-variants file://production-variants.json

この例では、 ファイルは次の JSON を使用して本番稼働用バリアントproduction-variants.jsonを定義します。

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

コマンドが成功すると、 は作成したリソースの ARN で AWS CLI 応答します。

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }

デプロイ

次の例では、モデルをエンドポイントにデプロイします。

With inference components
例 create-endpoint コマンド

次の例では、create-endpoint コマンドを使用してエンドポイントを作成します。

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

コマンドが成功すると、 は作成したリソースの ARN で AWS CLI 応答します。

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }
例 create-inference-component コマンド

次の例では、 create-inference-component コマンドを使用して推論コンポーネントを作成します。

aws sagemaker create-inference-component \ --inference-component-name inference-component-name \ --endpoint-name endpoint-name \ --variant-name variant-name \ --specification file://specification.json \ --runtime-config "{\"CopyCount\": 2}"

この例では、 ファイルはコンテナリソースとコンピューティングリソースを次の JSON でspecification.json定義します。

{ "Container": { "Image": "image-uri", "ArtifactUrl": "model-s3-url" }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }

コマンドが成功すると、 は作成したリソースの ARN で AWS CLI 応答します。

{ "InferenceComponentArn": "arn:aws:sagemaker:us-west-2:111122223333:inference-component/inference-component-name" }
Without inference components
例 create-endpoint コマンド

次の例では、create-endpoint コマンドを使用してエンドポイントを作成します。

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

コマンドが成功すると、 は作成したリソースの ARN で AWS CLI 応答します。

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }