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

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

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

重要

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

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

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

[開始する前に]

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

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

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

  • SageMaker AI の IAM ロール

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

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

重要

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

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

Amazon SageMaker AI を使用して、1 つ以上のモデルをエンドポイントにデプロイできます。複数のモデルがエンドポイントを共有する場合は、そこでホストされるリソース (ML 演算処理インスタンス、CPU、アクセラレーターなど) を共同で使用します。エンドポイントに複数のモデルを柔軟にデプロイするには、各モデルを推論コンポーネントとして定義するのが一番です。

推論コンポーネント

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

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

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

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

柔軟性

推論コンポーネントでは、モデルのホスティングの詳細がエンドポイント自体から切り離されます。そのため、モデルをエンドポイントでどのようにホスティングおよび提供するかを柔軟にコントロールできます。同じインフラストラクチャで複数のモデルをホスティングし、必要に応じてエンドポイントにモデルを追加または削除できます。各モデルは個別にアップデートできます。

スケーラビリティ

ホストする各モデルのコピー数を指定したり、モデルがリクエストを処理するために必要なコピーの最小数を設定したりできます。推論コンポーネントのコピーをゼロにスケールダウンすることで、別のコピーをスケールアップする余地を作成できます。

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

  • SageMaker Studio Classic。

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

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

SageMaker Studio を使用してモデルをデプロイする

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

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

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

アーティファクトを Studio に取り入れてモデルを作成する場合、次の 2 つのオプションがあります:

  1. モデルアーティファクト、カスタム推論コード、requirements.txt ファイルに記載されている依存関係を含めて tar.gz アーカイブにあらかじめパッケージ化できます。

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

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

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

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

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

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

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

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

デプロイモデルを作成する

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

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

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

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

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

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

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

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

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

Studio でモデルを作成する際の [コンテナ定義] セクションのスクリーンショット。
[コンテナ定義] セクションで以下を実行します。
  1. コンテナタイプで、SageMaker AI マネージドコンテナを使用する場合は構築済みコンテナを選択し、独自のコンテナがある場合は独自のコンテナを使用するを選択します。

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

  3. [独自のコンテナ] を選択した場合は、[コンテナイメージへの ECR パス] にAmazon ECR パスを入力します。

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

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

    1. [アーティファクト] で、[アーティファクトのアップロード] を選択して処理を続行します。または、tar.gz アーカイブにモデルファイル、推論コード、requirements.txt ファイルが含まれる場合は、[S3 の URI を事前パッケージ化アーティファクトに入力する] を選択します。

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

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

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

    5. [requirements.txt をアップロード] で、実行時にインストールする依存関係のリストが入力されたテキストファイルをアップロードします。

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

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

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

次のセクションは [セキュリティ] です。次のスクリーンショットのように表示されます。

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

  2. (オプション) [仮想プライベートクラウド (VPC)] で、モデル設定とアーティファクトを保存する Amazon VPC を選択します。

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

最後に、オプションで [詳細オプション] セクションに入力します。次のスクリーンショットのように表示されます。

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

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

  3. [タグ] に任意のタグをキーと値のペアで入力します。

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

これで、SageMaker Studio にデプロイ可能なモデルが完成しました。

モデルをデプロイする

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

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

モデルをエンドポイントにデプロイする前に、以下の設定がモデルとエンドポイント間で同じであり、互換性が保たれていることを確認してください。

  • IAM ロール

  • Amazon VPC (サブネットとセキュリティグループ)

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

互換性のないエンドポイントにモデルがデプロイされないよう、Studio で次の処理が行われます。

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

  • 既存のエンドポイントにデプロイすると、エンドポイントに互換性がない場合は Studio がアラートを表示し、デプロイが失敗します。

  • デプロイに複数のモデルを追加する場合、相互に互換性がなければ、Studio によってモデルのデプロイがエラーになります。

Studio にモデルとエンドポイントの非互換性に関するアラートが表示された場合、[詳細を表示] を選択して、どの設定で互換性が失われたかを確認できます。

