koordinator icon indicating copy to clipboard operation
koordinator copied to clipboard

[proposal] 实现支持隔离并兼顾应用性能的 GPU 共享/虚拟化方案

Open fighterhit opened this issue 2 years ago • 7 comments

What is your proposal:

AI 任务一般都会用到 GPU,这类资源相对 CPU/内存来说往往更加昂贵,目前实现混部的开源方案有很多,基本是通过内核 cgroup 特性针对传统 CPU 任务来做,真正实现 GPU 混部的方案却很少。因此,实现支持 QoS based GPU 共享/虚拟化,即在支持 故障隔离、显存隔离、算力隔离 的同时 兼顾 GPU 应用性能,对混部来说是一种差异化竞争,意义重大。

Why is this needed:

目前业界已有的一些 GPU 共享/虚拟化方案:

以上是过去调研了解到的一些方案,若有错误之处,欢迎批评指正。这些方案架构都比较类似,往往是 scheduler extender + device plugin,新增 GPU 资源类型,调度器维护一个新的 GPU 分配量来实现调度和分配逻辑。具体特点是第一种方案没有隔离,简单支持 GPU 多挂载,算力、显存等是否超限全靠用户应用自觉;第二种实现了隔离,拦截 cuda API,实现隔离,但实测性能不是很好,一些推理 case 延迟较高,且需随 cuda api 更新而变动;第三种 NVIDIA MPS 性能会好一些,但因为原生没有故障隔离,因此没有研究很多,根据百度文章介绍可能做了一些改造;第四种,阿里云之前推出了驱动层隔离 cGPU 方案,后面腾讯云也推出 qGPU 实现,这类相比之前的方案性能各方面可能会好一点,但只能在公有云上使用,无法用来提高用户自身集群的 GPU 使用率。

综上所述,业界 GPU 共享/虚拟化方案有很多,大致看了一下 koordinator 的 gpushare 相关的 pr #502 可能类似第一种,这类相对同质化也比较严重,希望能更进一步,实现一种兼顾隔离和性能的方案!

Is there a suggested solution, if so, please add it:

可以参考 cGPU/qGPU... 之类的

fighterhit avatar Sep 05 '22 07:09 fighterhit

https://www.usenix.org/conference/osdi20/presentation/xiao 在框架层面也是可以做一些工作的

buptcozy avatar Sep 05 '22 09:09 buptcozy

https://www.usenix.org/conference/osdi20/presentation/xiao 在框架层面也是可以做一些工作的

嗯,但这种方式对用户不太友好

fighterhit avatar Sep 06 '22 09:09 fighterhit

投mps一票

cheimu avatar Sep 06 '22 09:09 cheimu

https://www.usenix.org/conference/osdi20/presentation/xiao 在框架层面也是可以做一些工作的

嗯,但这种方式对用户不太友好

同意。这种需要框架运行时支持的,不可能去做一一适配,感觉只会出现在公司内部的场景,有专门的团队做运维和场景适配。

cheimu avatar Sep 06 '22 09:09 cheimu

公司内部这几种都有做过对比。第二种随模型迭代演进,后期维护成本非常高。还是看好第三种,希望大厂能开源共建。

JasonRD avatar Sep 22 '22 09:09 JasonRD

字节 GTC 2022 介绍用了 vcuda+MPS,百度也在 MPS 上做了挺多,看起来如果能解决 MPS 故障隔离问题性能应该比其它时分复用好点

fighterhit avatar Sep 28 '22 02:09 fighterhit

之前也调度过一些,最后选了腾讯的tkestack,感觉没啥开源特别好用的

AdrianMachao avatar Dec 07 '23 07:12 AdrianMachao