优先级和调度策略
使用专属资源池训练作业时,支持在创建训练作业时设置任务优先级,也支持作业在长时间处于“等待中”的状态时调整优先级。如通过调整作业优先级可以减少作业的排队时长。
什么是训练作业优先级
在用户运行训练作业过程中,需要对训练作业做优先级划分。例如部分低优先级任务用于测试或简单的非关键实验,当存在高优先级作业时,高优先级作业能够比低优先级作业更快进入调度队列。
在资源使用高峰期,用户可以通过提高或降低训练作业的优先级,来动态调节作业的执行顺序,保障关键业务的及时运行。请参考如何修改训练作业优先级。
如需了解训练作业调度策略,请参考训练作业调度策略。
约束限制
- 仅使用专属资源池训练时才支持设置训练作业优先级。公共资源池不支持设置训练作业优先级。
- 作业优先级可以设置的取值为数字1-3,数字越大,优先级越高,默认优先级为“1”,最高优先级为“3”。当选择“3”优先级时,还需要配置用户权限才可以生效,权限配置参考本章节内容给子账号配置"设置作业调度最高优先级"权限。
- 只有训练作业长时间在专属资源池的排队列表中导致的“等待中”状态才支持修改作业优先级,如果是其他原因导致的长时间等待则不支持修改作业优先级。
如何设置训练作业优先级
参照模型训练:资源配置,在创建训练作业页面可以勾选“提高作业调度优先级”。优先级可以设置数字1-3,数字越大,优先级越高,默认优先级为“1”,最高优先级为“3”。
如何修改训练作业优先级
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择,进入“训练作业”列表。
- 在训练作业列表页面,选择“状态”为“等待中”的训练作业。
- 单击训练作业名称,进入详情页面。
- 在“作业优先级”单击
,在弹窗中修改优先级后单击“确定”。
给子账号配置"设置作业调度最高优先级"权限
默认用户权限可选择优先级“1”和“2”,配置了"设置作业为高优先级"权限的用户可选择优先级1~3。当选择优先级为“3”时还需要为用户配置“modelarts:trainJob:setHighPriority”权限,才能生效。
- 使用主用户账号登录华为云管理控制台,单击右上角用户名,在下拉框中选择“统一身份认证”,进入统一身份认证(IAM)服务。
- 在统一身份认证服务页面的左侧导航选择,单击右上角的“创建自定义策略”按如下要求设置完成后单击“确定”。
- “策略名称”:设置自定义策略名称,例如:允许用户设置训练作业最高优先级。
- “策略配置方式”:选择可视化视图。
- “策略内容”:允许,云服务中搜索ModelArts服务并选中,操作列中搜索关键词“modelarts:trainJob:setHighPriority”并选中,所有资源选择默认值。 图1 创建自定义策略
- 在统一身份认证服务页面的左侧导航选择“用户组”,在用户组页面查找待授权的用户组名称,在右侧的操作列单击“授权”,勾选步骤2创建的自定义策略,单击“下一步”,选择授权范围方案,单击“确定”。
此时,该用户组下的所有用户均有权限设置训练作业优先级1~3。
如果没有用户组,也可以创建一个新的用户组,并通过“用户组管理”功能添加用户,并配置授权。如果指定的子用户没有在用户组中,也可以通过“用户组管理”功能增加用户。
训练作业调度策略
模型训练作业调度采用优先级排序与FIFO (First In First Out)顺序出队的策略。每轮调度开始时,待调度作业按优先级(降序)和创建时间(升序)排列,形成调度队列;随后从队首逐个尝试出队,队首任务资源不足时本轮调度结束,不跳过队首调度后续任务。
- 优先级定义
训练作业支持1、2、3三个优先级等级,数字越大优先级越高。优先级在创建作业时指定,运行期间可动态调整。如需修改优先级,请参考如何修改训练作业优先级。
- 调度流程
- 获取:获取当前队列所有待调度作业。
- 排序:优先级降序 → 创建时间升序。
- 出队:从队首取作业尝试调度。
├── 资源满足 → 出队运行,本轮调度结束。
└── 资源不足 → 本轮调度结束,等待下轮。
- 下一轮调度重新按照步骤1开始执行。
- 典型场景
- 场景一:优先级决定调度顺序。
队列中存在任务A(优先级3,9:00创建)、任务B(优先级2,8:30创建)、任务C(优先级3,9:30创建)。
排序结果:A → C → B。任务B虽创建最早,但优先级低于A和C,需等待高优先级任务调度完成。
- 场景二:FIFO不跳过队首。
队列中存在任务A(8卡,优先级3)和任务B(2卡,优先级2),当前空闲2卡。
任务A排在队首但资源不足,任务B虽有足够资源,但FIFO策略不允许跳过队首,两个任务均排队等待,直到空闲资源满足任务A。
- 场景三:优先级动态调整。
任务A(优先级1)排在任务B(优先级2)之后。管理员将任务A优先级提升至3后,排序实时更新,任务A移至队首优先调度。
- 场景一:优先级决定调度顺序。