NVIDIA 多实例 GPU 用户指南

NVIDIA 多实例 GPU 用户指南

本版用户指南介绍了多实例 GPU 功能 NVIDIA® Ampere 架构。

介绍

新的多实例 GPU (MIG) 功能允许基于 NVIDIA Ampere 的 GPU 架构(例如 NVIDIA A100)被安全地划分为多达七个 为 CUDA 应用程序提供单独的 GPU 实例,为多个用户提供单独的 GPU 资源用于优化 GPU 利用率。 此功能特别有利于 未完全饱和 GPU 计算能力的工作负载,因此用户可能希望 并行运行不同的工作负载以最大限度地提高利用率。

对于拥有多租户用例的云服务提供商 (CSP),MIG 可确保一个客户端 除了为客户提供增强的隔离之外,不会影响其他客户的工作或日程安排。

使用 MIG,每个实例的处理器都有独立且隔离的路径通过整个 内存系统 - 片上交叉开关端口、L2 高速缓存组、内存控制器和 DRAM 地址总线都被唯一地分配给一个单独的实例。 这确保了一个 单个用户的工作负载可以以可预测的吞吐量和延迟运行,使用相同的 L2 缓存分配和 DRAM 带宽,即使其他任务正在破坏自己的缓存或 饱和它们的 DRAM 接口。 MIG 可以划分可用的 GPU 计算资源(包括 流式多处理器或 SM,以及 GPU 引擎(如复制引擎或解码器),以提供 定义的服务质量 (QoS),具有针对不同客户端(例如 VM)的故障隔离, 容器或过程。 MIG 使多个 GPU 实例能够在单个物理上并行运行 英伟达安培 GPU。

使用 MIG,用户将能够在他们的新虚拟 GPU 实例上查看和安排作业,因为 如果它们是物理 GPU。 MIG 适用于 Linux 操作系统,支持使用 Docker 引擎的容器, 支持 Kubernetes 和使用虚拟机管理程序的虚拟机,例如 Red Hat Virtualization 和 VMware vSphere。

MIG 支持以下部署配置:
  • 裸机,包括容器

  • 在受支持的管理程序之上对 Linux 来宾进行 GPU 直通虚拟化

  • 支持的虚拟机管理程序之上的 vGPU

MIG 允许多个 vGPU(以及虚拟机)在单个 A100 上并行运行,同时保留隔离保证 vGPU 提供的。 有关使用 vGPU 和 MIG 进行 GPU 分区的更多信息,请参阅 技术简介 

图 1. MIG 概述
 

 

本文档的目的是介绍 MIG 背后的概念、部署注意事项和 提供 MIG 管理示例,以演示用户如何在 MIG 支持的 GPU 上运行 CUDA 应用程序。

支持的 GPU

对于 NVIDIA Ampere 架构一代,基于 GA100 微架构的 GPU 支持 MIG(即 具有计算能力 8.0 的 GPU)。 下表提供了支持的 GPU 列表:

表 1. 支持的 GPU 产品

产品 建筑学 微架构 计算能力 内存大小 最大实例数 A100-SXM4 NVIDIA Ampere GA100 8.0 40GB 7 A100-SXM4 NVIDIA Ampere GA100 8.0 80GB 7 A100-PCIE NVIDIA Ampere GA100 8.0 40GB 7 A100-PCIE NVIDIA Ampere GA100 8.0 80GB 7 A30 NVIDIA Ampere GA100 8.0 24GB 4

此外,包含上述受支持产品(例如 DGX A100、DGX Station A100)的系统支持 MIG 和 HGX A100。

支持的配置

MIG 支持的部署配置包括
  • 裸机,包括 容器 Kubernetes 

  • 在受支持的管理程序之上对 Linux 来宾进行 GPU 直通虚拟化

  • 支持的虚拟机管理程序之上的 vGPU

虚拟化

MIG 可用于两种类型的虚拟化:
  • 在受支持的虚拟机管理程序上的 Linux 来宾下,当 MIG 支持的 GPU 运行时 在 GPU 直通中,相同 工作流程 、工具 和 配置文件 可用 在裸机上可以使用。

  • MIG 允许多个 vGPU(以及虚拟机)在单个虚拟机上并行运行 支持 MIG 的 GPU,同时保留 vGPU 提供的隔离保证。 要配置 GPU 以与 vGPU VM 一起使用,请参阅 章节 vGPU 软件用户 指导。 另请参阅 技术简介 

概念

术语

本节介绍一些用于描述 MIG 背后概念的术语。

流式多处理器

流式多处理器 (SM) 在 GPU 上执行计算指令。

GPU 上下文

GPU 上下文类似于 CPU 进程。 它封装了所有必要的资源 在 GPU 上执行操作,包括不同的地址空间、内存分配、 等 GPU 上下文具有以下属性:
  • 误隔离

  • 单独安排

  • 不同的地址空间

GPU引擎

GPU 引擎是在 GPU 上执行工作的引擎。 最常用的发动机是 执行计算指令的计算/图形引擎。 其他引擎包括 负责执行 DMA 的复制引擎 (CE)、用于视频解码的 NVDEC、NVENC 用于编码等。每个引擎可以独立调度并执行不同的工作 GPU 上下文。

GPU 内存片

GPU 内存片是 GA100 GPU 内存的最小部分,包括 相应的内存控制器和缓存。 GPU 内存片大约是 总 GPU 内存资源,包括容量和带宽。

GPU SM 切片

GPU SM 切片是 GA100 GPU 上 SM 的最小部分。 GPU SM 切片是 在 MIG 模式下配置时,大约是 A100 中可用的 SM 总数的七分之一。

GPU 切片

GPU 切片是 GA100 GPU 中结合单个 GPU 内存切片的最小部分 和单个 GPU SM 切片。

GPU 实例

GPU 实例 (GI) 是 GPU 切片和 GPU 引擎(DMA、NVDEC 等)的组合。 GPU 实例中的任何内容始终共享所有 GPU 内存片和其他 GPU 引擎, 但它的 SM 切片可以进一步细分为计算实例 (CI)。 GPU 实例提供 内存服务质量。 每个 GPU 切片都包含专用的 GPU 内存资源,这限制了可用的 容量和带宽,并提供内存QoS。 每个 GPU 内存片获得总 GPU 的 1/8 内存资源,每个 GPU SM slice 获得 SM 总数的 1/7。

计算实例

一个 GPU 实例可以细分为多个计算实例。 计算实例 (CI) 包含 父 GPU 实例的 SM 切片和其他 GPU 引擎(DMA、NVDEC 等)的子集。 CI 共享内存和引擎。

分区

使用上面介绍的概念,本节概述了用户如何可以 在 GPU 上创建各种分区。 为便于说明,本文档将使用 以 A100-40GB 为例,但其他支持 MIG 的 GPU 的过程类似。

GPU 实例

GPU的分区是使用内存片进行的,所以可以认为A100-40GB GPU 具有 8x5GB 内存片和 7 个 SM 片,如下图所示。

图 2. A100 上的可用切片

 如上所述,创建 GPU 实例 (GI) 需要结合一些 具有一定数量计算切片的内存切片。 在下图中,5GB 内存 slice 与 1 个计算 slice 组合以创建一个 1g.5gb GI简介:

图 3. 组合内存和计算切片

类似地,4x5GB 内存片可以与 4x1 计算片组合以创建 4g.5gb GI简介:

图 4. 结合内存和计算切片

计算实例

一个 GPU Instance 的计算切片可以进一步细分为多个 计算实例 (CI),其中 CI 共享父 GI 的引擎和内存, 但是每个 CI 都有专用的 SM 资源。

使用相同的 4g.20gb 上面的示例,可以创建一个 CI 以仅使用第一个 计算切片如下所示:

图 5. 组合内存和计算切片

在这种情况下,可以通过选择任何计算切片来创建 4 个不同的 CI。 两个计算 切片也可以组合在一起创建一个 2c.4g.20gb 轮廓:

图 6. 组合内存和计算切片

在本例中,也可以组合 3 个计算切片来创建一个 3c.4g.20gb 轮廓 或所有 4 个可以组合以创建一个 4c.4g.20gb 轮廓。 当所有 4 计算切片组合在一起,配置文件简称为 4g.20gb 轮廓。

请参阅有关 规范命名方案 和 。 CUDA 设备 术语

配置文件放置

可以创建 GI 的切片数量不是任意的。 NVIDIA 驱动程序 API 提供了许多“GPU Instance Profiles”,用户可以通过指定创建 GI 这些配置文件之一。

在给定的 GPU 上,可以从这些配置文件的混合和匹配中创建多个 GI,只要 因为有足够的切片可以满足请求。

笔记:

下表显示了 A100-SXM4-40GB 产品上的配置文件名称。 对于 A100-SXM4-80GB, 配置文件名称将根据内存比例而变化 - 例如, 1g.10gb , 2g.20gb , 3g.40gb , 4g.40gb , 7g.80gb 分别。

有关 A100 和 A30 上所有支持的配置文件组合的列表,请参阅 支持的配置文件 

表 2. A100 上的 GPU 实例配置文件

个人资料名称 记忆分数 部分 SM 硬件单元 L2 缓存大小 可用实例数 MIG 1g.5gb 1/8 1/7 0 NVDECs 1/8 7 MIG 2g.10gb 2/8 2/7 1 NVDECs 2/8 3 MIG 3g.20gb 4/8 3/7 2 NVDECs 4/8 2 MIG 4g.20gb 4/8 4/7 2 NVDECs 4/8 1 MIG 7g.40gb Full 7/7 5 NVDECs Full 1

下图显示了如何构建 GPU 实例的所有有效组合的图示。

图 7. A100 上的 MIG 配置文件

 

在此图中,可以从左侧的实例配置文件开始构建有效的组合,然后 向右移动时将其与其他实例配置文件结合起来,这样没有两个配置文件垂直重叠。 此规则的唯一例外是(4 内存,4 计算)和(4 内存,3 计算)配置文件的组合, 目前不支持。 但是,再次组合(4 内存,3 计算)和(4 内存,3 计算) 支持。 有关 A100 和 A30 上所有支持的配置文件组合和放置的列表,请参阅关于 支持的配置文件 

图 8. A100 上的配置文件放置

 

请注意,该图表示 GPU 实例一旦存在就会存在的物理布局 在 GPU 上实例化。 由于 GPU 实例在不同位置创建和销毁, 可能会发生碎片,并且一个 GPU 实例的物理位置会影响其他 GPU Instances 可以在它旁边实例化。

CUDA 并发机制

MIG 被设计成对 CUDA 应用程序在很大程度上是透明的——因此 CUDA 编程模型保持不变,以最大限度地减少编程工作量。 CUDA 已经 公开了在 GPU 上并行运行工作的多种技术,值得 展示这些技术与 MIG 的比较。 请注意,流和 MPS 是 CUDA 编程模型,因此在与 GPU 实例一起使用时可以工作。

CUDA Streams 是一种 CUDA 编程模型功能,在 CUDA 应用程序中,不同的 工作可以提交到独立的队列并由 GPU 独立处理。 CUDA 流只能在单个进程中使用,并且不提供太多隔离 - 地址空间共享、SM 共享、GPU 内存带宽、缓存和容量 是共享的。 最后,任何错误都会影响所有流和整个过程。

MPS 是 CUDA 多进程服务。 它允许协作的多进程应用程序共享 GPU 上的计算资源。 合作的 MPI 作业通常使用它,但它也被 用于在不相关的应用程序之间共享 GPU 资源,同时接受挑战 这样的解决方案带来了。 MPS 目前不提供客户端之间的错误隔离,而 每个 MPS 客户端使用的流式多处理器可以选择限制为所有 SM 的百分比, 调度硬件仍然是共享的。 内存带宽、缓存和容量都是共享的 MPS 客户端之间。

最后,MIG 是 NVIDIA A100 提供的新并发形式,同时解决了一些 其他 CUDA 技术对运行并行工作的限制。

表 3. CUDA 并发机制

Streams MPS MIG Partition Type Single Process Logical Physical Max Partitions Unlimited 48 7 SM Performance Isolation No Yes (by percentage, not partitioning) Yes Memory Protection No Yes Yes Memory Bandwidth QoS No No Yes Error Isolation No No Yes Cross-Partition Interop Always IPC Limited IPC Reconfigure Dynamic Process Launch When Idle

部署注意事项

从 CUDA 11.0 / R450 版本开始,MIG 功能作为 NVIDIA GPU 驱动程序的一部分提供。

系统注意事项

当 GPU 处于 MIG 模式时,以下系统注意事项与 NVIDIA A100 相关。

  • 仅受 CUDA 11/R450 或更高版本支持的 Linux 操作系统发行版支持 MIG。 也推荐 至少使用 使用 NVIDIA Datacenter Linux 驱动程序 450.80.02 或更高版本。 可以使用 .run 安装此驱动程序 安装程序包 或 通过使用 cuda-drivers-450 的元包 网络存储库 

    笔记:

    还要注意设备节点和 nvidia-capabilities 用于暴露 MIG 设备。 这 /proc 机制 自 450.51.06 起,系统级接口已弃用,建议使用 /dev 基于系统级接口 用于通过 cgroups 控制 MIG 设备的访问机制。 此功能从 450.80.02+ 开始可用 司机。

  • 支持的配置包括
    • 裸机,包括容器

    • 在受支持的管理程序之上对 Linux 来宾进行 GPU 直通虚拟化

    • 支持的虚拟机管理程序之上的 vGPU

    MIG 允许多个 vGPU(以及虚拟机)在单个 A100 上并行运行,同时保留隔离保证 vGPU 提供的。 有关使用 vGPU 和 MIG 进行 GPU 分区的更多信息,请参阅 技术简介 

  • 在 A100 上设置 MIG 模式需要 GPU 重置和超级用户权限。 一旦 A100 处于 MIG 模式,实例管理就是动态的(即不需要 GPU 重置)。 笔记 该设置是基于每个 GPU 的。

  • 与 ECC 模式类似,MIG 模式设置在重新启动后保持不变,直到用户明确切换设置

  • 在启用 MIG 之前,需要停止所有持有驱动程序模块句柄的守护程序。

  • 对于可能正在运行系统健康监控服务的 DGX 等系统而言,情况确实如此 比如 nvsm  或 GPU 运行状况监控或遥测服务,例如 直流通用 

  • 切换 MIG 模式需要 CAP_SYS_ADMIN 能力。 其他 MIG 管理,例如创建和销毁实例, 默认情况下需要超级用户,但可以通过调整 MIG 功能的权限来委派给非特权用户 在 /proc/ .

应用注意事项

当 A100 处于 MIG 模式时,用户应注意以下注意事项:

  • 不支持图形 API(例如 OpenGL、Vulkan 等)

  • 不支持 GPU 到 GPU P2P(PCIe 或 NVLink)

  • CUDA 应用程序将计算实例及其父 GPU 实例视为单个 CUDA 设备。 请参阅 本 节有关 CUDA 的设备枚举

  • 不支持跨 GPU 实例的 CUDA IPC。 支持跨计算实例的 CUDA IPC

  • CUDA 调试(例如使用 cuda-gdb)和内存/竞争检查 (例如使用 cuda-memcheck 或 compute-sanitizer)受支持

  • 在 MIG 之上支持 CUDA MPS。 唯一的限制是客户端的最大数量(48)是 与计算实例大小成比例降低

  • 从 GPU 实例使用时支持 GPUDirect RDMA

MIG 设备名称

默认情况下,MIG 设备由一个“GPU Instance”和一个“Compute Instance”组成。 下表突出显示了通过其 GPU 实例引用 MIG 设备的命名约定 计算切片计数及其以 GB 为单位的总内存(而不仅仅是其内存切片计数)。

当只创建一个 CI(消耗 GI 的全部计算能力)时, 那么设备名称中隐含了 CI 大小。

图 9. MIG 设备名称

笔记:

下面的描述显示了 A100-SXM4-40GB 产品上的配置文件名称。 对于 A100-SXM4-80GB, 配置文件名称将根据内存比例而变化 - 例如, 1g.10gb , 2g.20gb , 3g.40gb , 4g.40gb , 7g.80gb 分别。

表 4. 使用单个 CI 时的设备名称

记忆 20GB 10GB 5GB GPU 实例 3g 2g 1g 计算实例 3c 2c 1c MIG 设备 3g.20gb 2g.10gb 1g.5gb GPC GPC GPC GPC GPC GPC

每个 GI 可以根据用户的工作负载进一步细分为多个 CI。 桌子 下面突出显示了在这种情况下 MIG 设备的名称。 所示示例适用于 将 3g.20gb 设备细分为一组具有不同计算实例切片计数的子设备。

表 5. 使用多个 CI 时的设备名称

记忆 20GB 20GB GPU 实例 3g 3g 计算实例 1c 1c 1c 2c 1c MIG 设备 1c.3g.20gb 1c.3g.20gb 1c.3g.20gb 2c.3g.20gb 1c.3g.20gb GPC GPC GPC GPC GPC GPC

支持的 MIG 配置文件

本节概述了支持的

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值