推論最適化ジョブを作成する - Amazon SageMaker AI

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

推論最適化ジョブを作成する

Studio または SageMaker AI Python SDK を使用して、推論最適化ジョブを作成できます。ジョブでは、選択した手法を適用してモデルを最適化します。詳細については、「最適化手法」を参照してください。

推論最適化ジョブのインスタンス料金

量子化またはコンパイルを適用する推論最適化ジョブを作成すると、SageMaker AI は、ジョブを実行するのに使用するインスタンスタイプを選択します。料金は、使用されたインスタンスに基づいて請求されます。

可能なインスタンスタイプとその料金の詳細については、「Amazon SageMaker の料金」ページの推論の最適化の料金情報を参照してください。

投機的デコードを適用するジョブについては、追加コストは発生しません。

最適化できるサポート対象モデルについては、「サポートされているモデルリファレンス」を参照してください。

Studio で推論最適化ジョブを作成するには、次の手順を実行します。

最適化ジョブの作成を開始するには
  1. SageMaker AI Studio で、次のいずれかのパスを使用して最適化ジョブを作成します。

    • JumpStart モデルのジョブを作成するには、次の手順を実行します。

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

      2. [すべてのパブリックモデル] ページで、モデルプロバイダーを選択して、最適化に対応するモデルのいずれかを選択します。

      3. モデルの詳細ページで、[最適化] を選択します。このボタンは、最適化に対応するモデルでのみ有効です。

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

    • ファインチューニングされた JumpStart モデルのジョブを作成するには、以下を実行します。

      1. ナビゲーションペインの [ジョブ] で、[トレーニング] を選択します。

      2. [トレーニングジョブ] ページで、JumpStart モデルのファインチューニングに使用したジョブの名前を選択します。これらのジョブのタイプは、[ジョブタイプ] 列で [JumpStart トレーニング] が指定されています。

      3. トレーニングジョブの詳細ページで、[最適化] を選択します。

    • カスタムモデルのジョブを作成するには、次の手順を実行します。

      1. ナビゲーションメニューの [ジョブ] で、[推論最適化] を選択します。

      2. [Create new job (新しいジョブを作成)] を選択します。

      3. [推論最適化ジョブの作成] ページで、[モデルを追加] を選択します。

      4. [モデルを追加] ウィンドウで、[カスタムモデル] を選択します。

      5. 以下のオプションのいずれかを選択してください。

        既存のモデルを使用する - SageMaker AI で既に作成したモデルを最適化するには、このオプションを選択します。

        既存のモデル名 - SageMaker AI モデルの名前を入力します。

        S3 から - Amazon S3 からモデルアーティファクトを提供するには、このオプションを選択します。[S3 URI] には、モデルアーティファクトを保存した Amazon S3 の場所の URI を入力します。

      6. (オプション) 出力モデル名には、ジョブが作成する最適化されたモデルのカスタム名を入力できます。名前を指定しない場合、Studio は選択内容に基づいて名前を自動的に生成します。

  2. [推論最適化ジョブの作成] ページの [ジョブ名] では、SageMaker AI によって割り当てられたデフォルト名を受け入れてもかまいません。カスタムジョブ名を入力する場合は、[ジョブ名] フィールドを選択して、[ジョブ名を入力] を選択します。

