リアルタイム推論用のモデルをデプロイする - 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 SDKや SDK for Python (Boto3) AWS SDKなどの を使用してプログラムでモデルをデプロイすることもできます。を使用してデプロイすることもできます AWS CLI。

開始する前に

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

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

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

  • のIAMロール SageMaker

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

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

重要

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

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

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

推論コンポーネント

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

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

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

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

柔軟性

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

スケーラビリティ

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

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

  • SageMaker Studio Classic。

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

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

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

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

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

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モデルを作成およびデプロイするアクセス許可も付与する必要があります。

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

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

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

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

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

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

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

このステップでは、目的のコンテナとフレームワーク、カスタム推論コード、ネットワーク設定などの追加の仕様とともにアーティファクトを提供すること 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アーカイブが既にある場合は、事前にパッケージ化されたアーティファクトURIへの入力 S3 を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

これで、デプロイの準備が整ったモデルが SageMaker Studio に用意されているはずです。

モデルをデプロイする

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

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

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

  • IAM ロール

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

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

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 つである場合、インスタンスタイプとインスタンス数フィールドの後に代替設定オプションが表示されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    注記

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

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

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

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

Python を使用してモデルをデプロイする SDKs

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

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

セットアップする

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

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

次の例では、 SageMaker Python 、 for Python (Boto3)SDK、および SDK 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。は、Amazon S3 バケット内の事前トレーニング済みモデルのモデルアーティファクトURLを見つけます。

# Create a variable w/ the model S3 URL # The name of your S3 bucket: s3_bucket = "amzn-s3-demo-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、次のいずれかの方法でモデルを構築できます。

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

  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.htmlSageMaker料金のリストについては、「」および「料金表」の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

この例では、 ファイルは次の を使用して本番稼働用バリアントproduction-variants.jsonを定義します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

この例では、 ファイルは次の を使用して本番稼働用バリアントproduction-variants.jsonを定義します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}"

この例では、 ファイルはコンテナリソースとコンピューティングリソースを次の でspecification.json定義します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" }