虚拟化是指创建物理硬件的虚拟表示。虽然虚拟化通常与虚拟机 (VM) 相关联,但其应用范围已扩展到其他领域,包括GPU。GPU虚拟化对于高性能计算、人工智能和机器学习中的高效资源共享至关重要。然而,这一概念,尤其是当应用于GPU时,往往被误解。
现有的 GPU 虚拟化类型
-
单节点 GPU 共享
-
专用 GPU 直通
-
基于网络的 GPU 池化
前两种形式在单个物理服务器内运行,目前被广泛使用。第三种形式跨多个服务器或“节点”运行。
单节点 GPU 共享(例如 NVIDIA vGPU)
这种方法将一个物理 GPU 划分为多个虚拟 GPU,允许多台VM同时使用同一 GPU 的部分资源,从而在不需要 GPU 全部功能的情况下提高了资源利用率。
专用 GPU 直通(例如 Intel GVT-d)
这种方法将整个物理 GPU 分配给单个虚拟机。虽然不分割GPU,但因其允许VM直接访问GPU,为需要GPU全部性能的应用提供接近原生的性能,因此也被视为虚拟化。
新方法:基于网络的虚拟化
基于网络的 GPU 虚拟化解决方案的核心是通过网络将物理 PCIe 连接扩展为虚拟连接。
实际上,这意味着任何计算机都可以通过网络访问任一 GPU。传统上,将 GPU 添加到服务器需要将其物理连接到主板。而在基于网络的虚拟化中,可以通过软件“插入”虚拟GPU,其行为就像物理连接的GPU一样。
该解决方案可充当应用和 GPU 之间的桥梁。它用网络感知版本替换标准 GPU 软件接口(如 NVIDIA CUDA),使得应用可以像访问本地附加的GPU那样与远程服务器上的GPU交互。
无需任何硬件更改,就可让没有物理GPU的计算机表现得像拥有GPU一样。这创建了一个灵活的分布式GPU资源池,可以在网络上动态分配和共享。
会改变游戏规则吗?
传统的 GPU 虚拟化受到物理硬件限制,通常每台服务器最多支持 8 个 GPU。扩展 GPU 容量需要垂直扩展,这涉及升级单个服务器。然而,这种方法通常会导致资源利用率低下,因为VM倾向于预留整个 GPU。
基于网络的分布式方法通过允许跨数据中心的多台服务器(也称为节点)访问GPU来克服这些限制。这创建了一个覆盖整个数据中心的GPU资源共享池,而不是限制每个服务器仅能使用其自身物理连接的GPU。
这种通过添加更多服务器来扩展 GPU 资源的能力(称为横向扩展)允许GPU功率的灵活按需分配,并通过确保 GPU 在整个数据中心得到充分利用来显著提高效率。
为了更好地理解网络虚拟化,可以看看一些现有用于跨网络连接GPU和其他硬件的解决方案:
GPU 虚拟化的未来
与其他虚拟化技术一样,基于网络的 GPU 虚拟化也面临性能挑战,但正在不断改进。开发该技术的初创公司 Thunder Compute 的早期测试显示,AI推理任务运行速度比硬件直接连接慢100倍。但在一个月内,对于大多数AI工作负载,性能提升至仅慢约2倍。
随着技术的成熟,也许在不久的未来,网络虚拟化的GPU将与物理连接的GPU性能相当,其应用范围将超出数据中心,扩展到速度较慢的网络,包括数据中心之间的连接,甚至家庭网络。
原文链接:
https://medium.com/@carl_56793/why-every-gpu-will-be-virtually-attached-over-a-network-83cfc5840b54