最適化設定を設定するには
  1. [デプロイインスタンスタイプ] で、モデルを最適化するインスタンスタイプを選択します。

    インスタンスタイプにより、選択できる最適化手法は影響を受けます。GPU ハードウェアを使用するほとんどのタイプでは、サポートされている手法は量子化投機的デコードです。Inferentia インスタンス ml.inf2.8xlarge AWSなど、カスタムシリコンを使用するインスタンスを選択した場合、サポートされている手法はコンパイルです。これは、その特定のハードウェアタイプのモデルをコンパイルするために使用できます。

  2. Studio が提供する最適化手法を 1 つ以上選択します。

    • [量子化] では、[Precision データ型]を選択します。

    • [投機デコーディング] を選択する場合は、以下のオプションの 1 つを選択します。

      • SageMaker AI ドラフトモデルを使用する – SageMaker AI に用意されているドラフトモデルを使用する場合に選択します。

        注記

        SageMaker AI ドラフトモデルを使用することにした場合は、ネットワーク分離も有効にする必要があります。Studio では、このオプションが [セキュリティ] の下にあります。

      • JumpStart ドラフトモデルを選択 – ドラフトモデルとして使用する JumpStart カタログからモデルを選択する場合に選択します。

      • 独自のドラフトモデルを選択 - 独自のドラフトモデルを使用し、その場所の S3 URI を指定する場合に選択します。

    • [高速モデルロード] を選択すると、Studio に OPTION_TENSOR_PARALLEL_DEGREE 環境変数が表示されます。[値] フィールドを使用して、テンソル並列処理の度合いを設定します。値は、[デプロイインスタンスタイプ] に対して選択したインスタンス内の GPU の数を均等に分割する必要があります。例えば、GPU 数が 8 のインスタンスを使用している場合にモデルをシャーディング (分割) するには、値 2、4、または 8 を使用します。

    • デプロイインスタンスタイプを AWSInferentia または AWSTrainium インスタンスに設定すると、Studio はサポートされているオプションの 1 つであることを示す場合があります。この場合、Studio ではこのオプションを選択します。

  3. [出力] で、Amazon S3 の場所の URI を入力します。ここで、SageMaker AI は、ジョブで作成された最適化モデルのアーティファクトを保存します。

  4. (オプション) IAM ロール、VPC、環境変数などの設定をよりきめ細かく制御するには、[詳細オプション] を展開します。詳細については、以下の「詳細オプション」を参照してください。

  5. ジョブの設定が完了したら、[ジョブの作成] を選択します。

    Studio にジョブの詳細ページが表示され、ジョブのステータスとそのすべての設定を確認できます。

高度なオプション

推論最適化ジョブを作成する際、次の詳細オプションを設定できます。

[設定]では、次のオプションを設定できます。

テンソル並列度

テンソル並列度の値。テンソル並列処理は、特定のモデルの重み、勾配、オプティマイザ状態がデバイス間で分割されるモデル並列処理の一種です。クラスター内の GPU の数を割り切れる値にする必要があります。

トークンの最大長

モデルによって生成されるトークンの数の制限。モデルが常にトークンの最大数を生成するとは限りません。

同時実行

同じ基盤となるハードウェアでモデルの複数のインスタンスを実行する機能。同時実行を使用すると、複数のユーザーに予測を提供し、ハードウェア使用率を最大化できます。

バッチサイズ

モデルでバッチ推論が実行される場合は、このオプションを使用して、モデルが処理するバッチのサイズを制御します。

バッチ推論は、バッチ観測に基づいてモデル予測を生成します。このオプションは、データセットが大きい場合や、推論のリクエストにすぐに応答する必要がない場合に適しています。

[セキュリティ] では、次のオプションを設定できます。

IAM ロール

SageMaker AI がユーザーに代わってタスクを実行できるようにする IAM ロール。モデルの最適化中、SageMaker AI には以下のアクセス許可が必要です。

  • S3 バケットからの入力データの読み取り

  • S3 バケットへのモデルアーティファクトを書き込み

  • Amazon CloudWatch Logs へのログの書き込み

  • Amazon CloudWatch へのメトリクスの公開

これらのすべてのタスクに対するアクセス許可を IAM ロールに付与します。

詳細については、「SageMaker AI 実行ロールの使用方法」を参照してください。

暗号化 KMS キー

AWS Key Management Service() のキーAWS KMS。SageMaker AI は、SageMaker AI がモデルを Amazon S3 にアップロードするときに、これらのキーを使用して、最適化されたモデルのアーティファクトを暗号化します。

VPC

SageMaker AI は、この情報を使用してネットワークインターフェイスを作成し、モデルコンテナにアタッチします。ネットワークインターフェイスは、インターネットに接続されていない VPC 内のネットワーク接続をモデルコンテナに提供します。また、モデルがプライベート VPC 内のリソースに接続できるようにします。

詳細については、「Amazon VPC のリソースへのアクセス権を SageMaker AI のホストされたエンドポイントに付与する」を参照してください。

ネットワーク分離の有効化

コンテナのインターネットアクセスを制限する場合は、このオプションを有効にします。ネットワーク分離で実行されるコンテナは、アウトバウンドネットワークコールを実行できません。

注記

このオプションは、投機的デコードで最適化し、SageMaker AI ドラフトモデルを使用するときにアクティブ化する必要があります。

ネットワーク分離の詳細については、「ネットワークの隔離」を参照してください。

[詳細なコンテナ定義] では、次のオプションを設定できます。

停止条件

