AWS为SageMaker AI训练与处理任务推出实例偏好列表,一次提交最多选五种实例
用户按优先级列出最多五种可接受的实例类型,SageMaker AI按顺序检查可用容量并在第一个有容量的类型上启动任务,减少因绑定单一GPU类型而排队等待或手动重试的情况。
AI解读:这次更新的核心是把“选哪块GPU”从提交任务前的硬绑定变成一份优先级清单:你最多写五种能接受的实例类型,SageMaker AI按顺序扫一遍,谁有容量就在谁上面跑。对经常抢不到P5、被InsufficientCapacityError卡住的团队来说,改动很小但直接省掉轮询脚本和半夜重启任务。
它解决的不是“让GPU变多”,而是“别让任务因为死等一种机型而空转”。很多训练负载本来在两种到三种实例家族上都能跑,只是过去没法把这种灵活性表达出来,只能人工提交多次请求。清单把这种弹性交给调度器,任务要么立刻启动,要么进入事件驱动的重试队列。
真实受益的人是有夜间重训、生产微调或定时数据处理管线的团队,特别是已经买了Flexible Training Plans预留容量的组织:可以把预留放在清单第一位,预留用完再自动落到按需实例,不需要重新提交任务。处理任务同样支持这个机制,但不支持绑定Training Plan,后者只对训练任务生效。
AWS为Amazon SageMaker AI的训练任务和处理任务推出实例偏好列表(Instance preference lists)。创建任务时,用户可以提供一个按优先级排序、最多包含五种可接受实例类型的列表,SageMaker AI按顺序评估,并在第一个有可用容量的类型上启动任务。AWS表示,这减少了手动重试循环、监控脚本以及为多实例类型任务自建提交系统的开销。
AWS在公告中描述的问题是:需求高峰期首选GPU不一定立即可用,而任务被绑定到单一实例类型时,团队只能等待或手动尝试替代方案。部分团队会针对不同实例类型提交多个请求来寻找容量;也有团队编写自定义重试脚本,轮询任务状态、取消卡住的请求并用替代类型重新提交。AWS称这些变通做法脆弱,无法与Flexible Training Plans等预留容量选项集成,还会带来运维负担。
工作流程为:提交带有序偏好列表的任务;SageMaker AI根据受支持的实例类型和资源限制验证任务配置与偏好列表;调度器在有序类型上做一次内存扫描,找出第一个有可用容量的类型;该类型立即配置并开始执行。如果评估时列表中没有类型有容量,任务进入事件驱动的队列,并在容量可用时自动重试。
重试窗口由MaxPendingTimeInSeconds限定,用于控制最大排队时间。该参数只对请求加速计算实例类型的任务生效,例如ml.p、ml.g和ml.trn系列;对仅请求CPU实例类型的任务没有影响。当任务指定InstancePreferences时,MaxPendingTimeInSeconds限定的是SageMaker AI处理整个实例类型列表的总时间,而不是每种实例类型单独计算;并且只有当列表包含至少一种加速计算实例类型时才生效。
与Flexible Training Plans的配合方式
AWS介绍,已经购买Flexible Training Plans(FTP,按折扣价为固定时长预留GPU容量)的组织可以把Training Plan附加到列表中的特定偏好上,其他偏好保留为按需容量。扫描会先评估预留,如果该偏好无法配置,就移到列表中的下一个类型,可能使用按需容量。
公告中的示例是:优先级 1 为带TrainingPlanArn的ml.p5.48xlarge(预留容量),如果预留不可用,则回退到标准费率、无需承诺的按需ml.p5.24xlarge。AWS称哪条路径先有容量就用哪条,不需要手动切换。
训练任务代码示例中的三种配置
公告给出使用Amazon SageMaker Python SDK v3和ModelTrainer类的示例。示例 1 列出三种GPU实例类型且实例数相同:ml.p5.48xlarge(H100,优先级 1)、ml.p4d.24xlarge(A100,优先级 2)、ml.p4de.24xlarge(A100 80GB,优先级 3),instance_count为 8。
示例 2 针对不同实例类型的单节点吞吐不同,为每个偏好指定不同实例数以达到大致相当的总计算量:两个ml.g6.48xlarge(每个 8 块L40S,共 16 块GPU)作为首选,四个ml.g5.48xlarge(每个 8 块A10G,共 32 块GPU,但单GPU性能更低)作为回退。AWS提示,当训练脚本能适应不同GPU数量(例如通过torchrun的 --nproc_per_node=auto)时使用按偏好设置实例数,且每种配置应为工作负载提供大致相当的总吞吐。
示例 3 把Training Plan的预留容量与按需回退结合:优先级 1 使用带training_plan_arns的预留ml.p5.48xlarge,优先级 2 为按需ml.p4d.24xlarge,优先级 3 为按需ml.p4de.24xlarge。
处理任务支持与限制
处理任务使用相同模式,但实例偏好在ClusterConfig上指定,而不是在训练资源上。用户提供有序的可接受实例类型列表,SageMaker AI在启动时按优先级评估,第一个有可用容量的类型自动配置处理集群。公告示例列出ml.g5.12xlarge、ml.g5.4xlarge和作为CPU回退的ml.m5.12xlarge。
AWS注明,处理任务不支持Training Plan集成,TrainingPlanArns字段仅用于训练任务。
AWS给出的四条配置注意事项
AWS在公告中列出配置实例偏好列表时的建议。其一,只列出兼容的实例类型:SageMaker AI不验证跨类型兼容性,包括GPU架构、Elastic Fabric Adapter(EFA)支持和驱动版本,用户需要确保训练容器在所列所有类型上都能工作。其二,为吞吐量等价使用按偏好设置的实例数:如果列表中各类型单节点计算能力不同,应调整实例数匹配总吞吐,例如两个ml.p5.48xlarge节点(2× H100)对四个ml.p4d.24xlarge节点(4× A100),总FLOPS大致相同。
其三,与Training Plans结合以获得保证和灵活容量:把预留容量放在偏好列表最前,让SageMaker AI先尝试用预付资源启动,再回退到按需替代。其四,用MaxPendingTimeInSeconds限制排队时间:示例中MaxRuntimeInSeconds为 86400,MaxPendingTimeInSeconds为 1800,表示 30 分钟内没有容量则任务失败;该限制只适用于加速计算实例类型。
上手方式
AWS在结论中说明,实例偏好把GPU容量管理从工程负担变成一行配置改动。上手步骤包括:升级Amazon SageMaker Python SDK(pip install --upgrade sagemaker);按Amazon SageMaker AI开发者指南在Compute配置中添加instance_preferences;按优先级列出 2 到 5 个兼容实例类型;从Amazon SageMaker AI控制台提交任务。
公告还称,更多关于实例类型、定价和Training Plans的信息见Amazon SageMaker AI详情页,实现代码见GitHub。公告由Kanwaljit Khurmi署名。