SageMaker Estimator开启use_spot_instances报MaxWaitTimeInSeconds无效问题
错误原因
SageMaker托管Spot训练有两个核心时长参数的校验规则:
max_run(对应API参数MaxRuntimeInSeconds):训练任务实际运行的最长时长,超出后任务会被强制终止,该参数不手动设置时SDK默认值为86400秒(24小时)max_wait(对应API参数MaxWaitTimeInSeconds):从任务提交到任务结束的总最长时长,包含等待Spot资源的排队时间和实际训练运行时间
触发报错的直接原因是你当前设置的max_wait = 23 * 60 * 60 = 82800秒,小于max_run的默认值86400秒,不满足官方要求的max_wait必须大于等于max_run的校验规则。
解决方法
二选一即可:
- 调整
max_wait数值,使其大于等于max_run的取值。比如保留max_run默认24小时的话,可以将max_wait设置为大于等于86400秒,例如需要预留2小时的Spot资源等待时间,可设置为max_wait = 25 * 60 * 60 - 显式指定
max_run数值,使其小于等于当前的max_wait取值。比如你确认训练任务实际运行时长不超过20小时,可在Estimator构造参数中新增max_run = 20 * 60 * 60,该值小于你当前设置的23小时max_wait,即可通过校验。
补充说明:你代码中已经配置了
checkpoint_s3_uri参数符合Spot训练的最佳实践,Spot实例被中断后训练任务可以从已保存的断点恢复,不需要从头重跑。
内容的提问来源于stack exchange,提问作者mon
相关产品推荐
相关产品推荐