ジョブの実行時間の制限を指定します。ジョブが制限時間に達すると、SageMaker AI はジョブを終了します。このオプションを使用してコストを制限します。

タグ

最適化ジョブに関連付けられたキーと値のペア。

タグの詳細については、「AWS 全般のリファレンス」の「Tagging your AWS resources」を参照してください。

環境変数

モデルコンテナに設定する環境変数を定義するキーと値のペア。

プロジェクトで SageMaker AI Python SDK を使用して、推論最適化ジョブを作成できます。まず、ModelBuilder クラスを使用して Model インスタンスを定義します。次に、optimize() メソッドを使用して、量子化、投機的デコード、またはコンパイルでモデルを最適化するジョブを実行します。ジョブが完了したら、deploy() メソッドを使用してモデルを推論エンドポイントにデプロイします。

次の例で使用されているクラスとメソッドの詳細については、SageMaker AI Python SDK ドキュメントの「APIs」を参照してください。

プロジェクトをセットアップするには
  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 from pathlib import Path
  2. SageMaker AI セッションを初期化します。次の例では Session() クラスを使用しています。

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

    SchemaBuilder または ModelBuilder クラスの使用の詳細については、「ModelBuilder を使用して Amazon SageMaker AI でモデルを作成する」を参照してください。

    次の例では、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)
  2. モデルを 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-idmeta-textgeneration-llama-3-70b などの JumpStart モデルの ID に置き換えます。

    注記

    投機的デコードで最適化し、SageMaker AI ドラフトを使用する場合は、ネットワーク分離を有効にする必要があります。これを有効にするには、ModelBuilder インスタンスを初期化するときに次の引数を含めます。

    enable_network_isolation=True,

    ネットワーク分離の詳細については、「ネットワークの隔離」を参照してください。

量子化で最適化するには
  1. 量子化ジョブを実行するには、optimize() メソッドを使用して quantization_config 引数を設定します。次の例では、最適化コンテナの環境変数として OPTION_QUANTIZE を設定しています。

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, quantization_config={ "OverrideEnvironment": { "OPTION_QUANTIZE": "awq", }, }, output_path="s3://output-path", )

    この例では、instance-typeml.p4d.24xlarge などの ML インスタンスに置き換えます。s3://output-path を、ジョブが作成する最適化されたモデルを保存する S3 の場所へのパスに置き換えます。

    optimize() メソッドは、モデルをエンドポイントにデプロイするために使用できる Model オブジェクトを返します。

  2. ジョブが完了したら、モデルをデプロイします。次の例では、deploy() メソッドを使用しています。

    predictor = optimized_model.deploy( instance_type="instance-type", accept_eula=True, )

    この例では、instance-typeml.p4d.24xlarge などの ML インスタンスに置き換えます。

    deploy() メソッドは、モデルをホストするエンドポイントに推論リクエストを送信するために使用できる予測子オブジェクトを返します。

SageMaker AI ドラフトモデルを使用して投機的デコードで最適化するには

投機的デコードでモデルを最適化する際は、SageMaker AI に用意されているドラフトモデルを使用するか、独自のモデルを使用するかを選択できます。次の例では、SageMaker AI ドラフトモデルを使用しています。

前提条件

投機的デコードと SageMaker AI ドラフトモデルで最適化するには、モデルを定義する際にネットワーク分離を有効にする必要があります。

  1. 投機的デコードジョブを実行するには、optimize() メソッドを使用し、speculative_decoding_config 引数を設定します。次の例では、SageMaker AI に用意されているドラフトモデルを使用するように ModelProvider キーを SAGEMAKER に設定しています。

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, speculative_decoding_config={ "ModelProvider": "SAGEMAKER", }, )

    この例では、instance-typeml.p4d.24xlarge などの ML インスタンスに置き換えます。

    optimize() メソッドは、モデルをエンドポイントにデプロイするために使用できる Model オブジェクトを返します。

  2. ジョブが完了したら、モデルをデプロイします。次の例では、deploy() メソッドを使用しています。

    predictor = optimized_model.deploy(accept_eula=True)

    deploy() メソッドは、モデルをホストするエンドポイントに推論リクエストを送信するために使用できる予測子オブジェクトを返します。

カスタムドラフトモデルを使用して投機的デコードで最適化するには

カスタムドラフトモデルを SageMaker AI に提供する前に、まずモデルアーティファクトを Amazon S3 にアップロードする必要があります。

