

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

# SageMaker 使用 SageMaker API 创建训练计划，或者 AWS CLI
<a name="training-plan-creation-using-api-cli-sdk"></a>

SageMaker 培训计划支持通过其 API 以编程方式创建培训计划。您可以使用 AWS CLI 或与训练计划 API 进行交互 SageMaker SDKs。

SageMaker 培训计划的 API 操作为以编程方式管理培训计划提供了全面的工作流程：
+ **`SearchTrainingPlanOfferings`：**使用户能够通过指定实例类型、计数和所需时段等参数来查询和发现可用的计算资源。API 会返回最符合用户要求的训练计划产品的排名列表。
+ **`CreateTrainingPlan`：**允许预订特定的训练计划产品，将潜在的计算容量转换为已计划的预留容量，并生成唯一的训练计划 ARN。
+ **`ListTrainingPlans`：**提供一种检索和查看用户 AWS 账户中所有现有训练计划的方法，并具有可选的筛选和排序功能。
+ **`DescribeTrainingPlan`：**提供对特定训练计划的详细见解，包括从 `Pending` 到 `Active`，再到 `Expired` 的各个生命周期阶段。
+ **`ExtendTrainingPlan`:** 通过购买扩展产品来延长现有培训计划。有关更多信息，请参阅 [培训计划延期](training-plan-extension.md)。
+ **`DescribeTrainingPlanExtensionHistory`：**检索训练计划的延期历史记录。有关更多信息，请参阅 [培训计划延期](training-plan-extension.md)。

**Topics**
+ [搜索训练计划产品](search-training-plan-offerings-api-cli-sdk.md)
+ [预订最佳训练计划](choose-best-training-plan-using-api-cli-sdk.md)
+ [列出训练计划](list-training-plans-using-api-cli-sdk.md)
+ [查看训练计划详细信息](training-plan-details-using-api-cli-sdk.md)

# 搜索训练计划产品
<a name="search-training-plan-offerings-api-cli-sdk"></a>

要创建训练计划，首先要调用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SearchTrainingPlanOfferings.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SearchTrainingPlanOfferings.html) API 操作，并将您的计划要求（例如实例类型、计数和所需时段）作为输入参数传递。训练计划需与其目标资源相对应。请务必指定计划将用于哪个目标资源（`training-job` 或 `hyperpod-cluster`）。API 会返回符合您要求的可用产品的列表。如果找不到合适的产品，您可能需要调整要求并重新搜索。

此 API 调用会检索最符合您容量需求的训练计划产品。响应中返回的每个 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingPlanOffering.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingPlanOffering.html) 均由一个唯一产品 ID 标识。列表中的第一个产品最符合您的要求。如果指定日期内没有合适的训练计划，则该列表为空。请调整您的搜索条件，然后查找一组新的产品。
+ 预留持续时间以 1 天为增量单位，可选范围为 1 天至 182 天。
+ 预留实例数量选项包括 1、2、4、8、16、32 或 64 个实例。

