产品AWS Machine Learning·原文 2026年10月30日

AWS Batch为SageMaker Training推出配额管理,支持跨团队借还GPU容量

AWS称,管理员可按团队或项目划分配额份额,闲置容量可选择保留、出借或借还,并通过跨份额抢占和份额内抢占优先运行高优先级训练任务。

AI解读:这套配额管理解决的具体问题是:多个团队共用一个SageMaker Training作业队列的GPU容量时,管理员不必再手动拆队列、调限额或终止借用容量的作业。来源把适用对象限定在配额份额层面:每个份额有自己的容量上限和闲置资源共享策略。

三种共享策略决定闲置容量的去向:RESERVE保留到本份额有作业到达;LEND将闲置容量借给其他有作业的份额;LEND_AND_BORROW既出借也借用。出借后若本份额来了作业,AWS Batch会执行跨份额抢占,把容量收回,无需管理员自己去终止借用方的作业。

另一项可选项是份额内抢占。开启后,当份额内高优先级作业排在前面,AWS Batch会抢占同一份额中处于SCHEDULED、STARTING或RUNNING状态的低优先级作业。来源示例中,QS1开启此项并允许借还;QS2只出借、不开启份额内抢占;QS3为RESERVE,既不借出也不借入。

来源称在示例配置下,QS3只要容量上限不变,其作业就不会被AWS Batch抢占;QS2的作业可能因借出的容量被收回或份额内出现更高优先级作业而经历抢占。这些描述针对该示例中的具体配置,不代表所有配额份额的行为。

使用前提包括:具备创建和管理AWS Batch资源的AWS账户权限,并安装SageMaker Python SDK v3。配置时需要先创建包含quotaSharePolicy的Scheduling Policy、按实例类型设定容量上限的Service Environment,以及连接两者的SageMaker Training作业队列,再将配额份额关联到作业队列。

AWS机器学习博客发文介绍AWS Batch的配额管理(quota management)功能,用于在Amazon SageMaker Training作业之间按团队或项目划分GPU容量,并自动借还闲置容量。文章作者为Michelle Goodstein。

据文章描述,此前AWS Batch已支持对SageMaker Training作业进行排队、调度和重试;新功能在此之上增加配额份额(quota share)。每个配额份额包含容量上限和闲置资源共享策略,并以虚拟队列的形式嵌套在关联的作业队列中。

文章称,这一功能来自客户在多团队训练环境中的一致请求:按团队或项目定义分配、自动共享闲置容量、优先运行最高优先级作业。

三种资源共享策略与抢占方式

管理员可以为每个配额份额选择资源共享策略。RESERVE表示闲置容量保留到本份额有作业到达;LEND表示闲置容量借给其他有作业的配额份额;LEND_AND_BORROW表示既在闲置时出借,也在本份额有作业时借用。

当作业到达一个已经出借容量的份额时,AWS Batch会执行跨份额抢占,把容量收回给借出方。文章称,管理员因此不需要自行找到并终止借用容量的作业。

配额份额还可开启基于优先级的份额内抢占。开启后,AWS Batch会抢占同一份额中处于SCHEDULED、STARTING或RUNNING状态的低优先级作业,使队列前面的高优先级作业更早开始。文章指出,跨份额抢占针对的是借出的容量,份额内抢占针对的是同一份额内的作业优先级。

  • RESERVE:闲置容量保留,不外借
  • LEND:闲置容量出借给其他有作业的份额
  • LEND_AND_BORROW:闲置时出借,有作业时借用
  • 跨份额抢占:出借方来了作业,收回被借走的容量
  • 份额内抢占:同一份额内高优先级作业抢占低优先级作业

示例中的三个项目配额

文章用一个示例配置了三个配额份额,分别代表三个项目,每个份额的容量上限均为一台ml.g5.xlarge实例。示例中QS1代表后台作业,使用LEND_AND_BORROW并开启份额内抢占,借用上限设为 200;文章称该份额内作业都使用检查点,因此可以接受抢占。

QS2代表中等优先级负载,使用LEND而不开启份额内抢占。文章称,选择这种配置的团队更愿意等待容量,而不是承受额外抢占;这适合较短作业,或多数提交作业优先级相近的情况。

QS3代表需要尽快启动且尽量少中断的负载,使用RESERVE,既不外借也不借入。文章称,由于该份额的作业不超过容量上限,不会发生跨份额抢占;关闭份额内抢占后,只要容量上限不变,提交到该份额的作业不会被AWS Batch抢占。

  • 示例容量:每个配额份额上限为 1 台ml.g5.xlarge
  • QS1:LEND_AND_BORROW,开启份额内抢占,borrow_limit=200
  • QS2:LEND,不开启份额内抢占
  • QS3:RESERVE,不开启份额内抢占
  • 总容量在示例中设为 3 台实例

配置前提与作业提交

文章列出的前提包括:拥有可创建和管理AWS Batch资源的AWS账户权限,并安装兼容版本的SageMaker Python SDK v3。示例通过aws_batch模块和辅助函数创建Scheduling Policy、Service Environment、job queue和三个配额份额。

在示例中,提交到作业队列的SageMaker Training作业可指定配额份额和优先级。文章演示了向QS1提交三个不同优先级的作业,并称在QS1和QS2均无作业运行时,应有两个实例的作业开始运行,对应提交的前两个较高优先级作业。

随后示例向QS2提交作业,触发跨份额抢占,从正在借用容量的QS1收回容量。文章还演示使用UpdateServiceJob API提高一个已提交作业的优先级,在没有可借用容量时触发份额内抢占。

文章称配额管理可与SageMaker AI training plans配合使用,让组织按所需数量和时间段预留容量。上述效果描述均来自AWS的文章和示例,未给出独立的第三方测试数据。

  • 需要AWS账户及创建、管理AWS Batch资源的权限
  • 示例使用SageMaker Python SDK v3
  • 需先创建Scheduling Policy、Service Environment和作业队列,再关联配额份额
  • 示例通过UpdateServiceJob API调整已提交作业的调度优先级

信息来源