次の例は、カスタムドラフトモデルを提供する 1 つの方法を示しています。この例では、Hugging Face Hub からドラフトモデルをダウンロードし、それを Amazon S3 にアップロードして、speculative_decoding_config 引数に S3 URI を提供しています。

  1. Hugging Face Hub からモデルをダウンロードする場合は、huggingface_hub ライブラリをプロジェクトに追加し、snapshot_download() メソッドを使用してモデルをダウンロードします。次の例では、モデルをローカルディレクトリにダウンロードしています。

    import huggingface_hub huggingface_hub.snapshot_download( repo_id="model-id", revision="main", local_dir=download-dir, token=hf-access-token, )

    この例では、model-id を Hugging Face Hub のモデルの ID(例:meta-llama/Meta-Llama-3-8B)に置き換えます。download-dir をローカルディレクトリに置き換えます。hf-access-token をユーザーアクセストークンに置き換えます。アクセストークンを取得する方法については、Hugging Face ドキュメントの「User access tokens」を参照してください。

    huggingface_hub ライブラリの詳細については、Hugging Face ドキュメントの「Hub client library」を参照してください。

  2. ダウンロードしたモデルを SageMaker AI で使用できるようにするには、Amazon S3 にアップロードします。次の例では、sagemaker_session オブジェクトを使用してモデルをアップロードしています。

    custom_draft_model_uri = sagemaker_session.upload_data( path=hf_local_download_dir.as_posix(), bucket=sagemaker_session.default_bucket(), key_prefix="prefix", )

    この例では、prefix を S3 のドラフトモデルを区別するのに役立つ修飾子(例: spec-dec-custom-draft-model)に置き換えます。

    upload_data() メソッドは、モデルアーティファクトの S3 URI を返します。

  3. 投機的デコードジョブを実行するには、optimize() メソッドを使用し、speculative_decoding_config 引数を設定します。次の例では、ModelSource キーをカスタムドラフトモデルの S3 URI に設定しています。

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, speculative_decoding_config={ "ModelSource": custom_draft_model_uri + "/", }, )

    この例では、instance-typeml.p4d.24xlarge などの ML インスタンスに置き換えます。

    optimize() メソッドは、モデルをエンドポイントにデプロイするために使用できる Model オブジェクトを返します。

  4. ジョブが完了したら、モデルをデプロイします。次の例では、deploy() メソッドを使用しています。

    predictor = optimized_model.deploy(accept_eula=True)

    deploy() メソッドは、モデルをホストするエンドポイントに推論リクエストを送信するために使用できる予測子オブジェクトを返します。

コンパイルで最適化するには
  1. コンパイルジョブを実行するには、optimize() メソッドを使用して compilation_config 引数を設定します。次の例では、OverrideEnvironment キーを使用して、最適化コンテナに必要な環境変数を設定しています。

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, compilation_config={ "OverrideEnvironment": { "OPTION_TENSOR_PARALLEL_DEGREE": "24", "OPTION_N_POSITIONS": "8192", "OPTION_DTYPE": "fp16", "OPTION_ROLLING_BATCH": "auto", "OPTION_MAX_ROLLING_BATCH_SIZE": "4", "OPTION_NEURON_OPTIMIZE_LEVEL": "2", } }, output_path="s3://output-path", )

    この例では、instance-type を高速ハードウェアを使用した ML インスタンスタイプに設定しています。たとえば、AWSInferentia による高速推論の場合、 タイプを などの Inf2 インスタンスに設定できますml.inf2.48xlarges3://output-path を、ジョブが作成する最適化されたモデルを保存する S3 の場所へのパスに置き換えます。

  2. ジョブが完了したら、モデルをデプロイします。次の例では、deploy() メソッドを使用しています。

    predictor = optimized_model.deploy(accept_eula=True)

    deploy() メソッドは、モデルをホストするエンドポイントに推論リクエストを送信するために使用できる予測子オブジェクトを返します。

推論リクエストを使用してモデルをテストするには
  • デプロイされたモデルにテスト推論リクエストを送信するには、予測子オブジェクトの predict() メソッドを使用します。次の例では、モデルを定義するために、例の SchemaBuilder クラスにも渡された sample_input 変数を渡しています。

    predictor.predict(sample_input)

    サンプル入力にはプロンプト "What is the largest planet in the solar system?" があります。次の例に示すように、predict() メソッドはモデルが生成したレスポンスを返します。

    {'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 . . .'}