要了解 SageMaker 训练计划支持的可用实例列表，请参阅[支持的实例类型 AWS 区域和定价](reserve-capacity-with-training-plans.md#training-plans-supported-instances-and-regions)。

以下示例使用 AWS CLI 命令请求包含指定实例类型、计数和时间信息的训练计划产品。

```
# List training plan offerings with instance type, instance count, duration in hours, start time after, and end time before.
aws sagemaker search-training-plan-offerings \
--target-resources "training-job" \
--instance-type "ml.p4d.24xlarge" \
--instance-count 1 \
--duration-hours 15 \
--start-time-after "1737484800"
--end-time-before "1737657600"
```

此 JSON 文档是来自 SageMaker 训练计划 API 的示例响应。此响应提供了有关符合指定容量要求的多种可用训练计划产品的信息。它包括三种不同的产品，它们的持续时间、预付费用和 start/end 时间各不相同，它们都使用相同的实例类型并针对培训作业。

```
{
    "TrainingPlanOfferings": [
        {
            "TrainingPlanOfferingId": "tpo-SHA-256-hash-value",
            "TargetResources": [
                "training-job"
            ],
            "RequestedStartTimeAfter": "2025-01-21T11:08:27.704000-08:00",
            "DurationHours": 15,
            "DurationMinutes": 51,
            "UpfrontFee": "xxxx.xx",
            "CurrencyCode": "USD",
            "ReservedCapacityOfferings": [
                {
                    "InstanceType": "ml.p4d.24xlarge",
                    "InstanceCount": 1,
                    "AvailabilityZone": "us-west-2a",
                    "DurationHours": 15,
                    "DurationMinutes": 51,
                    "StartTime": "2025-01-21T11:39:00-08:00",
                    "EndTime": "2025-01-22T03:30:00-08:00"
                }
            ]
        },
        {
            "TrainingPlanOfferingId": "tpo-SHA-256-hash-value",
            "TargetResources": [
                "training-job"
            ],
            "RequestedStartTimeAfter": "2025-01-21T11:08:27.704000-08:00",
            "DurationHours": 39,
            "DurationMinutes": 51,
            "UpfrontFee": "xxxx.xx",
            "CurrencyCode": "USD",
            "ReservedCapacityOfferings": [
                {
                    "InstanceType": "ml.p4d.24xlarge",
                    "InstanceCount": 1,
                    "AvailabilityZone": "us-west-2a",
                    "DurationHours": 39,
                    "DurationMinutes": 51,
                    "StartTime": "2025-01-21T11:39:00-08:00",
                    "EndTime": "2025-01-23T03:30:00-08:00"
                }
            ]
        },
        {
            "TrainingPlanOfferingId": "tpo-SHA-256-hash-value",
            "TargetResources": [
                "training-job"
            ],
            "RequestedStartTimeAfter": "2025-01-21T11:08:27.704000-08:00",
            "DurationHours": 24,
            "DurationMinutes": 0,
            "UpfrontFee": "xxxx.xx",
            "CurrencyCode": "USD",
            "ReservedCapacityOfferings": [
                {
                    "InstanceType": "ml.p4d.24xlarge",
                    "InstanceCount": 1,
                    "AvailabilityZone": "us-west-2a",
                    "DurationHours": 24,
                    "DurationMinutes": 0,
                    "StartTime": "2025-01-22T03:30:00-08:00",
                    "EndTime": "2025-01-23T03:30:00-08:00"
                }
            ]
        }
    ]
}
```

以下是如何使用搜索包含的培训计划选项的示例命令 UltraServers。 AWS CLI 

```
aws sagemaker search-training-plan-offerings \
--ultra-server-type ml.c6i-32xlargesc \
--ultra-server-count 1 \
--duration-hours 24 \
--target-resources hyperpod-cluster
--start-time-after "1737484800" \
--end-time-before "1737657600"
```

```
{
    "TrainingPlanOfferings": [
        {
            "TrainingPlanOfferingId": "tpo-SHA-256-hash-value",
            "TargetResources": [
                "training-job"
            ],
            "RequestedStartTimeAfter": "2025-07-21T16:59:25.760000+00:00",
            "DurationHours": 24,
            "DurationMinutes": 0,
            "UpfrontFee": "0.24",
            "CurrencyCode": "USD",
            "ReservedCapacityOfferings": [
                {
                    "ReservedCapacityType": "UltraServer",
                    "UltraServerType": "ml.u-p6e-gb200x72",
                    "UltraServerCount": 1,
                    "InstanceType": "ml.p6e-gb200.36xlarge",
                    "InstanceCount": 18,
                    "AvailabilityZone": "us-east-2a",
                    "DurationHours": 24,
                    "DurationMinutes": 0,
                    "StartTime": "2025-07-22T11:30:00+00:00",
                    "EndTime": "2025-07-23T11:30:00+00:00"
                }
            ]
        }
    ]
}
```

以下各部分定义了 `SearchTrainingPlanOfferings` API 操作的必需和可选输入请求参数。

## 必填参数
<a name="search-training-plan-options-required-params"></a>

在调用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SearchTrainingPlanOfferings.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SearchTrainingPlanOfferings.html) API 以列出符合您要求的训练计划产品时，您必须提供以下值：
+ `TargetResources`：计划将用于的目标资源（`training-job` 或 `hyperpod-cluster`）。默认值为 `training-job`。训练计划需与其目标资源相对应。
  + 专为训练作业设计的 SageMaker 训练计划只能用于安排和运行训练作业。
  +  HyperPod 集群训练计划只能用于为集群的实例组提供计算资源。
