GPU共享技术指南:vGPU、MIG和时间切片
GPU共享技术指南:vGPU、MIG和时间切片
在现代计算中,GPU的优化利用率至关重要,尤其是在AI和ML处理方面。GPU具有无与伦比的并行计算能力,可以快速处理大型数据集。通过在不同的工作负载之间共享GPU,可以优化GPU资源的利用率。这就是虚拟GPU (vGPU)、多实例GPU (MIG)和GPU时间切片发挥作用的地方!
GPU 优化技术
vGPU、MIG和GPU时间切片都旨在通过允许多个任务或用户共享单个物理GPU来优化GPU资源的利用率。不过,它们在工作方式、硬件要求和用例方面存在一些差异。在本博文中,我们将阐明这些差异,并帮助您做出最佳选择,以实现更好的GPU优化。
虚拟 GPU (vGPU)
vGPU或虚拟GPU是一种技术,允许将物理GPU在多个虚拟机(VM)之间共享。每个VM都获得GPU资源的专用部分,使多个用户或应用程序能够同时访问GPU加速。这种虚拟化技术对于需要高性能图形或计算能力以实现一致且可预测的性能的每个VM的环境至关重要。
vGPU 用例
vGPU在需要在虚拟机上提供GPU的情况下非常有用。一些具体的例子包括虚拟桌面基础设施(VDI)、云游戏和远程工作站场景。对于AI/ML处理,vGPU对于在容器化环境中运行工作负载非常重要。
vGPU 的优势
- vGPU允许每个VM拥有GPU资源的专用部分。这确保了每个VM的一致且可预测的性能。
- 由于资源是静态分配的,因此在一个VM中运行的工作负载不会干扰另一个VM中的工作负载,从而防止由于资源争用而导致的性能下降。
- 每个vGPU实例都在其自己的VM中运行,提供了强大的安全边界。这种隔离对于多租户环境至关重要,在这些环境中,数据隐私和安全性至关重要,并且在高度监管的行业中通常是强制性的。
- 一个vGPU实例中的错误或故障将被限制在该实例内,防止它们影响共享同一个物理GPU的其他VM。
- 虽然最大分区数量取决于GPU实例模型和vGPU管理器软件,但vGPU支持创建每个GPU最多20个分区,使用A100 80GB GPU和NVIDIA虚拟计算服务器(vCS)。
vGPU 的工作原理?
vGPU通过创建可以分配给单个VM的GPU硬件虚拟实例来工作。该过程通常涉及以下部分。
- GPU 虚拟化:GPU虚拟化是抽象物理GPU硬件以创建多个虚拟GPU(vGPU)的过程,这些vGPU可以分配给不同的虚拟机(VM)或容器。GPU抽象是通过结合软件组件实现和管理的,包括管理程序和专门的GPU驱动程序。
- Hypervisor 集成:管理程序,例如VMware vSphere、Citrix XenServer或KVM(基于内核的虚拟机),管理vGPU的分配和调度。管理程序包括一个GPU管理层,它与物理GPU交互并控制GPU资源到VM的分配。
- 驱动程序和软件堆栈:
vGPU 架构
以下是启用主机上vGPU所涉及的关键组件。
- 主机驱动程序:此驱动程序运行在hypervisor或主机操作系统上,并管理物理GPU,将其资源划分为虚拟实例。
- 客户机驱动程序:安装在每个VM中,此驱动程序与主机驱动程序通信以访问分配的vGPU资源。
- vGPU 管理器:由GPU供应商(例如NVIDIA)提供的软件组件,用于创建和管理vGPU。
注意:在某些情况下,您可能不需要主机驱动程序和GPU管理器同时存在。其中一个可能就足够了。请参阅制造商文档以获取具体指南。
资源分配
每个VM根据预定义的配置文件分配GPU资源的一部分。这些配置文件确定每个VM获取多少GPU内存和计算能力,确保公平分配和最佳利用。
GPU 虚拟化的硬件要求
要启用和使用vGPU,您确实需要与虚拟化兼容的特定GPU,尽管大多数现代GPU都与虚拟化兼容。NVIDIA提供了几款支持vGPU的GPU,主要来自其Tesla、Quadro和A100系列。AMD Firepro S-Series也支持使用SR-IOV的虚拟化。
多实例 GPU (MIG)
Multi-Instance GPU (MIG)是NVIDIA在2020年5月推出的一项技术。它允许将单个物理GPU在硬件级别划分为多个隔离的GPU实例。每个实例独立运行,拥有自己的专用计算、内存和带宽资源。这使多个用户或应用程序能够共享单个GPU,同时保持性能隔离和安全性。
由于MIG允许在硬件级别对GPU进行分区,因此它可以实现更好的性能,更低的开销和更高的安全性。
MIG 使用案例
多实例GPU通常用于GPU密集型应用程序,例如HPC工作负载、超参数调整等。它也用于AI模型训练和推理服务器,这些服务器需要高性能和进程之间更高的安全性。
MIG 的优势
- MIG确保GPU资源得到充分利用,减少空闲时间并提高整体效率。
- MIG将GPU静态分区为多个隔离的实例,每个实例都有自己的专用资源部分,包括流式多处理器(SM);确保更好且可预测的流式多处理器(SM)服务质量(QoS)。
- 专用部分内存在多个隔离的实例中确保更好的内存QoS。
- 静态分区还提供错误隔离,从而实现故障隔离和系统稳定性。
- 更好的数据保护和恶意活动的隔离,为多租户设置提供更好的安全性。
MIG 如何工作?
MIG技术通过内置于GPU的多个架构功能的组合来实现。以下是一些重要的功能:
- SM 分区:SM(流式多处理器)是GPU的核心计算单元。GPU架构允许根据所选配置将特定数量的SM分配给每个MIG实例。
- 内存分区:GPU的内存被划分为通道。该架构允许将每个通道分配给不同的实例。这使每个MIG实例能够独占访问自己的内存。
- 高速互连:GPU内部的内部高速互连被分区,以确保每个实例都能访问其公平的带宽份额。
MIG 功能
- 硬件分区:MIG利用NVIDIA A100 GPU的架构,该架构设计为可拆分为最多七个独立的GPU实例。每个实例称为“MIG切片”,可以配置不同数量的GPU资源,例如内存和计算核心。
- 隔离和安全性:每个MIG切片独立于其他切片运行,并具有硬件强制隔离。这确保在一个实例上运行的工作负载不会干扰另一个实例上的工作负载,从而提供安全且可预测的性能环境。隔离还防止实例之间发生任何潜在的安全漏洞或数据泄露。
- 资源分配:GPU的资源通过固件和软件的组合划分为实例。管理员可以根据工作负载的特定需求创建和管理这些实例。例如,大型训练作业可能需要更大的切片,具有更多内存和计算能力,而较小的推理任务可以使用较小的切片。
硬件要求
多实例GPU是一项新技术,仅受少数GPU系列型号支持。它与NVIDIA A100系列一起推出,截至2024年6月,目前仅受NVIDIA Ampere、Blackwell和Hopper一代GPU支持(来源)。这些代的一些示例型号分别是A100、B100/200和H100/200 GPU。
GPU 时间切片
GPU时间切片是一种虚拟化技术,允许多个工作负载或虚拟机(VM)通过将处理时间划分为离散切片来共享单个GPU。每个切片按顺序将GPU的计算和内存资源的一部分分配给不同的任务或用户。这使得能够在单个GPU上并发执行多个任务,最大限度地提高资源利用率并确保公平地将GPU时间分配给每个工作负载。
GPU 时间切片用例
GPU时间切片适用于需要在有限硬件上执行大量作业的所有工作负载。它适用于不需要复杂资源管理的场景,以及可以容忍可变GPU访问和性能的任务。
GPU 时间切片的优势
- 最大限度地提高资源利用率并减少空闲时间,无需专门的硬件或专有软件。
- 减少对额外硬件的需求,从而降低运营成本。
- 提供灵活性,根据工作负载需求处理不同的计算需求。
- 时间切片相对易于实施和管理,使其适用于不需要复杂资源管理的环境。
- 此方法对于可以容忍GPU访问和性能变化的非关键任务有效,例如后台处理或批处理作业。
- 可用最大分区数量不受限制。
GPU 时间切片的局限性
- 工作负载之间频繁的上下文切换会导致性能开销并增加任务执行的延迟,从而降低GPU利用率的整体效率。
- GPU可能无法有效地处理具有高度可变资源需求的工作负载,因为固定时间切片可能与所有任务的计算需求不一致。
- 性能可能不一致,因为不同的工作负载可能具有不同的计算和内存需求,从而导致潜在的资源争用。
- 用户对分配给每个工作负载的GPU资源的确切数量控制有限,因此难以保证特定任务的性能。
GPU 时间切片的工作原理?
以下是使用时间切片调度和执行GPU任务的主要步骤。
- 调度程序实现:GPU调度程序管理GPU资源在不同任务之间的分配。它将GPU的时间切片成间隔,并根据预定义的策略将这些时间段分配给各种工作负载或VM。每个时间切片代表一个固定持续时间,在此期间特定工作负载独占访问GPU资源。这些切片通常很短,允许GPU快速地在任务之间切换。
- 任务排队:传入的GPU任务被放置在一个由调度程序管理的队列中。调度程序根据优先级、资源需求和其他策略组织这些任务。调度程序可以使用不同的策略,例如循环调度。
- 资源分配:当分配给任务的时间片结束时,GPU会执行上下文切换,以保存当前任务的状态并加载下一个任务的状态。这涉及保存和恢复寄存器、内存指针和其他相关数据。GPU确保每个任务在其分配的时间片内都能访问必要的计算和内存资源。这包括管理内存分配并确保数据正确地传输到GPU和从GPU传输。
- 执行和监控:在其分配的时间片内,任务在GPU上运行,利用计算核心、内存和其他资源。调度程序监控每个任务的性能,根据需要调整时间片和资源分配,以优化整体GPU利用率并确保公平访问。
硬件要求
GPU时间切片没有特定的硬件要求。大多数现代GPU都支持它。
vGPU 与 MIG 与 GPU 时间切片
以下是三种GPU分区技术的鸟瞰图比较。此图表提供了快速参考,以了解它们在分区类型、SM/内存服务质量、错误隔离等不同功能方面的差异。
功能 | vGPU | 时间切片 | MIG |
---|---|---|---|
分区类型 | 逻辑 | 逻辑 | 物理 |
最大分区 | 最多20个(使用VCS和A100 80GB GPU) | 无限 | 7 |
SM QoS | ❌ | ❌ | ✅ |
内存 QoS | ❌ | ❌ | ✅ |
错误隔离 | ✅ | ❌ | ✅ |
重新配置 | 动态 | 动态 | 需要重启 |
GPU 支持 | 大多数GPU | 大多数GPU | A100、A30、Blackwell和Hopper系列 |
总结
在这篇博文中,我们探讨了三种GPU虚拟化技术:vGPU、多实例GPU(MIG)和GPU时间切片。
- vGPU(虚拟GPU):允许单个物理GPU在多个虚拟机(VM)之间共享,每个虚拟机都有其自己的GPU资源专用部分。
- 多实例GPU(MIG):将单个物理GPU分区成多个隔离的实例,每个实例在硬件级别都有专用的计算、内存和带宽资源。
- GPU时间切片:将GPU的处理时间划分为离散的时间间隔,允许多个任务以时间复用方式共享GPU。