

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

# 事前に最適化されたモデルのデプロイ
<a name="model-optimize-preoptimized"></a>

JumpStart の一部のモデルは SageMaker AI によって事前に最適化されています。つまり、最初に推論最適化ジョブを作成することなく、これらのモデルの最適化されたバージョンをデプロイできます。

事前に最適化されたオプションが用意されているモデルのリストについては、「[事前に最適化された JumpStart モデル](#pre-optimized-js)」を参照してください。

## Amazon SageMaker Studio
<a name="preoptimized-studio"></a>

Amazon SageMaker Studio を使用して事前に最適化された JumpStart モデルをデプロイするには、次の手順に従います。

**事前に最適化されたモデルをデプロイするには**

1. Studio の左側のナビゲーションメニューで、**[JumpStart]** を選択します。

1. **[すべてのパブリックモデル]** ページで、事前に最適化されているモデルのいずれかを選択します。

1. モデルの詳細ページで、**[デプロイ]** を選択します。

1. 一部の JumpStart モデルでは、デプロイページで、続行する前にエンドユーザーライセンス契約 (EULA) に署名する必要があります。要求された場合、**[ライセンス契約]** セクションのライセンス条項を確認してください。その条項がユースケースで受け入れられる場合は、**[EULA に同意し、利用規約を読みました]** のチェックボックスをオンにします。

   詳細については、「[エンドユーザーライセンス契約](jumpstart-foundation-models-choose.md#jumpstart-foundation-models-choose-eula)」を参照してください。

1. **[エンドポイント名]** と **[初期インスタンス数]** は、デフォルト値を受け入れるか、カスタム値を設定します。

1. **[インスタンスタイプ]** は、デフォルト値のままにします。それ以外の場合、事前に最適化された設定をデプロイできません。

1. **[モデル]** で、モデル設定を展開します。Studio の表に、事前い最適化され、選択可能な設定が表示されます。各オプションには、レイテンシーとスループットのメトリクスがあります。アプリケーションのニーズに最適なオプションを選択します。

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

## SageMaker AI Python SDK
<a name="preoptimized-sdk"></a>

プロジェクトで SageMaker AI Python SDK を使用して、事前最適化済みモデルをデプロイできます。まず、`ModelBuilder` クラスを使用して `Model` インスタンスを定義します。次に、`set_deployment_config()` メソッドを使用して、デプロイする事前最適化済み構成を設定します。その後、`build()` メソッドを使用してモデルを構築します。最後に、`deploy()` メソッドを使用してそれを推論エンドポイントにデプロイします。

次の例で使用されているクラスとメソッドの詳細については、SageMaker AI Python SDK ドキュメントの「[APIs](https://sagemaker.readthedocs.io/en/stable/api/index.html)」を参照してください。

**プロジェクトをセットアップするには**

1. アプリケーションコードで、必要なライブラリをインポートします。以下の例では、SDK for Python (Boto3) をインポートします。また、モデルの定義と操作に使用するモジュールを SageMaker AI Python SDK からインポートします。

   ```
   import boto3
   from sagemaker.serve.builder.model_builder import ModelBuilder
   from sagemaker.serve.builder.schema_builder import SchemaBuilder
   from sagemaker.session import Session
   ```

1. SageMaker AI セッションを初期化します。次の例では `Session()` クラスを使用しています。

   ```
   sagemaker_session = Session()
   ```

**モデルを定義するには**

1. `SchemaBuilder` インスタンスを作成し、入力サンプルと出力サンプルを提供します。モデルを定義するときに、このインスタンスを `ModelBuilder` クラスに指定します。これにより、SageMaker AI は入力と出力をシリアル化および逆シリアル化するためのマーシャリング関数を自動的に生成します。

   `SchemaBuilder` または `ModelBuilder` クラスの使用の詳細については、「[ModelBuilder を使用して Amazon SageMaker AI でモデルを作成する](how-it-works-modelbuilder-creation.md)」を参照してください。

   次の例では、`SchemaBuilder` クラスに入力文字列の例と出力文字列の例を提供します。

   ```
   response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun."
   sample_input = {
       "inputs": "What is the largest planet in the solar system?",
       "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6},
   }
   sample_output = [{"generated_text": response}]
   schema_builder = SchemaBuilder(sample_input, sample_output)
   ```

1. モデルを SageMaker AI に定義します。次の例では、`ModelBuilder` インスタンスを初期化するようにパラメータを設定します。

   ```
   model_builder = ModelBuilder(
       model="jumpstart-model-id",
       schema_builder=schema_builder,
       sagemaker_session=sagemaker_session,
       role_arn=sagemaker_session.get_caller_identity_arn(),
   )
   ```

   この例では、JumpStart モデルを使用しています。`jumpstart-model-id` を `meta-textgeneration-llama-3-70b` などの JumpStart モデルの ID に置き換えます。

**ベンチマークメトリクスを取得するには**

1. デプロイ対象の事前に最適化された設定を確認するには、SageMaker AI が提供するオプションを調べます。次の例をご覧ください。

   ```
   model_builder.display_benchmark_metrics()
   ```

   この `display_benchmark_metrics()` メソッドにより、次のようなテーブルが出力されます。

   ```
   | Instance Type   | Config Name   |   Concurrent Users |   Latency, TTFT (P50 in sec) |   Throughput (P50 in tokens/sec/user) |
   |:----------------|:--------------|-------------------:|-----------------------------:|--------------------------------------:|
   | ml.g5.48xlarge  | lmi-optimized |                  1 |                         2.25 |                                 49.70 |
   | ml.g5.48xlarge  | lmi-optimized |                  2 |                         2.28 |                                 21.10 |
   | ml.g5.48xlarge  | lmi-optimized |                  4 |                         2.37 |                                 14.10 |
   . . .
   | ml.p4d.24xlarge | lmi-optimized |                  1 |                         0.10 |                                137.40 |
   | ml.p4d.24xlarge | lmi-optimized |                  2 |                         0.11 |                                109.20 |
   | ml.p4d.24xlarge | lmi-optimized |                  4 |                         0.13 |                                 85.00 |
   . . .
   ```

   テーブルの最初の列には、選択した JumpStart モデルのホストに使用できる潜在的なインスタンスタイプが一覧表示されています。インスタンスタイプごとに、`Config Name` の下に、事前に最適化された設定の名前が一覧表示されます。SageMaker AI が提供する設定の名前は `lmi-optimized` です。インスタンスタイプと設定ごとに、テーブルにベンチマークメトリクスが表示されます。これらのメトリクスは、モデルがさまざまな数の同時ユーザーに対して対応するスループットとレイテンシーを示します。

1. ベンチマークメトリクスに基づいて、パフォーマンスニーズに最適なインスタンスタイプと設定名を選択します。これらの値は、デプロイ設定を作成するときに使用します。

**事前に最適化されたモデルをデプロイするには**

1. デプロイ設定を作成します。次の例では、`ModelBuilder` インスタンスを使用します。インスタンスタイプと設定名が `set_deployment_config()` メソッドに渡されます。

   ```
   model_builder.set_deployment_config(
       config_name="config-name", 
       instance_type="instance-type",
   )
   ```

   `lmi-optimized` などのテーブルの設定名 を *`config-name`* に置き換えます。`ml.p4d.24xlarge` などのテーブルのインスタンスタイプを `instance-type` に置き換えます。

1. モデルをビルドします。次の例では、`ModelBuilder` インスタンスの `.build()` メソッドを使用します。

   ```
   optimized_model = model_builder.build()
   ```

   `.build()` メソッドはデプロイ可能な `Model` インスタンスを返します。

1. モデルを推論エンドポイントにデプロイします。次の例では、`Model` インスタンスの `.deploy()` メソッドを使用します。

   ```
   predictor = optimized_model.deploy(accept_eula=True)
   ```

   `deploy()` メソッドは `Predictor` インスタンスを返します。このインスタンスを使用すると、モデルに推論リクエストを送信できます。

**推論リクエストを使用してモデルをテストするには**
+ モデルを推論エンドポイントにデプロイしたら、モデル予測をテストします。次の例では、`Predictor` インスタンスを使用して推論リクエストを送信します。

  ```
  predictor.predict(sample_input)
  ```

  モデルは、次のようなレスポンスで生成されるテキストを返します。

  ```
  {'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}
  ```

## 事前に最適化された JumpStart モデル
<a name="pre-optimized-js"></a>

設定が事前に最適化されている JumpStart モデルを次に示します。

**Meta**
+ Llama 3.1 70B Instruct
+ Llama 3.1 70B
+ Llama 3.1 405B Instruct FP8
+ Llama 3.1 405B FP8
+ Llama 3 8B Instruct
+ Llama 3 8B
+ Llama 3 70B Instruct
+ Llama 3 70B
+ Llama 2 70B Chat
+ Llama 2 7B Chat
+ Llama 2 13B Chat

**HuggingFace**
+ Mixtral 8x7B Instruct
+ Mixtral 8x7B
+ Mistral 7B Instruct
+ Mistral 7B

### 事前にコンパイルされた JumpStart モデル
<a name="pre-compiled"></a>

一部のモデルと設定について、SageMaker AI では、特定の AWS Inferentia インスタンスと AWS Trainium インスタンス用に事前にコンパイルされたモデルを利用できます。これらのモデルについて、コンパイル最適化ジョブを作成し、デプロイインスタンスタイプとして ml.inf2.48xlarge または ml.trn1.32xlarge を選択した場合、SageMaker AI はコンパイルされたアーティファクトを取得します。ジョブは、既にコンパイルされているモデルを使用するため、コンパイルを初めから実行する必要がなく、迅速に完了します。

以下は、SageMaker AI によってモデルが事前にコンパイルされた JumpStart モデルです。

**Meta**
+ Llama3 8B
+ Llama3 70B
+ Llama2 7B
+ Llama2 70B
+ Llama2 13B
+ Code Llama 7B
+ Code Llama 70B

**HuggingFace**
+ Mistral 7B