You need to enable JavaScript to run this app.
导航
GPU碎片资源整理规则设置
最近更新时间:2024.07.17 15:55:32首次发布时间:2024.03.13 14:55:58

队列管理员可以设定队列内“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卡任务。

使用前提

  • 拥有1个及以上队列,且是队列管理员。

注意事项

  • 平台支持的碎片整理策略仅对GPU资源生效,由CPU引起的资源碎片现象暂时无法处理。

  • 命中当前规则的GPU负载若造成了碎片,可能会被平台停止。

  • 队列规则更改后会对队列中的历史负载生效,建议在创建队列后立刻配置规则,且不建议频繁更改规则。更改规则后请及时通知队列的使用者,以免影响历史负载的运行。

    • 还是基于上方的场景一,若用户提交4卡GPU任务的时候队列规则尚未开启当,则第三台机器的负载正常运行不会受到影响。在某一时刻队列管理员开启了自定义任务的GPU整理规则,对应负载则有可能命中规则而被停止。

操作步骤

  1. 登录机器学习平台,点击左侧导航栏中的【资源组管理】-【队列】进入列表页面。

  2. 点击队列名称进入详情页,点击【规则设置】,开启“GPU碎片资源整理规则”开关进行规则配置。

  3. 规则配置包含对【在线服务】和【自定义任务】两种负载的规则设置,具体参数如下:

规则配置配置说明

整理任务类型

哪些任务会命中规则:

  • 「在线服务」中的所有实例:为确保服务的连续性,平台将先启动新的实例,并在确保其运行稳定后再删除旧实例。为减少迁移过程中可能造成的请求中断,建议配置「优雅关闭时间」并在代码中实现该机制。
  • 使用闲时资源的「自定义任务」:勾选后,若在当前队列提交任务时,开启了「使用闲时资源」的开关,则任务有可能命中当前规则被停止。
  • 开启自动重试的「自定义任务」:勾选后,若在当前队列提交任务时,开启了「自动重试」的开关,则任务有可能命中当前规则被停止。

整理策略

  • 可选规则:
    • 「队列有任务长时间处于排队状态时」:在检测到队列中此类任务长时间处于排队状态时,立即自动触发对资源碎片的整理策略。
    • 「定期整理」:用户可根据自己的业务特性,根据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 执行策略。
  1. 可在队列列表页的「队列规则」字段,快速查看当前队列已配置的规则。

节点资源及负载任务看板

平台为资源组管理员额外提供了节点资源及负载任务看板。该功能支持在本地进行资源组全局各规格资源使用情况(VCPU、内存与GPU)、节点资源空闲量、节点负载量详情(包含开发机、自定义任务和在线服务三类)等的查看与管理。

启用功能

若您需要启用该功能,您需要执行以下步骤:

  1. 请联系平台给您发送相应的数据看板模版。
  2. 确保您本地的 Grafana 与线上环境网络可通。
  3. 点击查看「全局配置」-「VMP监控」,并进行「授权」操作(仅支持使用新版监控归档)。授权后选择归档位置,点击跳转,编辑归档工作区的「Basic Auth」的「用户名」以及「密码」。同时复制「Query URL」。
  4. 进入您本地的 Grafana,选择「Connections」,添加「Data source」-「Prometheus」。填入刚才设置的「Basic Auth」的「用户名」、「密码」以及「Query URL」。
  5. 切换至「Dashboard」,选择「New」-「Import」,导入看板模版。随后切换数据源,即可完成碎片负载看板搭建。

最佳实践

当资源组中出现碎片时,可以通过观察节点资源空闲量或节点资源使用情况柱形图,定位到对应的碎片节点。

点击查看碎片节点上的负载,负载详情版面将向您展示所查看的节点上所有负载的详细信息:该负载所属队列、具体的资源使用情况(VCPU、内存与GPU)。

在掌握产生碎片的节点上负载具体情况后,您可以根据队列id以及任务id(“t”开头代表自定义任务、“s”开头代表在线服务、“di”开头代表开发机)确定您资源组内对应的任务创建者。

随后,您可以联系到该任务创建者,进行任务迁移操作。具体迁移方法可以参考节点故障通知与负载迁移指南中「操作指南」小节。