翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
リアルタイム推論用のモデルをデプロイする
重要
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 リージョン、「リージョンマップ」と「エッジネットワーク
重要
モデルアーティファクトが保存されている 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 つのオプションがあります。
-
モデルアーティファクト、カスタム推論コード、および
requirements.txt
ファイルにリストされている依存関係を含むパッケージ済みのtar.gz
アーカイブを取り込むことができます。 -
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 も使用可能ですSagemaker
sagemaker
。
バケット命名規則 を使用することをお勧めしますsagemaker-{
。このバケットは、アップロードしたアーティファクトを保存するために使用されます。Region
}-{accountID
}
バケットを作成したら、次の CORS (クロスオリジンリソース共有) ポリシーをバケットにアタッチします。
[ { "AllowedHeaders": ["*"], "ExposeHeaders": ["Etag"], "AllowedMethods": ["PUT", "POST"], "AllowedOrigins": ['https://*.sagemaker.aws'], } ]
Amazon S3 バケットにCORSポリシーをアタッチするには、次のいずれかの方法を使用します。
-
Amazon S3 コンソールのクロスオリジンリソース共有の編集 (CORS)
ページから Amazon S3 -
Amazon S3 の使用 API PutBucketCors
-
put-bucket-cors AWS CLI コマンドの使用:
aws s3api put-bucket-cors --bucket="..." --cors-configuration="..."
デプロイ可能なモデルを作成する
このステップでは、目的のコンテナとフレームワーク、カスタム推論コード、ネットワーク設定などの追加の仕様とともにアーティファクトを提供すること SageMaker で、 でモデルのデプロイ可能なバージョンを作成します。
Studio でデプロイ可能なモデルを作成するには、次の手順 SageMaker を実行します。
-
SageMaker Studio アプリケーションを開きます。
-
左のナビゲーションペインで [モデル] を選択します。
-
デプロイ可能なモデルタブを選択します。
-
デプロイ可能なモデルページで、「 の作成」を選択します。
-
デプロイ可能なモデルの作成ページのモデル名フィールドに、モデルの名前を入力します。
デプロイ可能なモデルの作成ページには、他にもいくつかのセクションがあります。
コンテナ定義セクションは次のスクリーンショットのようになります。
コンテナ定義セクションで、次の操作を行います。
-
コンテナタイプ で、 SageMaker マネージドコンテナを使用する場合は構築済みコンテナを選択し、独自のコンテナがある場合は独自のコンテナを使用するを選択します。
-
構築済みコンテナ を選択した場合は、使用するコンテナフレームワーク 、フレームワークバージョン 、ハードウェアタイプを選択します。
-
「独自のコンテナを使用」を選択した場合は、コンテナイメージ へのECRパスの Amazon パスを入力します。 ECR
次に、次のスクリーンショットのようなアーティファクトセクションに入力します。
Artifacts セクションで、次の操作を行います。
-
がモデルアーティファクトのパッケージ化 (PyTorch または XGBoost) に SageMaker サポートするフレームワークのいずれかを使用している場合は、アーティファクトのアップロードオプションを選択できます。このオプションを使用すると、raw モデルアーティファクト、カスタム推論コード、および requirements.txt ファイルを指定するだけで、アーカイブのパッケージ化 SageMaker を処理できます。以下の操作を実行します。
-
Artifacts で、アーティファクトのアップロードを選択して、ファイルの提供を続行します。それ以外の場合は、モデルファイル、推論コード、
requirements.txt
ファイルを含むtar.gz
アーカイブが既にある場合は、事前にパッケージ化されたアーティファクトURIへの入力 S3 を選択します。 -
アーティファクトのアップロードを選択した場合は、S3 バケット に、アーティファクト SageMaker をパッケージ化した後にアーティファクトを保存するバケットへの Amazon S3 パスを入力します。次に、次の手順を実行します。
-
モデルアーティファクトのアップロード で、モデルファイルをアップロードします。
-
推論コード で、推論の提供に が提供するデフォルトコードを使用する場合は、デフォルトの推論コードを使用する を選択します。 SageMaker それ以外の場合は、カスタマイズした推論コードをアップロードを選択して独自の推論コードを使用します。
-
アップロード requirements.txt では、ランタイムにインストールする依存関係を一覧表示するテキストファイルをアップロードします。
-
-
モデルアーティファクトのパッケージ化に SageMaker をサポートするフレームワークを使用していない場合、Studio はパッケージ化済みアーティファクトオプションを表示し、すでに
tar.gz
アーカイブとしてパッケージ化されているすべてのアーティファクトを提供する必要があります。以下の操作を実行します。-
アーカイブが既に Amazon S3 にアップロードされている場合は、パッケージ済みのアーティファクト URI で、パッケージ済みのモデルアーティファクトの入力 S3 S3 を選択します。
tar.gz
Amazon S3 アーカイブを に直接アップロードする場合は、パッケージ済みのモデルアーティファクトをアップロードを選択します SageMaker。 -
事前にパッケージ化されたモデルアーティファクト URIの入力 S3 を選択した場合は、Amazon S3 S3 URIパスを入力します。それ以外の場合は、ローカルマシンからアーカイブを選択してアップロードします。
-
次のセクションはセキュリティ で、次のスクリーンショットのようになります。
セキュリティセクションで、次の操作を行います。
-
IAM ロール には、 IAMロールARNの を入力します。
-
(オプション) Virtual Private Cloud (VPC) では、モデル設定とアーティファクトVPCを保存する Amazon を選択できます。
-
(オプション) コンテナのインターネットアクセスを制限する場合は、ネットワーク分離トグルをオンにします。
最後に、オプションで、次のスクリーンショットのような詳細オプションセクションに入力できます。
(オプション) 詳細オプションセクションで、次の操作を行います。
-
作成後にモデルで Amazon SageMaker Inference Recommender ジョブを実行する場合は、カスタマイズされたインスタンスのレコメンデーショントグルをオンにします。Inference Recommender は、推論のパフォーマンスとコストを最適化するために推奨されるインスタンスタイプを提供する機能です。これらのインスタンスの推奨事項は、モデルのデプロイを準備するときに表示できます。
-
環境変数を追加 で、コンテナの環境変数をキーと値のペアとして入力します。
-
タグ には、任意のタグをキーと値のペアとして入力します。
-
モデルとコンテナの設定が完了したら、デプロイ可能なモデルの作成 を選択します。
これで、デプロイの準備が整ったモデルが SageMaker Studio に用意されているはずです。
モデルをデプロイする
最後に、前のステップで設定したモデルをHTTPSエンドポイントにデプロイします。エンドポイントには、1 つのモデルまたは複数のモデルをデプロイできます。
モデルとエンドポイントの互換性
モデルをエンドポイントにデプロイする前に、次の設定で同じ値を持つモデルとエンドポイントに互換性がある必要があります。
-
IAM ロール
-
サブネットとセキュリティグループVPCを含む Amazon 。
-
ネットワーク分離 (有効または無効)
Studio では、次の方法で互換性のないエンドポイントにモデルをデプロイすることはできません。
-
モデルを新しいエンドポイントにデプロイしようとすると、 は互換性のある初期設定でエンドポイント SageMaker を設定します。これらの設定を変更して互換性を破ると、Studio はアラートを表示し、デプロイを禁止します。
-
既存のエンドポイントにデプロイしようとしたときに、そのエンドポイントに互換性がない場合、Studio はアラートを表示し、デプロイを禁止します。
-
デプロイに複数のモデルを追加しようとすると、Studio は互いに互換性のないモデルをデプロイできなくなります。
Studio がモデルとエンドポイントの非互換性に関するアラートを表示したら、アラートの詳細を表示を選択して、互換性のない設定を確認できます。
モデルをデプロイする 1 つの方法は、Studio で以下を実行することです。
-
SageMaker Studio アプリケーションを開きます。
-
左のナビゲーションペインで [モデル] を選択します。
-
モデルページで、モデルのリストから 1 つ以上の SageMaker モデルを選択します。
-
[デプロイ] を選択します。
-
エンドポイント名 で、ドロップダウンメニューを開きます。既存のエンドポイントを選択するか、モデルをデプロイする新しいエンドポイントを作成できます。
-
インスタンスタイプ で、エンドポイントに使用するインスタンスタイプを選択します。以前にモデルに対して Inference Recommender ジョブを実行したことがある場合、推奨インスタンスタイプは推奨 というタイトルのリストに表示されます。それ以外の場合は、モデルに適したプロスペクティブインスタンスがいくつか表示されます。
のインスタンスタイプの互換性 JumpStart
JumpStart モデルをデプロイする場合、Studio にはモデルがサポートするインスタンスタイプのみが表示されます。
-
初期インスタンス数 には、エンドポイントにプロビジョニングするインスタンスの初期数を入力します。
-
最大インスタンス数 には、トラフィックの増加に合わせてスケールアップするときにエンドポイントがプロビジョニングできるインスタンスの最大数を指定します。
-
デプロイするモデルがモデルハブから最も使用されている JumpStart LLMsモデルの 1 つである場合、インスタンスタイプとインスタンス数フィールドの後に代替設定オプションが表示されます。
最も一般的な AWS の場合 JumpStart LLMs、 には、コストまたはパフォーマンスを最適化するために事前にベンチマークされたインスタンスタイプがあります。このデータは、 のデプロイに使用するインスタンスタイプを決定するのに役立ちますLLM。代替設定を選択して、事前ベンチマークされたデータを含むダイアログボックスを開きます。パネルは次のスクリーンショットのようになります。
「代替設定」ボックスで、次の操作を行います。
-
インスタンスタイプの選択 1 時間あたりのコストまたは最適なパフォーマンスを選択して、指定したモデルのコストまたはパフォーマンスを最適化するインスタンスタイプを表示できます。その他のサポートされているインスタンスを選択して、 JumpStart モデルと互換性のある他のインスタンスタイプのリストを表示することもできます。ここでインスタンスタイプを選択すると、ステップ 6 で指定した以前のインスタンス選択が上書きされることに注意してください。
-
(オプション) 選択した設定のカスタマイズトグルをオンにして、最大合計トークン数 (許可するトークンの最大数。入力トークンとモデルが生成した出力の合計)、最大入力トークン長 (各リクエストの入力を許可するトークンの最大数)、および最大同時リクエスト数 (モデルが一度に処理できるリクエストの最大数) を指定します。
-
選択 を選択して、インスタンスタイプと設定を確認します。
-
-
Model フィールドには、デプロイするモデルの名前がすでに入力されている必要があります。モデルの追加を選択して、デプロイにモデルを追加できます。追加するモデルごとに、次のフィールドに入力します。
-
CPU コア数 には、モデルの使用に専念するCPUコアを入力します。
-
最小コピー数 には、任意の時点でエンドポイントでホストするモデルコピーの最小数を入力します。
-
最小CPUメモリ (MB) には、モデルに必要な最小メモリ量 (MB) を入力します。
-
最大CPUメモリ (MB) には、モデルの使用を許可する最大メモリ量 (MB) を入力します。
-
-
(オプション) 詳細オプション では、次の操作を行います。
-
IAM ロール には、デフォルトの SageMakerIAM実行ロールを使用するか、必要なアクセス許可を持つ独自のロールを指定します。このIAMロールは、デプロイ可能なモデルの作成時に指定したロールと同じである必要があることに注意してください。
-
Virtual Private Cloud (VPC) では、エンドポイントVPCをホストする を指定できます。
-
暗号化KMSキー で、 AWS KMS キーを選択して、エンドポイントをホストする ML コンピューティングインスタンスにアタッチされたストレージボリューム上のデータを暗号化します。
-
ネットワーク分離を有効にするトグルをオンにして、コンテナのインターネットアクセスを制限します。
-
タイムアウト設定 には、モデルデータのダウンロードタイムアウト (秒) とコンテナ起動ヘルスチェックタイムアウト (秒) フィールドに値を入力します。これらの値によって、 がモデルをコンテナにダウンロードし、コンテナを起動 SageMaker できる最大時間がそれぞれ決まります。
-
タグ には、任意のタグをキーと値のペアとして入力します。
注記
SageMaker は、デプロイするモデルと互換性のある初期値を使用してVPC、IAMロール、、およびネットワーク分離設定を設定します。これらの設定を変更して互換性を破ると、Studio はアラートを表示し、デプロイを禁止します。
-
オプションを設定した後、ページは次のスクリーンショットのようになります。
デプロイを設定したら、デプロイ を選択してエンドポイントを作成し、モデルをデプロイします。
Python を使用してモデルをデプロイする SDKs
SageMaker Python を使用するとSDK、2 つの方法でモデルを構築できます。1 つ目は、 Model
または ModelBuilder
クラスからモデルオブジェクトを作成することです。Model
クラスを使用してModel
オブジェクトを作成する場合は、モデルパッケージまたは推論コード (モデルサーバーによって異なります)、クライアントとサーバー間のデータのシリアル化と逆シリアル化を処理するスクリプト、および消費のために Amazon S3 にアップロードされる依存関係を指定する必要があります。モデルを構築する 2 つ目の方法は、モデルアーティファクトまたは推論コードを提供する ModelBuilder
を使用することです。 は、依存関係ModelBuilder
を自動的にキャプチャし、必要なシリアル化および逆シリアル化関数を推測し、依存関係をパッケージ化してModel
オブジェクトを作成します。ModelBuilder
の詳細については、「 SageMaker を使用して Amazon でモデルを作成する ModelBuilder」を参照してください。
次のセクションでは、モデルを作成し、モデルオブジェクトをデプロイする両方の方法について説明します。
セットアップする
次の例では、モデルデプロイプロセスの準備をします。必要なライブラリをインポートし、モデルアーティファクトURLを見つける S3 を定義します。
例 モデルアーティファクト 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) を使用してモデルをデプロイする方法は複数あります。以下のセクションでは、いくつかの可能なアプローチで実行するステップをまとめます。これらのステップは、以下の例で示されています。
構成する
次の例では、モデルをエンドポイントにデプロイするために必要なリソースを設定します。
デプロイ
次の例では、モデルをエンドポイントにデプロイします。
を使用してモデルをデプロイする AWS CLI
を使用して、モデルをエンドポイントにデプロイできます AWS CLI。
概要
を使用してモデルをデプロイする場合 AWS CLI、推論コンポーネントの有無にかかわらずモデルをデプロイできます。以下のセクションでは、両方のアプローチで実行するコマンドの概要を説明します。これらのコマンドは、以下の例で示されています。
構成する
次の例では、モデルをエンドポイントにデプロイするために必要なリソースを設定します。
デプロイ
次の例では、モデルをエンドポイントにデプロイします。