+ `InstanceType`：要预调配的实例类型。`InstanceType` 必须是受支持的类型。

  要了解 SageMaker 训练计划支持的可用实例列表，请参阅[支持的实例类型 AWS 区域和定价](reserve-capacity-with-training-plans.md#training-plans-supported-instances-and-regions)。
+ `InstanceCount`：要预调配的实例数。如果实例数大于 1，则此值需为 2 的幂。
+ `DurationHour`：您请求的计划的总持续时间（以小时为单位）。`DurationHour` 向上取整至最接近的 24 的倍数。

## 可选参数
<a name="search-training-plan-options-optional-params"></a>

以下各部分提供了有关可传递给 `SearchTrainingPlanOfferings` API 请求的一些可选参数的信息。
+ `StartTimeAfter`：指定计划的请求开始时间。`StartTimeAfter` 应是将来的 `timestamp` 或 `ISO 8601 date/time` 值。
+ `EndTimeBefore`：以 `timestamp` 或 `ISO 8601 date/time` 格式指定计划的请求结束时间。`EndTimeBefore` 应至少比开始时间晚 24 小时。
+ `UltraServerType`：指定 UltraServer 要搜索的类型。有关的更多信息 UltraServers，请参阅[UltraServers 在 SageMaker 人工智能中](reserve-capacity-with-training-plans.md#training-plans-ultraservers)。
+ `UltraServerCount`：指定 UltraServers 要搜索的数量。

# 预订最佳训练计划
<a name="choose-best-training-plan-using-api-cli-sdk"></a>

在查看最符合您要求的可用训练计划后，您可以通过调用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html) API 操作来预订特定的计划。创建计划后，计划最初会进入 `Pending` 状态，并会一直保持该状态，直到预订流程完成。对 API 调用的响应会返回训练计划的 Amazon 资源名称（ARN）。请记下此 ARN，以便后续用于跟踪和监控。训练计划预订在后端以异步方式完成。款项总额将在履约过程中自动收取。在付款交易完成并锁定请求的预留容量后，培训计划将设置为 `Scheduled` 状态，可供调度。

**重要**  
训练计划一经购买便无法修改。
培训计划不能在不同 AWS 账户之间或 AWS 组织内共享。

以下示例使用 an AWS CLI 命令请求特定的训练计划，并将计划 ID 作为参数传递。

```
aws sagemaker create-training-plan \
--training-plan-offering-id "tpo-SHA-256-hash-value" \
--training-plan-name "name" \
```

此 JSON 文档是来自 SageMaker 训练计划 API 的示例响应。响应包含已成功创建的训练计划的 Amazon 资源名称（ARN）。

**注意**  
在履约流程完成之前，训练计划将一致保持 `Pending` 状态。

```
{
   "TrainingPlanArn":"arn:aws:sagemaker:us-east-1:123456789123:training-plan/large-models-fine-tuning"
}
```

以下各部分定义了 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html) API 操作的必需和可选输入请求参数。

## 必填参数
<a name="choose-best-training-plan-using-api-cli-sdk-required-params"></a>

在调用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html) API 以预订特定的训练计划时，必须提供以下值：
+ `TrainingPlanOfferingId`：您选择的计划的 ID。您可以在 `SearchTrainingPlanOfferings` API 调用的响应中检索计划产品的 ID。其格式应以 `pto-*` 开头。
+ `TrainingPlanName`：您正在创建的计划的名称。

# 列出训练计划
<a name="list-training-plans-using-api-cli-sdk"></a>

您可以通过调用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListTrainingPlans.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListTrainingPlans.html)API 列出在您的 AWS 账户和地区中创建的所有培训计划。

以下示例使用 AWS CLI 命令来检索您的训练计划列表。

```
aws sagemaker list-training-plans \
--start-time-after "2024-09-26T00:00:01.000Z"
```

此 JSON 文档是来自 SageMaker 训练计划 API 的示例响应。该响应提供了有关已成功创建并预订的一个训练计划的详细信息。

```
{
   "[TrainingPlanSummaries](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingPlanSummary.html)": [ 
      { 
         "AvailableInstanceCount": 2,
         "CurrencyCode": "USD",
         "DurationHours": 48,
         "DurationMinutes": 0,
         "EndTime": "2024-09-28T04:30:00-07:00",
         "InUseInstanceCount": 2,
         "[ReservedCapacitySummaries](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ReservedCapacitySummary.html)": [ 
            { 
               "AvailabilityZone": "string",
               "DurationHours": 48,
               "DurationMinutes": 0,
               "EndTime": "2024-09-28T04:30:00-07:00",
               "InstanceType": "ml.p5.48xlarge",
               "ReservedCapacityArn": "arn:aws:sagemaker:us-east-1:123456789123:reserved-capacity/large-models-fine-tuning-rc1",
               "StartTime": "2024-09-26T04:30:00-07:00",
               "Status": "Scheduled",
               "TotalInstanceCount": 4,
               "UltraServerCount": 4,
               "UltraServerType": "ml.p6e-gb200.36xlarge"
            }
         ],
         "StartTime": "2024-09-26T04:30:00-07:00",
         "Status": "Scheduled",
         "StatusMessage": "Payment confirmed, training plan scheduled."
         "TargetResources": [ "training-job" ],
         "TotalInstanceCount": 4,
         "TotalUltraServerCount": 4,
         "TrainingPlanArn": "arn:aws:sagemaker:us-east-1:123456789123:training-plan/large-models-fine-tuning",
         "TrainingPlanName": "large-models-fine-tuning",
         "UpfrontFee": "xxxx.xx"
      }
   ]
}
```

以下各部分提供了可传递给 `ListTrainingPlans` API 请求的一些可选参数的详细信息。

## 可选参数
<a name="list-training-plans-optional-params"></a>

以下各部分提供了有关可传递给 `ListTrainingPlans` API 请求的一些可选参数的信息。
+ `StartTimeAfter`：所列计划的实际时间范围的开始时间，以 `timestamp` 或 `ISO 8601 date/time` 格式指定。
+ `StartTimeBefore`：所列计划的实际时间范围的结束时间，以 `timestamp` 或 `ISO 8601 date/time` 格式指定。
+ `Filters`：用于筛选结果的条件，最多有 5 个名称-值对，其中 “名称” 是 a 字段的名称，“值” 是筛选器要考虑的值。[TrainingPlanSummary](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingPlanSummary.html)例如 `Name=Status,Value=Active`。

以下示例使用 AWS CLI 命令使用上述一些可选参数来检索您的训练计划列表。

```
aws sagemaker list-training-plans --max-results 10 --sort-by StartTime --sort-order Descending --start-time-after 13000000 --filters Name=Status,Value=Active
```

# 查看训练计划详细信息
<a name="training-plan-details-using-api-cli-sdk"></a>

要监控训练计划的状态或检索其详细信息，您可以使用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingPlan.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingPlan.html) API。API 响应包含一个 `Status` 字段，该字段反映了训练计划的当前状态：
+ 如果计划购买失败，状态将设置为 `Failed`。
+ 成功付款后，根据计划的开始日期，状态会从 `Pending` 过渡到 `Scheduled`。
+ 当计划到达其开始日期时，状态会变为 `Active`。
+ 对于包含多个不连续预留容量的计划，其状态会在活跃期之间恢复为 `Scheduled` 状态，直至下一个预留容量的开始日期。
+ 计划结束日期后，状态会变为 `Expired`。

状态变为后`Scheduled`，您可以将计划中预留的容量用于 SageMaker 训练任务或 HyperPod 集群工作负载。

**注意**  
在计划变为 `Active` 之前，与计划关联的训练作业将保持 `Pending` 状态。
对于使用计算容量训练计划的 HyperPod 集群，实例组的状态显示为已`InService`创建。

以下示例使用 AWS CLI 命令按名称检索训练计划的详细信息。

```
aws sagemaker describe-training-plan \
--training-plan-name "name"
```

此 JSON 文档是来自 SageMaker 训练计划 API 的示例响应。该响应提供了有关已成功创建的训练计划的详细信息。

```
      { 
         "AvailableInstanceCount": 2,
         "CurrencyCode": "USD",
         "DurationHours": 48,
         "DurationMinutes": 0,
         "EndTime": "2024-09-28T04:30:00-07:00",
         "InUseInstanceCount": 2,
         "[ReservedCapacitySummaries](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ReservedCapacitySummary.html)": [ 
            { 
               "AvailabilityZone": "string",
               "DurationHours": 48,
               "DurationMinutes": 0,
               "EndTime": "2024-09-28T04:30:00-07:00",
               "InstanceType": "ml.p5.48xlarge",
               "ReservedCapacityArn": "arn:aws:sagemaker:us-east-1:123456789123:reserved-capacity/large-models-fine-tuning-rc1",
               "StartTime": "2024-09-26T04:30:00-07:00",
               "Status": "Scheduled",
               "TotalInstanceCount": 4,
               "UltraServerCount": 4,
               "UltraServerType": "ml.p6e-gb200.36xlarge"
            }
         ],
         "StartTime": "2024-09-26T04:30:00-07:00",
         "Status": "Scheduled",
         "StatusMessage": "Payment confirmed, training plan scheduled."
         "TargetResources": [ "training-job" ],
         "TotalInstanceCount": 4,
         "TotalUltraServerCount": 4,
         "TrainingPlanArn": "arn:aws:sagemaker:us-east-1:123456789123:training-plan/large-models-fine-tuning",
         "TrainingPlanName": "large-models-fine-tuning",
         "UpfrontFee": "xxxx.xx"
      }
```

以下各部分定义了 `DescribeTrainingPlan` API 操作的必需输入请求参数。

## 必填参数
<a name="training-plan-details-required-params"></a>
+ `TrainingPlanName`：要描述的训练计划的名称。