使用 SageMaker 托管的暖池 - Amazon SageMaker

使用 SageMaker 托管的暖池

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

使用 SageMaker Python SDK

使用 SageMaker Python SDK 创建、更新或终止暖池。

注意

此功能在 SageMaker Python SDK v2.110.0 及更高版本中可用。

创建暖池

要创建暖池,请使用 SageMaker Python SDK 创建一个 keep_alive_period_in_seconds 值大于 0 的估算器并调用 fit()。训练作业完成后,暖池将保留。有关训练脚本和估算器的更多信息,请参阅使用 SageMaker Python SDK 训练模型。如果您的脚本未创建暖池,请参阅暖池创建以查看可能的说明。

import sagemaker from sagemaker import get_execution_role from sagemaker.tensorflow import TensorFlow # Creates a SageMaker 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 SageMaker 上运行的任何训练算法结合使用。有关需要匹配的属性的更多信息,请参阅匹配的训练作业

# 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 的暖池为 Reusedmy-training-job-2 的暖池为 InUse

注意

训练作业名称具有日期/时间后缀。示例训练作业名称 my-training-job-1my-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'} ...

更新暖池

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

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

终止暖池

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

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

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

使用 Amazon SageMaker 控制台

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

  1. 打开 Amazon SageMaker 控制台,然后从导航窗格中选择训练作业。如果适用,每个训练作业的暖池状态都将显示在暖池状态列中,活动暖池的剩余时间将显示在剩余时间列中。

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

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

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

使用低级 SageMaker API

将 SageMaker 托管的暖池与 SageMaker API 或 AWS CLI 结合使用。

SageMaker API

使用 SageMaker API 通过以下命令设置 SageMaker 托管的暖池:

AWS CLI

使用 AWS CLI 通过以下命令设置 SageMaker 托管的暖池:

IAM 条件键

管理员可以选择使用 sagemaker:KeepAlivePeriod 条件键来进一步限定某些用户或组的 KeepAlivePeriodInSeconds 上限。SageMaker 托管的暖池的 KeepAlivePeriodInSeconds 值上限为 3600 秒(60 分钟),但如果需要,管理员可以降低此限额。

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

有关更多信息,请参阅服务授权参考中的 Amazon SageMaker 的条件键