

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建推理优化任务作业
<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)。

## 亚马逊 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模型的作业名称。这些作业的 Jo **b 类型列中包含类型JumpStart****训练**。

     1. 在训练作业的详细信息页面，选择**优化**。
   + 要为自定义模型创建作业，请执行以下操作：

     1. 在导航菜单的**作业**下，选择**推理优化**。

     1. 选择 **Create new job** (创建新任务)。

     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 提供的草稿模型。
**注意**  
如果您选择使用 A SageMaker I 草稿模型，则还必须启用网络隔离。Studio 在**安全**下提供了此选项。
     + **选择 JumpStart 绘制模型**-选择从 JumpStart目录中选择一个模型用作草稿模型。
     + **选择您的自己的草稿模型**：选择使用自己的草稿模型，请选并提供可定位找到该模型的 S3 URI。
   + 如果您选择**快速模型加载**，Studio 会显示 `OPTION_TENSOR_PARALLEL_DEGREE` 环境变量。使用**值**字段设置张量并行度。该值必须平均除以您为 Deployment 实例**类型选择的实例 GPUs **中的数量。例如，要在使用带有 8 的实例时对模型进行分片 GPUs，请使用值 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>

创建推理优化作业时，您可以设置以下高级选项。

在**配置**下，您可以设置以下选项：

**张量并行度 **  
*张量并行度*的值。张量并行性是模型并行性的一种，它在设备之间拆分特定的模型权重、梯度和优化器状态。该值必须平均除以集群 GPUs 中的数量。

**最大令牌长度**  
模型生成的令牌数量限制。请注意，模型可能并不总是生成最大数量的令牌。

**并发**  
在同一底层硬件上运行多个模型实例的能力。使用并发功能为多个用户提供预测服务，最大限度地提高硬件利用率。

**批次大小**  
如果您的模型进行*批量推理*，请使用此选项来控制模型处理的批次大小。  
批量推理根据一批观测数据生成模型预测。对于大型数据集或不需要立即响应推理请求的情况，这是一个不错的选择。

在**安全性**下，您可以设置以下选项：

**IAM 角色**  
一个 IAM 角色，允许 SageMaker AI 代表您执行任务。在模型优化期间， SageMaker AI 需要获得您的许可才能执行以下操作：  
+ 从 S3 存储桶读取输入数据
+ 将模型构件写入 S3 存储桶
+ 将日志写入 Amazon CloudWatch 日志
+ 向 Amazon 发布指标 CloudWatch
您授予 IAM 角色执行所有这些任务的权限。  
有关更多信息，请参阅 [如何使用 SageMaker AI 执行角色](sagemaker-roles.md)。

**加密 KMS 密钥**  
 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 会结束作业。使用此选项为成本设定上限。

**标签**  
与优化作业相关的键值对。  
有关标签的更多信息，请参阅 *AWS 一般参考* 中的[标记 AWS 资源](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)。

**环境变量**  
定义要在模型容器中设置的环境变量的键值对。

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

您可以在项目中使用 SageMaker AI Python SDK 创建推理优化作业。首先，使用 `ModelBuilder` 类来定义 `Model` 实例。然后，使用 `optimize()` 方法运行作业，通过量化、推测解码或编译来优化模型。作业完成后，您可以使用 `deploy()` 方法将模型部署到推理端点。

有关以下示例中使用的类和方法的更多信息，请参阅 [APIs](https://sagemaker.readthedocs.io/en/stable/api/index.html) SageMaker AI Python SDK 文档。

**设置项目**

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. 初始化 A SageMaker I 会话。以下示例使用 `Session()` 类。

   ```
   sagemaker_session = Session()
   ```

**定义模型**

1. 创建 `SchemaBuilder` 实例，并提供输入和输出样本。在定义模型时，您需要向 `ModelBuilder` 类提供该实例。借助它， SageMaker AI 会自动生成编组函数，用于序列化和反序列化输入和输出。

   有关使用 `SchemaBuilder` 和 `ModelBuilder` 类的更多信息，请参阅 [使用 Amazon A SageMaker I 创建模型 ModelBuilder](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 草稿模型通过推测性解码进行优化**

当你使用推测性解码来优化模型时，你可以选择使用 A SageMaker I 提供的草稿模型，也可以使用自己的模型。以下示例使用 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-type`* 替换为 ML 实例，例如 `ml.p4d.24xlarge`。

   `optimize()` 方法会返回一个 `Model` 对象，您可以用它来将模型部署到端点。

1. 作业完成后，部署模型。以下示例使用 `deploy()` 方法：

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

   `deploy()` 方法会返回一个预测器对象，您可以用它来向托管模型的端点发送推理请求。

**使用自定义草稿模型通过推测解码进行优化**

在向 SageMaker AI 提供自定义草稿模型之前，必须先将模型工件上传到 Amazon S3。

以下示例演示了提供自定义草稿模型的一种可能方法。示例从 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 文档中的[用户访问令牌](https://huggingface.co/docs/hub/en/security-tokens)。

   有关 `huggingface_hub` 库的更多信息，请参阅 Hugging Face 文档中的 [Hub 客户端库](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 实例类型。例如，要使用 Inf AWS erentia 加速推理，您可以将类型设置为 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 的 AWS 软件开发工具包 (Boto3) 以编程方式创建和管理推理优化作业。本节提供了不同优化技术的示例。

**先决条件**

在使用 Boto3 创建优化作业之前，请确保：
+ 已配置的 AWS 凭证-使用适当的权限设置您的 AWS 证书
+ 已创建 A SageMaker I 模型（如果使用现有模型）
+ 在 S3 中准备好训练数据（用于推测性解码优化，支持的上下文长度不超过 4096）
+ 具有必要权限的 IAM 角色-您的执行角色必须具有访问 S3 和创建 SageMaker 资源的权限 

**示例：使用 EAGLE 推测性解码创建优化 Job (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\$1 creating-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 容器。

  有关可用容器，请参阅 Deep Learn [ing Containers GitHub 存储库中的大型模型推理容](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#large-model-inference-containers)器。
+ 如果您对 JumpStart 模型进行微调，请使用 safetensors 格式作为模型权重。

  有关此格式的更多信息，请参阅 Hugging Face 文档中的 [Safetensors](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 代理提供对模型容器的外壳级访问权限，以便您可以使用 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 Hub 在其 Git 存储库中提供的软件包的常用环境变量。

  有关存储库，请参阅 [Hugging Fac GitHub e on](https://github.com/huggingface)。
+ 常用 PyTorch 和 CUDA 环境变量。

  有关这些变量的更多信息，请参阅 PyTorch 文档中的 [Torch 环境变量](https://pytorch.org/docs/stable/torch_environment_variables.html)。