的旅程 亚马逊SageMaker 宣布支持 SageMaker 训练实例回退 Amazon SageMaker 自动模型调整 (AMT) 允许用户指定替代计算资源配置。
SageMaker 自动模型调整通过使用 范围 您为算法指定的超参数。 然后,它选择导致模型表现最佳的超参数值,由 公 你选择的。
以前,用户只能选择指定单个实例配置。 当指定的实例类型由于高利用率而不可用时,这可能会导致问题。 过去,您的训练作业会因 InsufficientCapacityError (ICE) 而失败。 在许多情况下,AMT 使用智能重试来避免这些故障,但面对持续的低容量,它仍然无能为力。
这项新功能意味着您可以按优先顺序指定实例配置列表,以便在容量不足的情况下,您的 AMT 作业将自动回退到列表中的下一个实例。
在以下部分中,我们将介绍克服 ICE 的这些高级步骤:
- 定义超参数调整作业配置
- 定义训练作业参数
- 创建超参数调整作业
- 描述培训工作
定义超参数调整作业配置
超参数调整作业配置 对象描述调优作业,包括搜索策略、用于评估训练作业的客观指标、要搜索的参数范围以及调优作业的资源限制。 今天的功能版本没有改变这一方面。 不过,我们将通过它给出一个完整的例子。
ResourceLimits
object 指定此调整作业的最大训练作业数和并行训练作业数。 在这个例子中,我们正在做一个 随机搜寻 策略并指定最多 10 个作业(MaxNumberOfTrainingJobs
) 和 5 个并发作业(MaxParallelTrainingJobs
) 一次。
ParameterRanges
对象指定此优化作业搜索的超参数范围。 我们指定名称,以及要搜索的超参数的最小值和最大值。 在此示例中,我们定义了 Continuous 和 Integer 参数范围的最小值和最大值以及超参数的名称(“eta”、“max_depth”)。
AmtTuningJobConfig={
"Strategy": "Random",
"ResourceLimits": {
"MaxNumberOfTrainingJobs": 10,
"MaxParallelTrainingJobs": 5
},
"HyperParameterTuningJobObjective": {
"MetricName": "validation:rmse",
"Type": "Minimize"
},
"ParameterRanges": {
"CategoricalParameterRanges": [],
"ContinuousParameterRanges": [
{
"MaxValue": "1",
"MinValue": "0",
"Name": "eta"
}
],
"IntegerParameterRanges": [
{
"MaxValue": "6",
"MinValue": "2",
"Name": "max_depth"
}
]
}
}
定义训练作业参数
在训练作业定义中,我们使用我们指定的算法定义运行训练作业所需的输入。 训练完成后,SageMaker 将生成的模型工件保存到 亚马逊简单存储服务(Amazon S3) 您指定的位置。
之前,我们在 ResourceConfig
范围。 当该参数下的实例不可用时,会抛出Insufficient Capacity Error (ICE)。
为了避免这种情况,我们现在有 HyperParameterTuningResourceConfig
下的参数 TrainingJobDefinition
,我们在其中指定要依赖的实例列表。 这些实例的格式与 ResourceConfig
. 该作业将从上到下遍历列表以查找可用的实例配置。 如果某个实例不可用,则选择列表中的下一个实例而不是容量不足错误 (ICE),从而克服 ICE。
TrainingJobDefinition={
"HyperParameterTuningResourceConfig": {
"InstanceConfigs": [
{
"InstanceType": "ml.m4.xlarge",
"InstanceCount": 1,
"VolumeSizeInGB": 5
},
{
"InstanceType": "ml.m5.4xlarge",
"InstanceCount": 1,
"VolumeSizeInGB": 5
}
]
},
"AlgorithmSpecification": {
"TrainingImage": "433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest",
"TrainingInputMode": "File"
},
"InputDataConfig": [
{
"ChannelName": "train",
"CompressionType": "None",
"ContentType": "json",
"DataSource": {
"S3DataSource": {
"S3DataDistributionType": "FullyReplicated",
"S3DataType": "S3Prefix",
"S3Uri": "s3://<bucket>/test/"
}
},
"RecordWrapperType": "None"
}
],
"OutputDataConfig": {
"S3OutputPath": "s3://<bucket>/output/"
},
"RoleArn": "arn:aws:iam::340308762637:role/service-role/AmazonSageMaker-ExecutionRole-20201117T142856",
"StoppingCondition": {
"MaxRuntimeInSeconds": 259200
},
"StaticHyperParameters": {
"training_script_loc": "q2bn-sagemaker-test_6"
},
}
运行超参数调整作业
在这一步中,我们将使用上面定义的超参数调整资源配置创建并运行一个超参数调整作业。
我们通过指定调整配置、训练作业定义和作业名称来初始化 SageMaker 客户端并创建作业。
import boto3
sm = boto3.client('sagemaker')
sm.create_hyper_parameter_tuning_job(
HyperParameterTuningJobName="my-job-name",
HyperParameterTuningJobConfig=AmtTuningJobConfig,
TrainingJobDefinition=TrainingJobDefinition)
描述培训工作
以下函数列出了实验期间使用的所有实例类型,可用于验证 SageMaker 训练实例是否在资源分配期间自动回退到列表中的下一个实例。
结论
在这篇文章中,我们演示了您现在如何定义一个实例池,您的 AMT 实验可以在以下情况下回退 InsufficientCapacityError
. 我们了解了如何定义超参数调整作业配置,以及指定最大训练作业数和最大并行作业数。 最后,我们看到了如何克服 InsufficientCapacityError
通过使用 HyperParameterTuningResourceConfig
参数,可以在训练作业定义下指定。
要了解有关 AMT 的更多信息,请访问 Amazon SageMaker 自动模型调整.
关于作者
道格·姆巴亚 是一名高级合作伙伴解决方案架构师,专注于数据和分析。 Doug 与 AWS 合作伙伴密切合作,帮助他们在云中集成数据和分析解决方案。
克鲁蒂·贾亚辛哈 饶 是 Scale-PSA 团队的合作伙伴解决方案架构师。 Kruthi 为合作伙伴进行技术验证,使他们能够在合作伙伴路径中取得进展。