队列管理员可以设定队列内“GPU碎片资源整理规则”,该规则旨在从资源组维度优化 GPU 负载的摆放位置,清理造成 GPU 碎片的负载,缓解队列排队的情况。按照用户的规则配置内容,平台将在检测到任务长期处于排队中状态时或在固定整理周期内进行GPU碎片整理,以提升GPU资源利用率。
场景一 现有某一用户有3台8卡机器。当前用户3台机器负载情况为 【占用7卡(4+2+1),占用6卡(4+2),占用7卡(4+2+1)】,此时用户想要提交一个4卡任务,会由于碎片无法运行。
场景二 现在某一用户有8台8卡机器。用户调度7个服务,每个服务9个实例,每个实例1卡。这样每个服务的实例分布在不同的机器上,用户一旦销毁某些服务,碎片就产生了。
而开启当前规则后,碎片情况会被平台识别。如场景一中平台将重新摆放负载的位置,将第三台机器的1、2卡负载分别摆放在另外两个机器上,第三台机器即可运行4卡任务。
使用前提
触发前提
- 当碎片节点数量不超过当前资源组的 10% 且 不超过 5 个时,不会启动碎片整理;只有当碎片节点数量超过任意一个阈值时,才会触发碎片整理规则。
注意事项
- 平台支持的碎片整理策略仅对GPU资源生效,由CPU引起的资源碎片现象暂时无法处理。
- 命中当前规则的GPU负载若造成了碎片,可能会被平台停止。
- 队列规则更改后会对队列中的历史负载生效,建议在创建队列后立刻配置规则,且不建议频繁更改规则。更改规则后请及时通知队列的使用者,以免影响历史负载的运行。
- 还是基于上方的场景一,若用户提交4卡GPU任务的时候队列规则尚未开启当,则第三台机器的负载正常运行不会受到影响。在某一时刻队列管理员开启了自定义任务的GPU整理规则,对应负载则有可能命中规则而被停止。
操作步骤
- 登录机器学习平台,点击左侧导航栏中的【资源组管理】-【队列】进入列表页面。
- 点击队列名称进入详情页,点击【规则设置】,开启“GPU碎片资源整理规则”开关进行规则配置。
- 规则配置包含对【在线服务】和【自定义任务】两种负载的规则设置,具体参数如下:
规则配置 | 配置说明 |
|---|
整理任务类型 | 哪些任务会命中规则: - 「在线服务」中的所有实例:为确保服务的连续性,平台将先启动新的实例,并在确保其运行稳定后再删除旧实例。为减少迁移过程中可能造成的请求中断,建议配置「优雅关闭时间」并在代码中实现该机制。
- 使用闲时资源的「自定义任务」:勾选后,若在当前队列提交任务时,开启了「使用闲时资源」的开关,则任务有可能命中当前规则被停止。
- 开启自动重试的「自定义任务」:勾选后,若在当前队列提交任务时,开启了「自动重试」的开关,则任务有可能命中当前规则被停止。
|
整理策略 | - 可选规则:
- 「队列有任务长时间处于排队状态时」:在检测到队列中此类任务长时间处于排队状态时,立即自动触发对资源碎片的整理策略。
- 「定期整理」:用户可根据自己的业务特性,根据cron语句配置「在线服务」的「执行时间」。平台将按照配置的时间定时执行碎片整理规则。「自定义任务」的检查周期则默认为半小时。
- 命中规则而被停止的任务会受到什么影响:
- 若任务在提交时开启了「自动重试」开关,则在停止后会被自动重新提交。在这种情况下,任务列表中会同时存在同名的新旧任务。
- 任务Timeline中会记录任务的停止原因,以及由平台自动重新提交的任务链接。由平台自动提交的任务不消耗重试次数。
|
- Cron语句通过分钟、小时、日期、月份和星期配置,一共五个参数,可以为任务设定具体的执行时间。具体参数配置见下表:
参数名称 | 参数说明 |
|---|
分 | 代表执行时间中的分钟。支持输入0-59之间的数字,输入 * 代表匹配任何值,可使用 “,”枚举。 |
时 | 代表执行时间中的小时。支持输入 0-23 之间的数字,输入 * 表示匹配任何值,可使用 “,”枚举。 |
日 | 代表执行时间中的日期。支持输入 1-31 之间的数字,输入 * 表示匹配任何值,可使用 “,”枚举。 |
月 | 代表执行时间中的月份。支持输入 1-12 之间的数字,输入 * 表示匹配任何值,可使用 “,”枚举。 |
星期 | 代表执行时间中的星期。支持输入 0-6 之间的数字,0代表星期日,输入 * 表示匹配任何值,可使用 “,”枚举。 |
Cron语句 | 执行时间 |
|---|
0 * * * * | 每小时执行策略。 |
0 0 * * * | 每天的 00:00 执行策略。 |
0 0 * * 0 | 每周日的 00:00 执行策略。 |
0 0 1,2 * * | 每月1、2号的 00:00 执行策略。 |
0 12 * * * | 每天 12:00 执行策略。 |
- 可在队列列表页的「队列规则」字段,快速查看当前队列已配置的规则。