×

NVIDIA 支持在 OpenShift Container Platform 上使用图形处理单元 (GPU) 资源。OpenShift Container Platform 是一个安全且经过强化的 Kubernetes 平台,由 Red Hat 开发和支持,用于大规模部署和管理 Kubernetes 集群。OpenShift Container Platform 包含对 Kubernetes 的增强功能,使用户可以轻松配置和使用 NVIDIA GPU 资源来加速工作负载。

NVIDIA GPU 运算符使用 OpenShift Container Platform 中的运算符框架来管理运行 GPU 加速工作负载所需的 NVIDIA 软件组件的全生命周期。

这些组件包括 NVIDIA 驱动程序(启用 CUDA)、Kubernetes GPU 设备插件、NVIDIA Container Toolkit、使用 GPU 功能发现 (GFD) 的自动节点标记、基于 DCGM 的监控等。

NVIDIA GPU 运算符仅受 NVIDIA 支持。有关从 NVIDIA 获取支持的更多信息,请参阅 从 NVIDIA 获取支持

NVIDIA GPU 先决条件

  • 至少具有一个 GPU 工作节点的工作 OpenShift 集群。

  • cluster-admin 身份访问 OpenShift 集群以执行所需步骤。

  • 已安装 OpenShift CLI (oc)。

  • 已安装节点功能发现 (NFD) 运算符并创建了 nodefeaturediscovery 实例。

NVIDIA GPU 启用

下图显示了如何为 OpenShift 启用 GPU 架构

NVIDIA GPU enablement
图 1. NVIDIA GPU 启用

MIG 仅支持 A30、A100、A100X、A800、AX800、H100 和 H800。

GPU 和裸机

您可以在经过 NVIDIA 认证的裸机服务器上部署 OpenShift Container Platform,但有一些限制

  • 控制平面节点可以是 CPU 节点。

  • 如果在这些工作节点上执行 AI/ML 工作负载,则工作节点必须是 GPU 节点。

    此外,工作节点可以托管一个或多个 GPU,但它们必须是同一类型。例如,一个节点可以有两个 NVIDIA A100 GPU,但一个节点具有一个 A100 GPU 和一个 T4 GPU 是不受支持的。Kubernetes 的 NVIDIA 设备插件不支持在同一节点上混合使用不同的 GPU 模型。

  • 使用 OpenShift 时,请注意需要一台或三台或更多服务器。不支持只有两台服务器的集群。单服务器部署称为单节点 OpenShift (SNO),使用此配置会导致非高可用性 OpenShift 环境。

您可以选择以下方法之一来访问容器化 GPU

  • GPU 直通

  • 多实例 GPU (MIG)

GPU 和虚拟化

许多开发人员和企业正在转向容器化应用程序和无服务器基础设施,但仍然对开发和维护在虚拟机 (VM) 上运行的应用程序非常感兴趣。Red Hat OpenShift Virtualization 提供了此功能,使企业能够将虚拟机集成到集群内的容器化工作流中。

您可以选择以下方法之一将工作节点连接到 GPU

  • GPU直通,用于访问和使用虚拟机 (VM) 内的GPU硬件。

  • 当GPU计算能力未被工作负载饱和使用时,采用GPU (vGPU) 时间切片技术。

GPU和vSphere

您可以在能够托管不同GPU类型的NVIDIA认证的VMware vSphere服务器上部署OpenShift Container Platform。

如果VM使用vGPU实例,则必须在管理程序中安装NVIDIA GPU驱动程序。对于VMware vSphere,此主机驱动程序以VIB文件的形式提供。

可以分配给工作节点VM的vGPU最大数量取决于vSphere的版本。

  • vSphere 7.0:每个VM最多4个vGPU

  • vSphere 8.0:每个VM最多8个vGPU

    vSphere 8.0引入了对与VM关联的多个完整的或部分的异构配置文件的支持。

您可以选择以下方法之一将工作节点连接到GPU:

  • GPU直通,用于访问和使用虚拟机 (VM) 内的GPU硬件。

  • GPU (vGPU) 时间切片,当不需要全部GPU资源时。

与裸机部署类似,需要一台或三台以上服务器。不支持只有两台服务器的集群。

GPU和Red Hat KVM

您可以在NVIDIA认证的基于内核的虚拟机 (KVM) 服务器上使用OpenShift Container Platform。

与裸机部署类似,需要一台或三台以上服务器。不支持只有两台服务器的集群。

