在 Kubernetes 中集成 NVIDIA 多进程服务 (MPS) 以在工作负载之间共享 GPU,从而最大限度地提高利用率并降低基础设施成本
大多数工作负载不需要每个 GPU 的全部内存和计算资源。因此,在多个进程之间共享 GPU 对于提高 GPU 利用率和降低基础架构成本至关重要。
在 Kubernetes 中,这可以通过将单个 GPU 公开为特定内存和计算大小的多个资源(即切片)来实现,这些资源可以由各个容器请求。通过创建每个容器严格需要大小的 GPU 切片,您可以释放集群中的资源。这些资源可以用来调度额外的 Pod,或者可以让你减少集群的节点数量。在任何一种情况下,在进程之间共享 GPU 都可以降低基础设施成本。
Kubernetes 中的 GPU 支持由NVIDIA Kubernetes Device Plugin提供,目前仅支持两种共享策略:时间切片和多实例 GPU (MIG)。然而,还有第三种 GPU 共享策略平衡了时间分片和 MIG 的优缺点:多进程服务(MPS)。尽管 NVIDIA Device Plugin 不支持 MPS,但有一种方法可以在 Kubernetes 中使用它。
在本文中,我们将首先研究所有三种 GPU 共享技术的优缺点,然后提供有关如何在 Kubernetes 中使用 MPS 的分步指南。此外,我们还提供了一种用于自动管理 MPS 资源以优化利用率和降低运营成本的解决方案:动态 MPS 分区。
GPU共享技术概述
共有三种共享 GPU 的方法:
- 时间分片
- 多实例 GPU (MIG)
- 多进程服务 (MPS)
在深入了解动态 MPS 分区的演示之前