训练任务调度规则说明

最近更新时间:2025-02-25 21:26:32

我的收藏

整体说明

TI-ONE 针对包年包月资源组场景下的训练任务支持排队策略,默认策略为当资源不足时,任务排队策略是按照任务提交时间的先后顺序先进先出。用户也可以在资源组设置资源尽量利用的先进先出策略,可以让队列中满足运行条件,后提交的任务提前进入调度,详细使用说明请见 排队策略配置说明
当前支持按照任务标签设置任务优先级(P0最高-P9最低),高优先级任务会默认抢占低优先级任务,低优先级任务被抢占后会默认进入排队队列的队尾,详细使用说明请见 优先级调度说明
说明:
针对 CPU 任务,默认会按照负载均衡的策略均分到资源组不同节点。
针对 GPU 任务,默认会按照最小化碎片的方式,优先调度到同一台节点。
不同卡类型的任务不会互相阻塞,例如T4卡的任务不会影响A100卡的任务。

排队策略配置说明

在资源组维度,会新增训练调度策略描述文件,支持以资源组为单位设置优先级调度规则,策略语句如下所示:
DefaultQueue 表示资源组内训练任务的默认排队策略,仅支持任务式建模。其中默认值为0,设置为0代表 严格先进先出 :不管当前空闲多少资源,在等待队列中取到最早提交的任务,如果资源足够则调度执行,如果不够则等待;设置为1代表 资源尽量利用的先进先出 :根据当前空闲的资源情况,从队列中按照时间顺序找到第一个当前资源满足的任务,调度执行。

注意:
下述策略语句中的#注释部分不符合 json 语法,仅做文档展示,粘贴到平台需要清除。
{
"Version": "1.0",
"ResourceRule": {
"DefaultPriority": 0,
"DefaultQueue": 0,
"Preempted": 1
},
"TaskRules": []
}

参数说明;

DefaultPriority:默认优先级,优先级为0-9,P0最高,默认值为0。
DefaultQueue:默认排队策略,可选值0、1、2,默认值为0。
0代表严格先进先出:不管当前空闲多少资源,在等待队列中取到最早提交的任务,如果资源足够则调度执行,如果不够则等待;
1表示在优先级范围内的遍历策略,也就是说同一优先级的任务可以不严格按照任务提交时间按顺序出队,可以看资源空闲情况插队;
2表示全部队列的遍历策略,也就是说整个排队队列都按照遍历策略,只要资源满足,就出队。
Preempted:默认优先级抢占策略,可选值0和1,默认值为1。
0表示队列中的高优任务不会抢占已经在运行中的低优任务;
1表示队列中的高优任务会抢占已经在运行中的低优任务。

优先级调度说明

策略语法示例

在资源组维度,会新增训练调度策略描述文件,支持以资源组为单位设置优先级调度规则,DefaultPriority 表示默认优先级,TaskRules 中可以按照以下示例通过任务标签设置优先级,其中 ValueType 默认为 Tag,后续可能会根据实际需求不断补充ValueType。
下面是一个示例语句,实现的场景为:该资源组下的训练任务默认优先级为P0,如果任务的标签符合任务类型-语音任务,则该任务的优先级为P1(注意:通过标签设置任务优先级的功能仅支持任务式建模)。
低优任务会被高优任务抢占,低优任务被抢占后默认进入排队队列继续等待。
注意:
下述策略语句中的#注释部分不符合 json 语法,仅做文档展示,粘贴到平台需要清除。
{
"Version":"1.0", // json格式的版本
"ResourceRule":{
// 资源组策略
"DefaultPriority": 0, // 默认优先级,优先级0-9
"DefaultQueue": 1,
"Preempted": 1
},
"TaskRules":[
// 任务调度策略,是规则匹配列表 {
// 每个规则是属性和调度的匹配关系 "AttrRules":[{ "ValueType":"Tag", "Key":"任务类型", "Value":"语音任务" }], "ScheduleRule":{ "Priority": 1 // 设置优先级,优先级0-9 } } ] }

具体操作流程

1. 登录 标签控制台,进入标签列表。

单击新建标签,输入标签键任务类型,标签值语音任务。


2. 进入 TI-ONE 资源组管理页面,选择具体的资源组,单击编辑,在调度策略一栏输入上述的策略描述语句。






3. 新建训练任务的时候,如果需要当前这个任务的优先级为低优的话,需要在新建任务的时候给这个任务打上标签任务类型 > 语音任务,那么这个任务在调度的时候就是低优任务,会被抢占,自动进入排队队列。