但是,与裸机部署不同,您可以在服务器中使用不同类型的GPU。这是因为您可以将这些GPU分配给充当Kubernetes节点的不同VM。唯一的限制是Kubernetes节点在其自身级别必须具有相同的GPU类型集。

您可以选择以下方法之一来访问容器化 GPU

  • GPU直通,用于访问和使用虚拟机 (VM) 内的GPU硬件。

  • GPU (vGPU) 时间切片,当不需要全部GPU资源时。

要启用vGPU功能,必须在主机级别安装特殊的驱动程序。此驱动程序以RPM包的形式提供。对于GPU直通分配,完全不需要此主机驱动程序。

GPU和CSP

您可以将OpenShift Container Platform部署到主要的云服务提供商 (CSP) 之一:Amazon Web Services (AWS)、Google Cloud Platform (GCP) 或Microsoft Azure。

有两种操作模式可用:完全托管部署和自托管部署。

  • 在完全托管的部署中,所有操作均由Red Hat与CSP合作自动化。您可以通过CSP Web控制台请求OpenShift实例,集群将自动创建并由Red Hat完全管理。您无需担心节点故障或环境错误。Red Hat全面负责维护集群的正常运行时间。完全托管的服务可在AWS和Azure上使用。对于AWS,OpenShift服务称为ROSA(AWS上的Red Hat OpenShift服务)。对于Azure,该服务称为Azure Red Hat OpenShift。

  • 在自托管部署中,您负责实例化和维护OpenShift集群。在这种情况下,Red Hat提供OpenShift-install实用程序来支持OpenShift集群的部署。自托管服务在全球范围内可用于所有CSP。

重要的是,此计算实例必须是GPU加速的计算实例,并且GPU类型必须与NVIDIA AI Enterprise支持的GPU列表匹配。例如,T4、V100和A100属于此列表。

您可以选择以下方法之一来访问容器化 GPU

  • GPU直通,用于访问和使用虚拟机 (VM) 内的GPU硬件。

  • GPU (vGPU) 时间切片,当不需要整个GPU时。

GPU和Red Hat Device Edge

Red Hat Device Edge提供对MicroShift的访问。MicroShift提供单节点部署的简易性以及资源受限(边缘)计算所需的功能和服务。Red Hat Device Edge满足在资源受限环境中部署的裸机、虚拟、容器化或Kubernetes工作负载的需求。

您可以在Red Hat Device Edge环境中启用容器中的NVIDIA GPU。

您可以使用GPU直通来访问容器化的GPU。

GPU共享方法

Red Hat和NVIDIA开发了GPU并发和共享机制,以简化企业级OpenShift Container Platform集群上的GPU加速计算。

应用程序通常具有不同的计算需求,这可能会导致GPU利用率不足。为每个工作负载提供合适的计算资源对于降低部署成本和最大化GPU利用率至关重要。

存在用于提高GPU利用率的并发机制,这些机制涵盖从编程模型API到系统软件和硬件分区的范围,包括虚拟化。以下列表显示了GPU并发机制:

  • 计算统一设备架构 (CUDA) 流

  • 时间分片

  • CUDA多进程服务 (MPS)

  • 多实例GPU (MIG)

  • 使用 vGPU 进行虚拟化

在为不同的OpenShift Container Platform场景使用GPU并发机制时,请考虑以下GPU共享建议:

裸机

vGPU不可用。请考虑使用启用MIG的卡。

虚拟机

vGPU是最佳选择。

裸机上没有MIG的旧版NVIDIA卡

请考虑使用时间切片。

具有多个GPU的虚拟机,并且您希望使用直通和vGPU

请考虑使用单独的虚拟机。

带有OpenShift虚拟化和多个GPU的裸机

请考虑对托管VM使用直通,对容器使用时间切片。

其他资源

CUDA流

计算统一设备架构 (CUDA) 是NVIDIA开发的用于GPU上通用计算的并行计算平台和编程模型。

流是在GPU上按发出顺序执行的一系列操作。CUDA命令通常在默认流中顺序执行,并且一项任务只有在前面一项任务完成后才会开始。

跨不同流的异步处理操作允许并行执行任务。在一个流中发出的任务会在另一个流中发出另一个任务之前、期间或之后运行。这允许GPU同时运行多个任务,而无需规定顺序,从而提高性能。

其他资源

时间切片

当您运行多个CUDA应用程序时,GPU时间切片会交错调度在超载GPU上安排的工作负载。

您可以通过为GPU定义一组副本(每个副本可以独立地分发到pod以在其上运行工作负载)来启用Kubernetes上的GPU时间切片。与多实例GPU (MIG) 不同,副本之间没有内存或故障隔离,但对于某些工作负载而言,这比完全不共享更好。在内部,GPU时间切片用于多路复用来自同一底层GPU副本的工作负载。