AWSSDK for Python (Boto3) を使用して、推論最適化ジョブをプログラムで作成および管理できます。このセクションでは、さまざまな最適化手法の例を示します。

前提条件

Boto3 で最適化ジョブを作成する前に、以下を確認してください。

  • 設定されたAWS認証情報 - 適切なアクセス許可でAWS認証情報をセットアップする

  • SageMaker AI モデルを作成しました (既存のモデルを使用している場合)

  • S3 でトレーニングデータを準備 (投機的デコード最適化用、最大 4096 のコンテキスト長をサポート)

  • 必要なアクセス許可を持つ IAM ロール - 実行ロールには、S3 にアクセスして SageMaker リソースを作成するアクセス許可が必要です

例: EAGLE 投機的デコードを使用した最適化ジョブの作成 (Llama 3.3 70B)

この例では、EAGLE 投機的デコード手法を使用して大規模言語モデルの最適化ジョブを作成する方法を示します。

import boto3 # Initialize SageMaker client sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') # Step 1: Create a SageMaker model (if not already created) model_response = sagemaker_client.create_model( ModelName='meta-llama-3-3-70b-instruct', ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', PrimaryContainer={ 'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>', 'ModelDataSource': { 'S3DataSource': { 'S3Uri': 's3://my-bucket/models/Llama-3.3-70B-Instruct/', 'S3DataType': 'S3Prefix', 'CompressionType': 'None' } }, 'Environment': { 'SAGEMAKER_ENV': '1', 'SAGEMAKER_MODEL_SERVER_TIMEOUT': '3600' } } ) # Step 2: Create optimization job with speculative decoding optimization_response = sagemaker_client.create_optimization_job( OptimizationJobName='llama-optim-job-eagle-speculative-decoding', RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', ModelSource={ 'SageMakerModel': { 'ModelName': 'meta-llama-3-3-70b-instruct' } }, DeploymentInstanceType='ml.p4d.24xlarge', # MaxInstanceCount specifies the maximum number of instances for distributed training MaxInstanceCount=4, OptimizationConfigs=[ { 'ModelSpeculativeDecodingConfig': { 'Technique': 'EAGLE', 'TrainingDataSource': { 'S3Uri': 's3://my-bucket/training_data/ultrachat_8k/', 'S3DataType': 'S3Prefix' } } } ], OutputConfig={ 'S3OutputLocation': 's3://my-bucket/optimized-models/llama-optim-output/', }, StoppingCondition={ 'MaxRuntimeInSeconds': 432000 # 5 days } ) print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")

例: S3 モデルアーティファクトから最適化ジョブを作成する (Qwen3 32B)

この例では、S3 から直接モデルアーティファクトを使用して最適化ジョブを作成する方法を示します。

import boto3 sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') # Create model from S3 artifacts model_response = sagemaker_client.create_model( ModelName='qwen3-32b', ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', PrimaryContainer={ 'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>', 'Mode': 'SingleModel', 'ModelDataSource': { 'S3DataSource': { 'S3Uri': 's3://my-bucket/models/qwen3-32b/', 'S3DataType': 'S3Prefix', 'CompressionType': 'None' } }, 'Environment': { 'AWS_REGION': 'us-west-2' } } ) # Create optimization job with smaller training dataset optimization_response = sagemaker_client.create_optimization_job( OptimizationJobName='qwen3-optim-job-eagle', RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', ModelSource={ 'SageMakerModel': { 'ModelName': 'qwen3-32b' } }, DeploymentInstanceType='ml.g6.48xlarge', MaxInstanceCount=4, OptimizationConfigs=[ { 'ModelSpeculativeDecodingConfig': { 'Technique': 'EAGLE', 'TrainingDataSource': { 'S3Uri': 's3://my-bucket/training_data/ultrachat_1k/', 'S3DataType': 'S3Prefix' } } } ], OutputConfig={ 'S3OutputLocation': 's3://my-bucket/optimized-models/qwen3-optim-output/', }, StoppingCondition={ 'MaxRuntimeInSeconds': 432000 # 5 days } ) print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")

例: 最適化ジョブのモニタリングと管理

最適化ジョブを作成したら、次のコマンドを使用してその進行状況をモニタリングし、管理できます。

import boto3 sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') # Describe optimization job to check status describe_response = sagemaker_client.describe_optimization_job( OptimizationJobName='llama-optim-job-eagle-speculative-decoding' ) print(f"Job Status: {describe_response['OptimizationJobStatus']}") # List all optimization jobs (with pagination) list_response = sagemaker_client.list_optimization_jobs( MaxResults=10, SortBy='CreationTime', SortOrder='Descending' ) print("\nRecent optimization jobs:") for job in list_response['OptimizationJobSummaries']: print(f"- {job['OptimizationJobName']}: {job['OptimizationJobStatus']}") # Stop a running optimization job if needed # sagemaker_client.stop_optimization_job( # OptimizationJobName='llama-optim-job-eagle-speculative-decoding' # ) # Delete a completed or failed optimization job # sagemaker_client.delete_optimization_job( # OptimizationJobName='llama-optim-job-eagle-speculative-decoding' # )

Eagle Heads による投機的デコードは、4 つのシーケンシャルトレーニングジョブを実行します。各ジョブは、次のジョブへの入力となる出力を生成します。最終ジョブからの出力のみが S3 バケットに配信されます。中間出力は暗号化され、内部 SageMaker AI サービスバケットに最大 20 日間保存されます。SageMaker AI には、それらを復号化するアクセス許可はありません。その期間より前に中間データを削除する場合は、ジョブが完了または停止したことを確認し、このデータを削除するサポートケース [https://docs.aws.amazon.com/awssupport/latest/user/case-management.html#creating-a-support-case] を開きます。AWSアカウント ID と最適化ジョブ ARN をリクエストに含めます。

SageMaker AI ドラフトモデルの制限事項

SageMaker AI ドラフトモデルで最適化するモデルについては、要件、制限、サポートされている環境変数に注意してください。

要件

以下を実行する必要があります。

  • SageMaker JumpStart に用意されているモデルを使用します。

  • モデルデプロイに対してネットワーク分離を有効にします。

  • モデルを大規模モデル推論 (LMI) コンテナにデプロイする場合は、バージョン 0.28.0 以降の DJLServing コンテナを使用します。

    使用可能なコンテナについては、Deep Learning Containers GitHub リポジトリの「Large Model Inference Containers」を参照してください。

  • JumpStart モデルをファインチューニングする場合は、モデルの重みに Safetensor 形式を使用します。

    この形式の詳細については、Hugging Face ドキュメントの「Safetensors」を参照してください。

制限事項

次のことはできません。

  • ローカルモードで作成したローカルテスト環境でモデルを使用する。

    ローカルモードの詳細については、SageMaker AI Python SDK ドキュメントの「ローカルモード」を参照してください。

  • AWS Systems Managerエージェント (SSM エージェント) を介してモデルコンテナにアクセスします。SSM エージェントはモデルコンテナへのシェルレベルのアクセスを提供するため、Amazon CloudWatch でプロセスをデバッグし、コマンドをログに記録できます。

    この機能の詳細については、「SSM 経由でコンテナにアクセスする」を参照してください。

  • プロセスがクラッシュした場合に発生するコアダンプのモデルコンテナを設定する。

    モデルコンテナからのコアダンプの詳細については、「ProductionVariantCoreDumpConfig」を参照してください。

  • モデルをマルチモデルエンドポイント、マルチコンテナエンドポイント、または推論コンポーネントをホストするエンドポイントにデプロイする。

    これらのエンドポイントタイプについては、「マルチモデルエンドポイント」、「マルチコンテナエンドポイント」、「推論コンポーネント」を参照してください。

  • モデル用のモデルパッケージを作成する。モデルパッケージを使用して、公開するデプロイ可能なモデルを作成しますAWS Marketplace。

    この機能の詳細については、「モデルパッケージのリソースを作成する」を参照してください。

  • モデルコンテナで独自の推論コードを使用する。

  • モデルコンテナで requirements.txt ファイルを使用する。このタイプのファイルにはパッケージの依存関係が一覧表示されます。

  • Hugging Face パラメータ trust_remote_code を有効にする。

サポートされている環境変数

次の環境変数ではコンテナのみを設定できます。

  • 大規模モデル推論 (LMI) コンテナの一般的な環境変数。

    これらの変数の詳細については、LMI コンテナドキュメントの「Environment Variable Configurations」を参照してください。

  • Hugging Face Hub が Git リポジトリで提供しているパッケージの一般的な環境変数。

    リポジトリについては、GitHub の「Hugging Face」を参照してください。

  • 一般的な PyTorch および CUDA 環境変数。

    これらの変数の詳細については、PyTorch ドキュメントの「Torch Environment Variables」を参照してください。