使用 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
的暖池为 Reused
,my-training-job-2
的暖池为 InUse
。
注意
训练作业名称具有日期/时间后缀。示例训练作业名称 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'} ...
更新暖池
在训练作业完成且暖池状态为 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 控制台
通过此控制台,您可以创建暖池、释放暖池或查看特定训练作业的暖池状态和计费时间。您还可以查看哪个匹配的训练作业重用了暖池。
-
打开 Amazon SageMaker 控制台
,然后从导航窗格中选择训练作业。如果适用,每个训练作业的暖池状态都将显示在暖池状态列中,活动暖池的剩余时间将显示在剩余时间列中。 -
要从控制台创建使用暖池的训练作业,请选择创建训练作业。之后,请务必在配置训练作业资源时为保持活动期字段指定一个值。此值必须是介于 1 和 3600 之间的整数,它表示持续时间(以秒为单位)。
-
要从控制台释放暖池,请选择特定的训练作业,然后从操作下拉菜单中选择释放集群。
-
要查看有关暖池的更多信息,请选择训练作业名称。在作业详细信息页面中,向下滚动到暖池状态部分以查找暖池状态、暖池状态为
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 的条件键。