当前位置: 首页 > 工具软件 > Mig > 使用案例 >

A100 MIG 使用说明

宦博超
2023-12-01

A100 MIG 使用说明

官方手册

阅读约定

美元符号 “$” 号开头的黄色标注,表示一个命令行界面的命令。

前提条件

当需要在支持 MIG 模式的 GPU 中开启 MIG,则需要满足以下前提条件和最低的软件版本:

  • MIG 仅在 A100 与 H100上支持(截至2022年6月7日)
  • CUDA 11 和 NVIDIA 驱动程序450.80.02或更高版本
  • CUDA 11 支持的 Linux 操作系统发行版
  • 如果运行容器或使用Kubernetes,则:(1) NVIDIA容器工具包(NVIDIA-docker2):v2.5.0或更高版本 (2)NVIDIA K8s设备插件:v0.7.0或更高版本 (3)NVIDIA gpu功能发现:v0.2.0或更高版本

MIG 可以使用 NVIDIA 管理库(NVML,NVIDIA Management Library)的 API 或其命令行界面 $ nvidia-smi 进行编程管理。

有关 MIG 命令的更多信息,请参阅 $ man nvidia-smi$ nvidia-smi mig --help。有关MIG 管理 API 的信息,请参阅 CUDA 11 中包含的 NVML 的头文件(NVML.11.0.h)。

开启MIG模式(Enable MIG Mode)

默认情况下,NVIDIA A100 上未启用 MIG 模式。
在 linux 上运行 $ nvidia-smi 命令会显示 MIG 模式已禁用。

可以使用以下命令在每个 GPU 上启用 MIG 模式:

$ nvidia-smi -i <GPU IDs> -mig 1

注意:

  • 可以使用逗号分隔的 GPU 索引、PCI 总线 ID 或 UUID 来选择GPU。
  • 如果未指定 GPU ID,则 MIG 模式将应用于系统上的所有 GPU。
  • MIG 模式(禁用或启用状态)在系统重新启动前后保持不变。

例如:

$ sudo nvidia-smi -i 0 -mig 1
Enabled MIG Mode for GPU 00000000:36:00.0
All done.

关闭MIG模式(Disable MIG Mode)

可以使用以下命令在每个 GPU 上关闭 MIG 模式:

$ nvidia-smi -i <GPU IDs> -mig 0
Disabled MIG Mode for GPU 00000000:36:00.0
All done.

GPU实例配置文件

NVIDIA 驱动程序提供了许多配置文件,用户可以在 A100 中配置 MIG 功能时选择这些配置文件。配置文件是用户可以创建的 GPU 实例的大小和功能。驱动程序还提供有关放置的信息,这些信息指示可以创建的实例的类型和数量。

$ sudo nvidia-smi mig -lgip
+-----------------------------------------------------------------------------+
| GPU instance profiles:                                                      |
| GPU   Name             ID    Instances   Memory     P2P    SM    DEC   ENC  |
|                              Free/Total   GiB              CE    JPEG  OFA  |
|=============================================================================|
|   0  MIG 1g.5gb        19     0/7        4.75       No     14     0     0   |
|                                                             1     0     0   |
+-----------------------------------------------------------------------------+
|   0  MIG 1g.5gb+me     20     0/1        4.75       No     14     1     0   |
|                                                             1     1     1   |
+-----------------------------------------------------------------------------+
|   0  MIG 2g.10gb       14     0/3        9.75       No     28     1     0   |
|                                                             2     0     0   |
+-----------------------------------------------------------------------------+
|   0  MIG 3g.20gb        9     0/2        19.62      No     42     2     0   |
|                                                             3     0     0   |
+-----------------------------------------------------------------------------+
|   0  MIG 4g.20gb        5     0/1        19.62      No     56     2     0   |
|                                                             4     0     0   |
+-----------------------------------------------------------------------------+
|   0  MIG 7g.40gb        0     0/1        39.50      No     98     5     0   |
|                                                             7     1     1   |
+-----------------------------------------------------------------------------+