モデルをデプロイするために、Studio で以下を実行する方法を選択できます。

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

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

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

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

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

  6. [インスタンスタイプ] で、エンドポイントに使用するインスタンスタイプを選択します。モデルに対して以前に Inference Recommender ジョブを実行している場合は、推奨されるインスタンスタイプが [推奨] というタイトルのリストに表示されます。実行していない場合は、モデルに適した [想定インスタンス] がいくつか表示されます。

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

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

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

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

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

    最も人気のある JumpStart LLMs AWS の場合、 には、コストまたはパフォーマンスを最適化するために事前にベンチマークされたインスタンスタイプがあります。このデータを使用し、どのインスタンスタイプを LLM のデプロイに使用するかを判断できます。[代替設定] を選択して、ベンチマーク済みのデータを表示するダイアログボックスを開きます。パネルは次のスクリーンショットのようになります。

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

    [代替設定] ボックスで以下の操作を行います。

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

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

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

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

    1. [CPU コアの数] に、モデルのみで使用される CPU コアを入力します。

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

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

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

  11. (オプション) [詳細オプション] で、以下の操作を行います:

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

    2. [仮想プライベートクラウド (VPC)] では、エンドポイントをホストする VPC を指定します。

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

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

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

    6. [タグ] に任意のタグをキーと値のペアで入力します。

    注記

    SageMaker AI は、デプロイするモデルと互換性のある初期値を使用して IAM ロール、VPC、ネットワーク分離設定を構成します。この設定を変更して互換性が失われると、Studio はアラートを表示し、デプロイが失敗します。

オプションを設定すると、ページが次のスクリーンショットのように表示されます。

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

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

Python SDK でモデルをデプロイする

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

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

セットアップする

以下に、モデルデプロイプロセスを準備する例を示します。必要なライブラリをインポートし、モデルアーティファクトを指す S3 URL を定義します。

SageMaker Python SDK
例 import ステートメント

次の例は、SageMaker Python SDK、SDK for Python (Boto3)、および Python 標準ライブラリからモジュールをインポートします。これらのモジュールはモデルのデプロイ便利であり、以下の例でも使用されています。

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
例 import ステートメント

次の例は、SDK for Python (Boto3) と Python 標準ライブラリからモジュールをインポートします。これらのモジュールはモデルのデプロイ便利であり、以下の例でも使用されています。

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

次の例は、SDK for Python (Boto3) と Python 標準ライブラリからモジュールをインポートします。これらのモジュールはモデルのデプロイ便利であり、以下の例でも使用されています。

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 = "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 を使用すると、次のいずれかの方法でモデルを構築できます:

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

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

    ModelBuilder の詳細については、「ModelBuilder を使用して Amazon SageMaker AI でモデルを作成する ModelBuilder」を参照してください。詳細については、ブログ「Package and deploy classical ML models and LLMs easily with SageMaker AI – Part 1」も参照してください。

以下の例では、モデルを作成する方法と、モデルオブジェクトをデプロイする方法を説明します。これらの方法でモデルをデプロイするには、次の手順を実行します。

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

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

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

boto3 inference components

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

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

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

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

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

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

    • モデルイメージ URI と S3 URL を指定する

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

boto3 models (without inference components)

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

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

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

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

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

構成する

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

SageMaker Python SDK

次の例は、ResourceRequirements オブジェクトを持つモデルにエンドポイントリソースを割り当てています。これらのリソースには、CPU コア、アクセラレーター、メモリが含まれます。次に、この例のように Model クラスからモデルオブジェクトを作成します。または、ModelBuilder クラスをインスタンス化して build を実行することで、モデルオブジェクトを作成することもできます。このメソッドも例に示されています。ModelBuilder はモデルをパッケージ化する統合インターフェイスを提供し、このインスタンスでは大規模にデプロイするためのモデルを準備しています。この例は、ModelBuilder を使用して Hugging Face モデルをコンストラクトします。(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 AI でプロビジョニングするインスタンスタイプを選択し、マネージドインスタンススケーリングを有効にできます。

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 AI モデルを定義します 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: Amazon SageMaker AI が ML コンピューティングインスタンスへのデプロイまたはバッチ変換ジョブのためにモデルアーティファクトと Docker イメージにアクセスするために引き受けることができる IAM ロールの Amazon リソースネーム (ARN)。

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

例 エンドポイント設定

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

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と各インスタンスタイプの料金のリストについては、「」の InstanceTypeフィールドとSageMaker AI 料金表」を参照してください。

デプロイ

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

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 AI はエンドポイントを使用してリソースをプロビジョニングします。

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

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

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 AI に提供します。このサービスは、ML コンピューティングインスタンスを起動し、設定で指定された 1 つ以上のモデルをデプロイします。

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

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

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 AI モデルオブジェクトの指定

    • モデルイメージ URI と S3 URL を指定する

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

Without inference components

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

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

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

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

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

構成する

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

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" }