

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立推論最佳化任務
<a name="model-optimize-create-job"></a>

您可以使用 Studio 或 SageMaker AI Python SDK 建立推論最佳化任務。任務會透過套用您選擇的技術來最佳化模型。如需詳細資訊，請參閱[最佳化技術](model-optimize.md#optimization-techniques)。

**推論最佳化任務的執行個體定價**  
當您建立套用量化或編譯的推論最佳化任務時，SageMaker AI 會選擇要用來執行任務的執行個體類型。會根據使用的執行個體向您收費。  
如需可能的執行個體類型及其定價詳細資訊，請參閱 [Amazon SageMaker 定價](https://aws.amazon.com/sagemaker/pricing/)頁面上的推論最佳化定價資訊。  
對於套用推測性解碼的任務，您不需要支付額外費用。

如需您可以最佳化的支援模型，請參閱[支援的模型參考](optimization-supported-models.md)。

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

完成下列步驟以在 Studio 中建立推論最佳化任務。

**開始建立最佳化任務**

1. 在 SageMaker AI Studio 中，透過下列任一路徑建立最佳化任務：
   + 若要為 JumpStart 模型建立任務，請執行下列動作：

     1. 在導覽選單中，選擇 **JumpStart**。

     1. **在所有公有模型**頁面上，選擇模型提供者，然後選擇其中一個支援最佳化的模型。

     1. 在模型詳細資訊頁面上，選擇**最佳化**。此按鈕僅對支援最佳化的模型啟用。

     1. 在**建立推論最佳化任務**頁面上，某些 JumpStart 模型會要求您先簽署終端使用者授權協議 (EULA)，才能繼續進行。若有要求，請檢閱**授權協議**一節中的授權條款。如果這些條款適用於您的使用案例，請選取**我接受 EULA 並已閱讀條款與條件**核取方塊
   + 若要為微調的 JumpStart 模型建立任務，請執行下列動作：

     1. 在導覽功能表中，於**任務**下方，選擇**訓練**。

     1. 在**訓練任務**頁面上，選擇您用來微調 JumpStart 模型的任務名稱。這些任務在**任務類型**欄中的類型為 **JumpStart 訓練**。

     1. 在訓練任務的詳細資訊頁面上，選擇**最佳化**。
   + 若要為自訂模型建立任務，請執行下列動作：

     1. 在導覽功能表中，於**任務**下方，選擇**推論最佳化**。

     1. 選擇**建立新任務**。

     1. 在**建立推論最佳化任務**頁面上，選擇**新增模型**。

     1. 在**新增模型**視窗中，選擇**自訂模型**。

     1. 請選擇下列其中一個選項：

        **使用現有的模型** - 選取此選項可最佳化您已在 SageMaker AI 中建立的模型。

        **現有模型名稱** - 輸入 SageMaker AI 模型的名稱。

        **從 S3** - 選取此選項以提供來自 Amazon S3 的模型成品。針對 **S3 URI**，輸入 Amazon S3 中存放模型成品之位置的 URI。

     1. （選用） 對於****輸出模型名稱****，您可以輸入任務建立之最佳化模型的自訂名稱。如果您不提供名稱，Studio 會根據您的選擇自動產生名稱。

1. 在**建立推論最佳化任務**頁面上，針對**任務名稱**，您可以接受 SageMaker AI 指派的預設名稱。或者，若要輸入自訂任務名稱，請選擇**任務名稱**欄位，然後選擇**輸入任務名稱**。

**設定最佳化組態**

1. 針對**部署執行個體類型**，選擇您要最佳化其模型的執行個體類型。

   執行個體類型會影響您可以選擇的最佳化技術。對於大多數使用 GPU 硬體的類型，支援的技術是**量化**和**推測性解碼**。如果您選擇使用自訂晶片的執行個體，例如 AWS Inferentia 執行個體 ml.inf2.8xlarge，則支援的技術為**編譯**，可用來編譯該特定硬體類型的模型。

1. 選取 Studio 提供的一或多個最佳化技術：
   + 如果您選取**量化**，請選擇**精確度資料類型**的資料類型。
   + 如果您選取**推測性解碼**，請選擇下列其中一個選項：
     + **使用 SageMaker AI 草稿模型** – 選擇使用 SageMaker AI 提供的草稿模型。
**注意**  
如果您選擇使用 SageMaker AI 草稿模型，則還需啟用網路隔離。Studio 在**安全性**下方提供此選項。
     + **選擇 JumpStart 草稿模型** – 選擇從 JumpStart 目錄中選取模型，以用作您的草稿模型。
     + **選擇您自己的草稿模型** – 選擇使用自己的草稿模型，並提供找到它的 S3 URI。
   + 如果您選擇**快速載入模型**，Studio 會顯示 `OPTION_TENSOR_PARALLEL_DEGREE` 環境變數。使用**值**欄位來設定張量平行處理的程度。值必須平均除以您為**部署執行個體類型**所選擇執行個體中的 GPU 數量。例如，若要在使用具有 8 個 GPU 的執行個體時分割模型，請使用值 2、4 或 8。
   + 如果您將**部署執行個體類型**設定為 AWS Inferentia 或 AWS Trainium 執行個體，Studio 可能會顯示**編譯**是支援的選項之一。在這種情況下，Studio 會為您選取此選項。

1. 針對**輸出**，輸入 Amazon S3 中位置的 URI。在該處，SageMaker AI 會存放任務所建立最佳化模型的成品。

1. (選用) 展開**進階選項**，對 IAM 角色、VPC 和環境變數等設定進行更精細的控制。如需詳細資訊，請參閱下方的*進階選項*。

1. 完成任務設定後，請選擇**建立任務**。

   Studio 會顯示任務詳細資訊頁面，其中會顯示任務狀態及其所有設定。

### 進階選項
<a name="set-advanced-optimization-options"></a>

您可以在建立推論最佳化任務時設定下列進階選項。

在**組態**下，您可以設定下列選項：

**張量平行程度 **  
*張量平行處理*程度的值。張量平行化是模型平行化類型，其中特定模型權重、漸層與最佳化工具狀態會跨裝置分割。值必須平均除以叢集中的 GPU 數量。

**記號長度上限**  
模型所要產生記號數量的限制。請注意，模型不一定會產生達數量上限的記號。

**並行**  
能夠在相同的基礎硬體上執行模型的多個執行個體。使用並行為多個使用者提供預測，並最大化硬體使用率。

**批次大小**  
如果您的模型執行*批次推論*，請使用此選項來控制模型處理的批次大小。  
批次推論會根據觀察批次產生模型預測。對於大型資料集來說，或者如果您不需要立即回應推論請求，這是不錯的選擇。

在**安全性**下，您可以設定下列選項：

**IAM 角色**  
IAM 角色，可讓 SageMaker AI 代表您執行任務。在模型最佳化期間，SageMaker AI 需要您的許可才能：  
+ 從 S3 儲存貯體讀取輸入資料
+ 將模型成品寫入 S3 儲存貯體
+ 將日誌寫入 Amazon CloudWatch Logs
+ 將指標發布至 Amazon CloudWatch
您可以將所有這些任務的許可授予 IAM 角色。  
如需詳細資訊，請參閱[如何使用 SageMaker AI 執行角色](sagemaker-roles.md)。

**加密 KMS 金鑰**  
金鑰 in AWS Key Management Service (AWS KMS)。當 SageMaker AI 將模型上傳至 Amazon S3 時，SageMaker AI 會使用其金鑰來加密最佳化模型的成品。

**VPC**  
SageMaker AI 會使用此資訊來建立網路介面，並將其附加至您的模型容器。網路介面會為模型容器提供您的 VPC 內的網路連線，而不會連線至網際網路。也可讓您的模型連線至私有 VPC 內的資源。  
如需詳細資訊，請參閱[讓 SageMaker AI 託管的端點可以存取 Amazon VPC 中的資源](host-vpc.md)。

**啟用網路隔離**  
如果您想要限制容器的網際網路存取，請啟用此選項。使用網路隔離執行的容器無法進行任何傳出網路呼叫。  
當您使用推測性解碼進行最佳化，並使用 SageMaker AI 草稿模型時，必須啟用此選項。  
如需網路隔離的相關資訊，請參閱[網路隔離](mkt-algo-model-internet-free.md#mkt-algo-model-internet-free-isolation)。

在**進階容器定義**下，您可以設定下列選項：

**停止條件**  
指定任務可以執行的時間長度限制。當任務達到時間限制時，SageMaker AI 會結束任務。使用此選項來限制成本。

**Tags (標籤)**  
與最佳化任務相關聯的鍵-值配對。  
如需標籤的詳細資訊，請參閱*AWS 一般參考*中的[標記 AWS 資源](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)。

**環境變數**  
鍵-值配對，定義要在模型容器中設定的環境變數。

## SageMaker AI Python SDK
<a name="optimize-create-pysdk"></a>

您可以在專案中使用 SageMaker AI Python SDK 建立推論最佳化任務。首先，您可以使用 `ModelBuilder` 類別定義 `Model` 執行個體。然後，您可以使用 `optimize()` 方法執行任務，以透過量化、推測性解碼或編譯來最佳化模型。任務完成時，您可以使用 `deploy()` 方法將模型部署至推論端點。

如需下列範例中所使用類別和方法的詳細資訊，請參閱 SageMaker AI Python SDK 文件中的 [API](https://sagemaker.readthedocs.io/en/stable/api/index.html)。

**設定專案**

1. 在您的應用程式程式碼中，匯入必要的程式庫。以下範例會使用適用於 Python 的 SDK (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
   ```

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` 取代為 JumpStart 模型的 ID，例如 `meta-textgeneration-llama-3-70b`。
**注意**  
如果您想要使用推測性解碼進行最佳化，並且想要使用 SageMaker AI 草稿，則必須啟用網路隔離。若要啟用它，請在初始化 `ModelBuilder` 執行個體時包含下列引數：  

   ```
   enable_network_isolation=True,
   ```
如需網路隔離的相關資訊，請參閱[網路隔離](mkt-algo-model-internet-free.md#mkt-algo-model-internet-free-isolation)。

**使用量化進行最佳化**

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-type`* 將取代為 ML 執行個體，例如 `ml.p4d.24xlarge`。將 *`s3://output-path`* 取代為您存放任務所建立最佳化模型的 S3 位置路徑。

   `optimize()` 方法會傳回 `Model` 物件，您可以使用該物件將模型部署至端點。

1. 當任務完成時，部署模型。下列範例使用 `deploy()` 方法：

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

   在此範例中，*`instance-type`* 將取代為 ML 執行個體，例如 `ml.p4d.24xlarge`。

   `deploy()` 方法會傳回預測器物件，您可以使用此物件將推論請求傳送至託管模型的端點。

**使用 SageMaker AI 草稿模型透過推測性解碼進行最佳化**

當您使用推測性解碼來最佳化模型時，您可以選擇使用 SageMaker AI 提供的草稿模型，也可以使用自己的模型。下列範例使用 SageMaker AI 草稿模型。
**先決條件**  
若要使用推測性解碼和 SageMaker AI 草稿模型進行最佳化，您必須在定義模型時啟用網路隔離。

1. 若要執行推測性解碼任務，請使用 `optimize()` 方法，並設定 `speculative_decoding_config` 引數。下列範例會將 `ModelProvider` 金鑰設定為 `SAGEMAKER`，以使用 SageMaker AI 提供的草稿模型。

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

   在此範例中，*`instance-type`* 將取代為 ML 執行個體，例如 `ml.p4d.24xlarge`。

   `optimize()` 方法會傳回 `Model` 物件，您可以使用該物件將模型部署至端點。

1. 當任務完成時，部署模型。下列範例使用 `deploy()` 方法：

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

   `deploy()` 方法會傳回預測器物件，您可以使用此物件將推論請求傳送至託管模型的端點。

**使用自訂草稿模型透過推測性解碼進行最佳化**

您必須先將模型成品上傳到 Amazon S3，才能將自訂草稿模型提供給 SageMaker AI。

下列範例示範提供一種可能的自訂草稿模型方式。這些範例會從 Hugging Face 中樞下載草稿模型，將其上傳至 Amazon S3，並將 S3 URI 提供給 `speculative_decoding_config` 引數。

1. 如果您想要從 Hugging Face 中樞下載模型，請將 `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 中樞的模型 ID，例如 `meta-llama/Meta-Llama-3-8B`。將 *`download-dir`* 取代為本機目錄。將 *`hf-access-token`* 取代為您的存取記號。若要了解如何取得您的存取記號，請參閱 Hugging Face 文件中的[使用者存取記號](https://huggingface.co/docs/hub/en/security-tokens)。

   如需 `huggingface_hub` 程式庫的詳細資訊，請參閱 Hugging Face 文件中的 [中樞用戶端程式庫](https://huggingface.co/docs/huggingface_hub/en/index)。

1. 若要讓下載的模型可供 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。

1. 若要執行推測性解碼任務，請使用 `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-type`* 將取代為 ML 執行個體，例如 `ml.p4d.24xlarge`。

   `optimize()` 方法會傳回 `Model` 物件，您可以使用該物件將模型部署至端點。

1. 當任務完成時，部署模型。下列範例使用 `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 執行個體類型。例如，對於使用 AWS Inferentia 的加速推論，您可以將 類型設定為 Inf2 執行個體，例如 `ml.inf2.48xlarge`。將 *`s3://output-path`* 取代為您存放任務所建立最佳化模型的 S3 位置路徑。

1. 當任務完成時，部署模型。下列範例使用 `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 . . .'}
  ```

## AWS 適用於 Python 的 SDK (Boto3)
<a name="optimize-create-pysdk-boto"></a>

您可以使用適用於 Python (Boto3) 的 AWS SDK，以程式設計方式建立和管理推論最佳化任務。本節提供不同最佳化技術的範例。

**先決條件**

使用 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 進行推測解碼會執行四個循序訓練任務。每個任務都會產生輸出，成為下一個任務的輸入。只有最終任務的輸出會傳送到您的 S3 儲存貯體。中繼輸出會加密，並存放在內部 SageMaker AI 服務儲存貯體中長達 20 天。SageMaker AI 沒有解密它們的許可。如果您想要在該時段之前移除中繼資料，請確定您的任務已完成或已停止，然後針對要刪除的資料開啟支援案例 【[https://docs.aws.amazon.com/awssupport/latest/user/case-management.html\$1creating-a-support-case](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html#creating-a-support-case)：//】。在請求中包含 AWS 您的帳戶 ID 和最佳化任務 ARN。

## SageMaker AI 草稿模型的限制
<a name="sm-draft-model-limitations"></a>

對於您使用 SageMaker AI 草稿模型最佳化的任何模型，請注意需求、限制和支援的環境變數。

**要求**

您必須執行下列動作：
+ 使用 SageMaker JumpStart 提供的模型。
+ 啟用模型部署的網路隔離。
+ 如果您將模型部署到大型模型推論 (LMI) 容器，請使用 0.28.0 版或更新版本的 DJLServing 容器。

  如需可用的容器，請參閱深度學習容器 GitHub 儲存庫中的[大型模型推論容器](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#large-model-inference-containers)。
+ 如果您微調 JumpStart 模型，請針對模型權重使用安全張量格式。

  如需此格式的詳細資訊，請參閱 Hugging Face 文件中的[安全張量](https://huggingface.co/docs/safetensors/en/index)。

**限制**

您無法執行下列：
+ 在您透過本機模式建立的本機測試環境中使用模型。

  如需本機模式的詳細資訊，請參閱 SageMaker AI Python SDK 文件中的[本機模式](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode)。
+ 透過 AWS Systems Manager 代理程式 (SSM 代理程式） 存取模型容器。SSM Agent 提供模型容器的殼層層級存取權，讓您可以使用 Amazon CloudWatch 對程序和日誌命令進行偵錯。

  如需使用此功能的詳細資訊，請參閱「[透過 SSM 存取容器](ssm-access.md)」。
+ 針對程序損毀時發生的核心傾印設定模型容器。

  如需模型容器核心傾印的詳細資訊，請參閱 [ProductionVariantCoreDumpConfig](sagemaker/latest/APIReference/API_ProductionVariantCoreDumpConfig.html)。
+ 將模型部署到多模型端點、多容器端點或託管推論元件的端點。

  如需有關這些端點類型的詳細資訊，請參閱 [多模型端點](multi-model-endpoints.md)、[多容器端點](multi-container-endpoints.md) 和 [推論元件](realtime-endpoints-deploy-models.md#inference-components) 。
+ 建立模型的模型套件。您可以使用模型套件來建立發佈的可部署模型 AWS Marketplace。

  如需使用此功能的詳細資訊，請參閱「[建立模型套件資源](sagemaker-mkt-create-model-package.md)」。
+ 在模型容器中使用您自己的推論程式碼。
+ 在模型容器中使用 `requirements.txt` 檔案。這種類型的檔案會列出套件相依性。
+ 啟用 Hugging Face 參數 `trust_remote_code`。

**支援的環境變數**

您只能使用下列環境變數設定容器：
+ 大型模型推論 (LMI) 容器的常見環境變數。

  如需這些變數的詳細資訊，請參閱 LMI 容器文件中[的環境變數組態](https://docs.djl.ai/master/docs/serving/serving/docs/lmi/deployment_guide/configurations.html#environment-variable-configurations)。
+ Hugging Face 中樞在其 Git 儲存庫中提供之套件的常見環境變數。

  針對儲存庫，請參閱 GitHub 上的 [Hugging Face](https://github.com/huggingface)。
+ 常見的 PyTorch & CUDA 環境變數。

  如需這些變數的詳細資訊，請參閱 PyTorch 文件中的 [Torch 環境變數](https://pytorch.org/docs/stable/torch_environment_variables.html)。