使用 $ nvidia-smi mig -lgipp 命令可列出可用的分配安排。
分配安排的语法是 {<index>}:<GPU Slice Count>,并显示实例在 GPU 上的分配安排。显示的放置索引指示配置文件如何映射到 GPU 上,如支持的配置文件表所示。

$ sudo nvidia-smi mig -lgipp
GPU  0 Profile ID 19 Placements: {0,1,2,3,4,5,6}:1
GPU  0 Profile ID 20 Placements: {0,1,2,3,4,5,6}:1
GPU  0 Profile ID 14 Placements: {0,2,4}:2
GPU  0 Profile ID  9 Placements: {0,4}:4
GPU  0 Profile ID  5 Placement : {0}:4
GPU  0 Profile ID  0 Placement : {0}:8

该命令显示用户可以创建两个 3g.20gb 类型的实例(配置文件ID 9)或七个 1g.5gb 实例(配置文件ID 19)。

创建GPU实例

在开始使用MIG之前,用户需要使用 $ nvidia-smi mig -cgi 选项来创建GPU实例,可以使用以下三个选项之一指定要创建的实例配置文件:

  • Profile ID (e.g. 9, 14, 5)
  • Short name of the profile (e.g. 3g.20gb
  • Full profile name of the instance (e.g. MIG 3g.20gb)

一旦 GPU 实例被创键,就需要创建相应的计算实例(CI),通过使用 $ nvidia-smi mig -C 选项来创建这些实例。

注意:
如果不创建GPU实例(和相应的计算实例),CUDA 工作负载就无法在 GPU 上运行。换句话说,仅在GPU上启用MIG模式是不够的。还要注意的是,创建的MIG设备不会在系统重新启动后持续存在。因此,如果GPU或系统被重启,则用户或系统管理员需要重新创建所需的MIG配置。

例:
下面的示例显示了用户如何创建 GPU 实例(以及相应的计算实例)。在本例中,用户可以创建两个GPU 实例(3g.20gb类型),每个 GPU 实例具有一半的可用计算和内存容量。在本例中,我们特意使用配置文件 ID 和短配置文件名称来展示如何使用任一选项:

$ sudo nvidia-smi mig -cgi 9,3g.20gb -C
Successfully created GPU instance ID  2 on GPU  0 using profile MIG 3g.20gb (ID  9)
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  2 using profile MIG 3g.20gb (ID  2)
Successfully created GPU instance ID  1 on GPU  0 using profile MIG 3g.20gb (ID  9)
Successfully created compute instance ID  0 on GPU  0 GPU instance ID  1 using profile MIG 3g.20gb (ID  2)

现在可以通过如下命令列出可用的GPU实例:

$ sudo nvidia-smi mig -lgi
+----------------------------------------------------+
| GPU instances:                                     |
| GPU   Name          Profile  Instance   Placement  |
|                       ID       ID       Start:Size |
|====================================================|
|   0  MIG 3g.20gb       9        1          4:4     |
+----------------------------------------------------+
|   0  MIG 3g.20gb       9        2          0:4     |
+----------------------------------------------------+

现在可以通过如下命令验证是否已创建 GI(GPU Instance) 和相应的 CI(Compute Instance) :

$ nvidia-smi
+-----------------------------------------------------------------------------+
| MIG devices:                                                                |
+------------------+----------------------+-----------+-----------------------+
| GPU  GI  CI  MIG |         Memory-Usage |        Vol|         Shared        |
|      ID  ID  Dev |                      | SM     Unc| CE  ENC  DEC  OFA  JPG|
|                  |                      |        ECC|                       |
|==================+======================+===========+=======================|
|  0    1   0   0  |     11MiB / 20224MiB | 42      0 |  3   0    2    0    0 |
+------------------+----------------------+-----------+-----------------------+
|  0    2   0   1  |     11MiB / 20096MiB | 42      0 |  3   0    2    0    0 |
+------------------+----------------------+-----------+-----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
 类似资料: