

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

# 使用 SageMaker AI 管理的温池
<a name="train-warm-pools-how-to-use"></a>

您可以通过 SageMaker Python SDK、 SageMaker Amazon A SageMaker I 控制台或低级 API 使用人工智能托管的温池。管理员可以选择使用 `sagemaker:KeepAlivePeriod` 条件键来进一步限定某些用户或组的 `KeepAlivePeriodInSeconds` 上限。

**Topics**
+ [使用 SageMaker AI Python 开发工具包](#train-warm-pools-how-to-use-python-sdk)
+ [使用亚马逊 A SageMaker I 控制台](#train-warm-pools-how-to-use-sagemaker-console)
+ [使用低级 API SageMaker](#train-warm-pools-how-to-use-low-level-apis)
+ [IAM 条件键](#train-warm-pools-how-to-use-iam-condition-key)

## 使用 SageMaker AI Python 开发工具包
<a name="train-warm-pools-how-to-use-python-sdk"></a>

使用 SageMaker Python 软件开发工具包创建、更新或终止温池。

**注意**  
此功能在 SageMaker AI [Python SDK v2.110.0](https://pypi.org/project/sagemaker/2.110.0/) 及更高版本中可用。

**Topics**
+ [创建暖池](#train-warm-pools-how-to-use-python-sdk-create)
+ [更新暖池](#train-warm-pools-how-to-use-python-sdk-update)
+ [终止暖池](#train-warm-pools-how-to-use-python-sdk-terminate)

### 创建暖池
<a name="train-warm-pools-how-to-use-python-sdk-create"></a>

要创建温池，请使用 SageMaker Python SDK 创建一个`keep_alive_period_in_seconds`值大于 0 的估计器并调用。`fit()`训练作业完成后，暖池将保留。有关训练脚本和估算器的更多信息，请参阅[使用 Pyth SageMaker on SDK 训练模型](https://sagemaker.readthedocs.io/en/stable/overview.html#train-a-model-with-the-sagemaker-python-sdk)。如果您的脚本未创建暖池，请参阅[暖池创建](train-warm-pools.md#train-warm-pools-creation)以查看可能的说明。

```
import sagemaker
from sagemaker import get_execution_role
from sagemaker.tensorflow import TensorFlow

# Creates a SageMaker AI session and gets execution role
session = sagemaker.Session()
role = get_execution_role()

# Creates an example estimator
estimator = TensorFlow(
    ...
    entry_point={{'my-training-script.py'}},
    source_dir={{'code'}},
    role={{role}},
    model_dir={{'model_dir'}},
    framework_version={{'2.2'}},
    py_version={{'py37'}},
    job_name={{'my-training-job-1'}},
    instance_type={{'ml.g4dn.xlarge'}},
    instance_count={{1}},
    volume_size={{250}},
    hyperparameters={
        "batch-size": {{512}},
        "epochs": {{1}},
        "learning-rate": {{1e-3}},
        "beta_1": {{0.9}},
        "beta_2": {{0.999}},
    },
    keep_alive_period_in_seconds={{1800}},
)

# Starts a SageMaker training job and waits until completion
estimator.fit({{'s3://my_bucket/my_training_data/'}})
```

接下来，创建第二个匹配的训练作业。在此示例中，我们创建了 `my-training-job-2`，它具有与 `my-training-job-1` 匹配的所有必要属性，但具有用于实验的其他超参数。第二个训练作业重用暖池，其启动速度比第一个训练作业快。以下代码示例使用 Tensorflow 估算器。暖池功能可以与 Amazon A SageMaker I 上运行的任何训练算法一起使用。有关需要匹配的属性的更多信息，请参阅[匹配的训练作业](train-warm-pools.md#train-warm-pools-matching-criteria)。

```
# Creates an example estimator
estimator = TensorFlow(
    ...
    entry_point={{'my-training-script.py'}},
    source_dir={{'code'}},
    role={{role}},
    model_dir={{'model_dir'}},
    framework_version={{'py37'}},
    py_version={{'pyxy'}},
    job_name={{'my-training-job-2'}},
    instance_type={{'ml.g4dn.xlarge'}},
    instance_count={{1}},
    volume_size={{250}},
    hyperparameters={
        "batch-size": {{512}},
        "epochs": {{2}},
        "learning-rate": {{1e-3}},
        "beta_1": {{0.9}},
        "beta_2": {{0.999}},
    },
    keep_alive_period_in_seconds={{1800}},
)

# Starts a SageMaker training job and waits until completion
estimator.fit({{'s3://my_bucket/my_training_data/'}})
```

检查两个训练作业的暖池状态，以确认 `my-training-job-1` 的暖池为 `Reused`，`my-training-job-2` 的暖池为 `InUse`。

**注意**  
训练作业名称有 date/time 后缀。示例训练作业名称 `my-training-job-1` 和 `my-training-job-2` 应替换为实际的训练作业名称。您可以使用 `estimator.latest_training_job.job_name` 命令来获取实际的训练作业名称。

```
session.describe_training_job({{'my-training-job-1'}})
session.describe_training_job({{'my-training-job-2'}})
```

`describe_training_job` 的结果提供了有关给定训练作业的所有详细信息。找到 `WarmPoolStatus` 属性以检查有关训练作业的暖池的信息。您的输出应类似于以下示例：

```
# Warm pool status for training-job-1
...
'WarmPoolStatus': {'Status': 'Reused', 
  'ResourceRetainedBillableTimeInSeconds': 1000,
  'ReusedByName': my-training-job-2}
...

# Warm pool status for training-job-2
... 
'WarmPoolStatus': {'Status': 'InUse'}
...
```

### 更新暖池
<a name="train-warm-pools-how-to-use-python-sdk-update"></a>

在训练作业完成且暖池状态为 `Available` 时，便能更新 `KeepAlivePeriodInSeconds` 值。

```
session.update_training_job(job_name, resource_config={"KeepAlivePeriodInSeconds":{{3600}}})
```

### 终止暖池
<a name="train-warm-pools-how-to-use-python-sdk-terminate"></a>

要手动终止暖池，请将 `KeepAlivePeriodInSeconds ` 值设置为 0。

```
session.update_training_job(job_name, resource_config={"KeepAlivePeriodInSeconds":0})
```

当暖池超过指定的 `KeepAlivePeriodInSeconds` 值或有对集群的补丁更新时，暖池将自动终止。

## 使用亚马逊 A SageMaker I 控制台
<a name="train-warm-pools-how-to-use-sagemaker-console"></a>

通过此控制台，您可以创建暖池、释放暖池或查看特定训练作业的暖池状态和计费时间。您还可以查看哪个匹配的训练作业重用了暖池。

1. 打开 [Amazon SageMaker AI 控制台](https://console.aws.amazon.com/ec2/)，然后从导航窗格中选择**训练作业**。如果适用，每个训练作业的暖池状态都将显示在**暖池状态**列中，活动暖池的剩余时间将显示在**剩余时间**列中。

1. 要从控制台创建使用暖池的训练作业，请选择**创建训练作业**。之后，请务必在配置训练作业资源时为**保持活动期**字段指定一个值。此值必须是介于 1 和 3600 之间的整数，它表示持续时间（以秒为单位）。

1. 要从控制台释放暖池，请选择特定的训练作业，然后从**操作**下拉菜单中选择**释放集群**。

1. 要查看有关暖池的更多信息，请选择训练作业名称。在作业详细信息页面中，向下滚动到**暖池状态**部分以查找暖池状态、暖池状态为 `Available` 的剩余时间、暖池计费秒数以及已重用暖池的训练作业的名称（如果暖池状态为 `Reused`）。

## 使用低级 API SageMaker
<a name="train-warm-pools-how-to-use-low-level-apis"></a>

将 SageMaker AI 托管的温池与 SageMaker API 或 CLI 配合 AWS 使用。

### SageMaker 人工智能 API
<a name="train-warm-pools-how-to-use-low-level-apis-sagemaker"></a>

使用 SageMaker AP SageMaker I 使用以下命令设置 AI 管理的温池：
+ [ CreateTrainingJob ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
+ [ UpdateTrainingJob ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateTrainingJob.html)
+ [ ListTrainingJobs ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListTrainingJobs.html)
+ [ DescribeTrainingJob ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)

### AWS CLI
<a name="train-warm-pools-how-to-use-low-level-apis-cli"></a>

使用 CL SageMaker I 使用以下命令设置 A AWS I 管理的温池：
+ [create-training-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/create-training-job.html)
+ [update-training-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/update-training-job.html)
+ [list-training-jobs](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/list-training-jobs.html)
+ [describe-training-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/describe-training-job.html)

## IAM 条件键
<a name="train-warm-pools-how-to-use-iam-condition-key"></a>

管理员可以选择使用`sagemaker:KeepAlivePeriod`条件键进一步限制某些用户或群组的`KeepAlivePeriodInSeconds`限制。 SageMaker AI 管理的温池的`KeepAlivePeriodInSeconds`值限制为 3600 秒（60 分钟），但管理员可以根据需要降低此限制。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnforceKeepAlivePeriodLimit",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateTrainingJob"
            ],
            "Resource": "*",
            "Condition": {
                "NumericLessThanIfExists": {
                    "sagemaker:KeepAlivePeriod": "{{1800}}"
                }
            }
        }
    ]
}
```

------

有关更多信息，请参阅《*服务授权参考*》中的 [ SageMaker Amazon AI 条件密钥](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-policy-keys)。