开源工具GPU Sharing:支持Kubernetes集群细粒度
问题背景
全球主要的容器集群服务厂商的Kubernetes服务都提供了Nvidia GPU容器调度能力,但是通常都是将一个GPU卡分配给一个容器。这可以实现比较好的隔离性,确保使用GPU的应用不会被其他应用影响;对于深度学习模型训练的场景非常适合,但是如果对于模型开发和模型预测的场景就会比较浪费。 大家的诉求是能够让更多的预测服务共享同一个GPU卡上,进而提高集群中Nvidia GPU的利用率。而这就需要提供GPU资源的划分,而这里GPU资源划分的维度指的就是GPU显存和Cuda Kernel线程的划分。通常在集群级别谈支持共享GPU,通常是两件事情:
1.调度
2.隔离,我们这里主要讨论的是调度,隔离的方案未来会基于Nvidia的MPS来实现。
而对于细粒度的GPU卡调度,目前Kubernetes社区并没有很好的方案,这是由于Kube