您可以为时间切片应用集群范围的默认配置。您也可以应用节点特定的配置。例如,您可以仅对具有 Tesla T4 GPU 的节点应用时间切片配置,而不对具有其他 GPU 型号的节点进行修改。

您可以结合这两种方法,先应用集群范围的默认配置,然后标记节点以使这些节点具有节点特定的配置。

CUDA 多进程服务

CUDA 多进程服务 (MPS) 允许单个 GPU 使用多个 CUDA 进程。这些进程在 GPU 上并行运行,消除了 GPU 计算资源的饱和。MPS 还支持内核操作和来自不同进程的内存复制的并发执行或重叠,以提高利用率。

其他资源

多实例 GPU

使用多实例 GPU (MIG),您可以将 GPU 计算单元和内存分割成多个 MIG 实例。从系统角度来看,每个实例都代表一个独立的 GPU 设备,并且可以连接到节点上运行的任何应用程序、容器或虚拟机。使用 GPU 的软件将这些 MIG 实例中的每一个都视为独立的 GPU。

当您的应用程序不需要整个 GPU 的全部功能时,MIG 非常有用。新款 NVIDIA Ampere 架构的 MIG 功能使您可以将硬件资源分割成多个 GPU 实例,每个实例都可作为独立的启用 CUDA 的 GPU 供操作系统使用。

NVIDIA GPU Operator 1.7.0 及更高版本为 A100 和 A30 Ampere 卡提供 MIG 支持。这些 GPU 实例旨在支持多达七个独立的 CUDA 应用程序,以便它们使用专用硬件资源完全隔离运行。

使用 vGPU 进行虚拟化

虚拟机 (VM) 可以使用 NVIDIA vGPU 直接访问单个物理 GPU。您可以创建虚拟 GPU,这些虚拟 GPU 可以由企业中的虚拟机共享,并可被其他设备访问。

此功能将 GPU 性能的强大功能与 vGPU 提供的管理和安全优势相结合。vGPU 提供的其他优势包括:主动管理和监控您的虚拟机环境,混合 VDI 和计算工作负载的工作负载平衡以及跨多个虚拟机的资源共享。

其他资源

适用于 OpenShift Container Platform 的 NVIDIA GPU 功能

NVIDIA Container Toolkit

NVIDIA Container Toolkit 使您可以创建和运行 GPU 加速的容器。该工具包包括一个容器运行时库和实用程序,可自动配置容器以使用 NVIDIA GPU。

NVIDIA AI Enterprise

NVIDIA AI Enterprise 是一个端到端的云原生 AI 和数据分析软件套件,已针对 NVIDIA 认证系统进行了优化、认证和支持。

NVIDIA AI Enterprise 包括对 Red Hat OpenShift Container Platform 的支持。支持以下安装方法:

  • 在裸机或带有 GPU 直通的 VMware vSphere 上运行 OpenShift Container Platform。

  • 在带有 NVIDIA vGPU 的 VMware vSphere 上运行 OpenShift Container Platform。

GPU 功能发现

适用于 Kubernetes 的 NVIDIA GPU 功能发现是一个软件组件,使您可以自动为节点上可用的 GPU 生成标签。GPU 功能发现使用节点功能发现 (NFD) 来执行此标记。

节点功能发现运营商 (NFD) 通过使用硬件特定信息标记节点来管理 OpenShift Container Platform 集群中硬件功能和配置的发现。NFD 使用节点特定的属性(例如 PCI 卡、内核、操作系统版本等)标记主机。

您可以在 Operator Hub 中搜索“节点功能发现”来查找 NFD 运营商。

带有OpenShift虚拟化的NVIDIA GPU Operator

到目前为止,GPU Operator 仅预配工作节点以运行 GPU 加速的容器。现在,GPU Operator 还可以用于预配工作节点以运行 GPU 加速的虚拟机 (VM)。

您可以配置 GPU Operator 以根据在这些节点上配置运行的 GPU 工作负载,将不同的软件组件部署到工作节点。

GPU 监控仪表盘

您可以安装监控仪表盘,以在 OpenShift Container Platform Web 控制台的集群**观察**页面上显示 GPU 使用情况信息。GPU 利用率信息包括可用 GPU 的数量、功耗(以瓦特为单位)、温度(以摄氏度为单位)、利用率(以百分比为单位)以及每个 GPU 的其他指标。