博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接



nvidia 高级特性MIG详细介绍(三)

【Nvidia】nvidia 高级特性MIG详细介绍(三)-LMLPHP
       本篇博文我们使用命令创建几个具体的GI。可以使用NVIDIA Management Library (NVML)APIs或其命令行接口nvidia-smi以编程方式管理MIG。请注意,为简洁起见,下面示例中的一些nvidia-smi输出可能会被裁剪,以展示感兴趣的相关部分。

       有关MIG命令的更多信息,请参阅nvidia-smi手册页或nvidia-smi MIG --help。有关MIG管理API的信息,请参阅CUDA工具包中的NVML头文件(NVML.h) ,其位于/usr/local/cuda/include/nvml.h下,可以使用自动化工具来配置MIG,请参阅NVIDIA MIG分区编辑器(或mig-parted)工具


一、开启MIG特性

       默认情况下,GPU未开启MIG模式。例如,运行nvidia-smi,显示未启用MIG模式:

$ nvidia-smi -i 0
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  A100-SXM4-40GB      Off  | 00000000:36:00.0 Off |                    0 |
| N/A   29C    P0    62W / 400W |      0MiB / 40537MiB |      6%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

       可以使用以下命令在每个GPU上启用MIG模式:nvidia-smi -i <GPU IDs> -mig 1。可以使用GPU索引、PCI总线ID或UUID来选择GPU,多个GPU之间使用逗号分隔。如果没有指定GPU ID,那么MIG模式将应用于系统上的所有GPU

       当在GPU上启用MIG时,根据GPU产品的不同,驱动程序将尝试重置GPU,以便MIG模式可以生效。

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


$ nvidia-smi -i 0 --query-gpu=pci.bus_id,mig.mode.current --format=csv
pci.bus_id, mig.mode.current
00000000:36:00.0, Enabled

二、查询当前MIG配置文件

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

$ 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     7/7        4.75       No     14     0     0   |
|                                                             1     0     0   |
+-----------------------------------------------------------------------------+
|   0  MIG 1g.5gb+me     20     1/1        4.75       No     14     1     0   |
|                                                             1     1     1   |
+-----------------------------------------------------------------------------+
|   0  MIG 1g.10gb       15     4/4        9.62       No     14     1     0   |
|                                                             1     0     0   |
+-----------------------------------------------------------------------------+
|   0  MIG 2g.10gb       14     3/3        9.62       No     28     1     0   |
|                                                             2     0     0   |
+-----------------------------------------------------------------------------+
|   0  MIG 3g.20gb        9     2/2        19.50      No     42     2     0   |
|                                                             3     0     0   |
+-----------------------------------------------------------------------------+
|   0  MIG 4g.20gb        5     1/1        19.50      No     56     2     0   |
|                                                             4     0     0   |
+-----------------------------------------------------------------------------+
|   0  MIG 7g.40gb        0     1/1        39.25      No     98     5     0   |
|                                                             7     1     1   |
+-----------------------------------------------------------------------------+

使用下面的命令列出可用的布局。布局的语法是{<index>}:<GPU Slice Count>,并显示实例在GPU上的位置。所示的位置索引表示了profile文件如何映射到GPU上。

$ 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 15 Placements: {0,2,4,6}:2
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类型的示例,对应的profile ID是9,或者7个1g.5gb示例,对应的profile ID是19。


三、创建GI和CI

在开始使用MIG之前,用户需要使用-cgi选项创建GPU实例。有三个选项可以用来指定要创建实例的profile文件:

  • Profile ID(例如,9、14、5);
  • profile文件的缩写(例如,3g.20gb);
  • 示例的完整profile文件名称(例如,MIG 3g.20gb);

一旦创建了GPU实例,就需要创建相应的计算实例(CI)。通过使用-C参数,nvidia-smi可以创建这些实例。

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

$ 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     |
+----------------------------------------------------+

现在,验证GIs和相应的CIs是否已经创建:

$ 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                                                 |
+-----------------------------------------------------------------------------+

四、销毁GI和CI

一旦GPU处于MIG模式,就可以动态配置GIs和CIs。下面的例子展示了如何销毁前面例子中创建的CIs和GIs。

4.1 销毁全部CIs和GIs

$ sudo nvidia-smi mig -dci && sudo nvidia-smi mig -dgi
Successfully destroyed compute instance ID  0 from GPU  0 GPU instance ID  1
Successfully destroyed compute instance ID  1 from GPU  0 GPU instance ID  1
Successfully destroyed compute instance ID  2 from GPU  0 GPU instance ID  1
Successfully destroyed GPU instance ID  1 from GPU  0
Successfully destroyed GPU instance ID  2 from GPU  0

4.2 销毁某个GI下的CIs

$ sudo nvidia-smi mig -dci -gi 1 -ci 0,1,2 
Successfully destroyed compute instance ID  0 from GPU  0 GPU instance ID  1
Successfully destroyed compute instance ID  1 from GPU  0 GPU instance ID  1
Successfully destroyed compute instance ID  2 from GPU  0 GPU instance ID  1

可以验证CI设备现在已经在GPU上销毁了:

$ nvidia-smi
+-----------------------------------------------------------------------------+
| MIG devices:                                                                |
+------------------+----------------------+-----------+-----------------------+
| GPU  GI  CI  MIG |         Memory-Usage |        Vol|         Shared        |
|      ID  ID  Dev |                      | SM     Unc| CE  ENC  DEC  OFA  JPG|
|                  |                      |        ECC|                       |
|==================+======================+===========+=======================|
|  No MIG devices found                                                       |
+-----------------------------------------------------------------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

4.3 销毁GIs

$ sudo nvidia-smi mig -dgi
Successfully destroyed GPU instance ID  1 from GPU  0
Successfully destroyed GPU instance ID  2 from GPU  0


感谢大家的阅读,这里是从善若水的博客!


【Nvidia】nvidia 高级特性MIG详细介绍(三)-LMLPHP

04-09 01:07