你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Kubernetes 服务 (AKS)中的 GPU 节点分区策略

Azure Kubernetes 服务 (AKS)支持 NVIDIA GPU 的节点池来运行计算密集型工作负荷,包括 AI/ML 训练、实时推理和大规模数据分析。 传统上,GPU 以一对一的模式分配,即单个 Kubernetes pod 在 Azure 虚拟机(VM)中独占整个 GPU 设备。 虽然此模型提供简单性和强隔离性,但在工作负荷未完全消耗群集中可用 GPU 资源的方案中,可能会导致使用不足。

为了提高利用率并支持并发工作负荷,客户可以在节点池上集成不同的 GPU 分区策略。 这些方法使多个工作负载可以通过将其划分为较小的逻辑单元或扩展软件或 GPU 驱动程序级别的访问来共享单个物理 GPU。

本文介绍 AKS 中 NVIDIA GPU 的三个主要节点分区策略:多实例 GPU(MIG)时间切片多进程服务(MPS)。

AKS 中的 GPU 节点分区策略概述

AKS 环境中可用的三个主要策略是多实例 GPU(MIG)、时间切片和多进程服务(MPS)。 每种方法在 AKS 平台管理、隔离类型和部署用例方面有所不同。

策略 在 AKS 上托管或允许 GPU 共享类型 建议用于
多实例 GPU(MIG) 托管(或由用户通过 GPU Operator 进行管理) 硬件分区 生产工作负荷
时间切片(通过 NVIDIA GPU Operator) 用户管理,AKS 允许 软件调度 使用可变 GPU 负载进行试验
多进程服务(MPS、NVIDIA GPU 操作员) 用户管理,AKS 允许 CUDA 级进程复用 低延迟、高吞吐量工作负荷

AKS 上的托管多实例 GPU (MIG)

多实例 GPU(MIG)是一种基于硬件的分区功能,可用于选择 NVIDIA GPU 体系结构,例如 A100、H100 和 H200 系列。 MIG 使单个物理 GPU 可以划分为多个独立实例,每个实例都有专用的计算核心、内存和缓存。 这可确保强大的工作负荷隔离和可预测的性能特征,使 MIG 适用于生产环境。

在 AKS 中,MIG 是一项托管功能。 预配启用了 MIG 的节点池时,Azure配置 GPU 硬件、安装和维护所需的驱动程序堆栈,并通过 NVIDIA 设备插件将 MIG 实例与 Kubernetes 集成。 每个 MIG 切片都会作为独立的可分配资源提供给 Kubernetes 调度器,使 Pod 能够以细粒度且可预测的方式请求 GPU 容量。

此方法为企业部署提供了多种优势。 它通过硬件级分区提供生产级隔离,并通过将生命周期管理(包括驱动程序更新和配置)委派给 AKS 来降低运营开销。 此外,MIG 实例从计划程序的角度来看充当独立的 GPU 设备,可实现可预测的放置和资源分配。

但是,MIG 还引入了某些约束:分区配置在节点池级别是静态的,这意味着更改需要重新预配节点。 灵活性仅限于由底层 GPU 硬件支持的预定义 MIG 配置文件。

使用 NVIDIA GPU Operator 进行时间切片(用户管理)

时间切片是一种基于软件的 GPU 共享机制,通过在时间上交替执行,允许多个 Kubernetes Pod 共享单个 GPU。 此方法通过 NVIDIA GPU 操作员来实现,该操作员管理 GPU 驱动程序、Kubernetes 设备插件和容器运行时配置。

时间切片可在 AKS 节点池上进行配置,但不由平台管理。 集群运维人员负责部署和配置 NVIDIA GPU Operator(通常通过 Helm 实现),并通过设备插件设置启用时间切片。 配置后,多个 Pod 可以请求访问同一 GPU 资源,其工作负荷以时间共享的方式进行计划。

时间切片具有灵活性和广泛的兼容性,因为它不依赖于特定的 GPU 硬件特性,并且可用于大多数受 CUDA 支持的 NVIDIA GPU。 它适用于具有突发或可变 GPU 使用率模式的开发、测试或工作负载。

尽管具有灵活性,但时间切片无法提供硬件级隔离。 所有工作负荷共享相同的 GPU 内存和计算资源,这可能会导致争用和不可预知的性能。 由于配置和生命周期管理是用户驱动的,因此操作员还必须处理驱动程序更新、兼容性和优化。 因此,对于需要严格服务级别协议 (SLA) 的生产工作负载,通常不建议使用时间切片。

具有 NVIDIA GPU 操作员的多进程服务(MPS)(用户管理)

NVIDIA 多进程服务(MPS) 是一种驱动程序级功能,使多个 CUDA 应用程序能够在单个 GPU 上并发执行。 与在工作负载之间交替执行的时间切片不同,MPS 允许来自不同进程的内核同时运行,从而提高整体 GPU 利用率并降低兼容工作负载的延迟。

在 AKS 中,可以通过 用户管理的 NVIDIA GPU Operator 部署来配置 MPS。 操作员必须配置 GPU 驱动程序环境才能启用 MPS 并管理 MPS 控件守护程序的生命周期。 连接到同一 MPS 服务器的工作负荷可以共享 GPU,并受益于并发内核执行。

MPS 适用于高吞吐量和低延迟方案,例如批处理作业或紧密耦合的并行工作负荷。 它提供对 GPU 共享的精细控制,当工作负荷设计为利用并发执行时,可以显著提高利用率。

但是,MPS 引入了额外的操作复杂性。 配置是手动的,与其他方法相比,故障排除可能更为复杂。 与时间切片类似,MPS 不提供强隔离,因为所有进程共享 GPU 内存和计算资源。 因此,对于需要严格服务级别协议(SLA)的生产工作负荷,通常不建议使用 MPS。

如何选择 GPU 分区策略

在 AKS 中选择适当的 GPU 分区策略取决于工作负荷要求、操作首选项和性能预期。 对于需要强隔离和可预测的性能的生产环境,建议采用 MIG 方法。 作为 AKS 节点池功能,MIG 简化了操作并减少管理开销。

时间切片对于非生产环境或 GPU 需求波动较大的工作负载非常有用,在这类场景中,最大化利用率比一致性更为重要。 它提供与硬件无关的解决方案,但需要仔细管理,并且不能保证性能隔离。

MPS 非常适合受益于并发 GPU 执行和低延迟的专用工作负荷。 它提供了最高的潜在利用率效率,但带来了更高的复杂性和最小的隔离,使其最适合具有 CUDA 感知应用程序的高级用户。

实际上,组织可以在不同环境中采用不同的策略,例如在生产集群中使用 MIG,而在开发或实验场景中利用时间切片或 MPS。 仔细评估 GPU 工作负荷特征和操作约束对于选择最有效的长期分区方法至关重要。