英伟达GPU配置MIG实例和原理介绍

weimoo 4月前 100

MIG通过虚拟地将单个物理GPU划分为更小的独立实例,这项技术涉及GPU虚拟化,GPU的资源,包括CUDA内核和内存,被分配到不同的实例。这些实例彼此隔离,确保在一个实例上运行的任务不会干扰其他实例。

使用MIG,每个实例的处理器都有独立和隔离的路径通过整个存储系统,芯片上的crossbar端口,L2 cache,内存控制器和DRAM地址总线都被唯一地分配给一个单独的实例。这确保了单个用户的工作负载可以在相同的L2缓存分配和DRAM带宽下,以可预测的吞吐量和延迟运行,即使其它任务正在抖动它们自己的缓存或饱和它们的DRAM接口。MIG能够对可用的GPU计算资源(包括流式多处理器,即SMs,以及复制引擎或解码器等GPU引擎)进行分区,从而为虚拟机、容器或进程等不同客户端提供定义好的故障隔离服务质量(QoS)。MIG允许多个GPU实例在单个物理NVIDIA Ampere GPU上并行运行。

接着我们来了解下MIG中的一些名称和概念介绍:

流多处理器(SM,Streaming Multiprocessor):流多处理器(SM)在GPU上执行计算指令GPU内存切片:GPU内存切片是GPU内存的最小部分,包括相应的内存控制器和缓存。一个GPU内存切片大约是GPU总内存资源的八分之一,包括容量和带宽;GPU SM切片:GPU SM切片是GPU上SM的最小部分。在MIG模式下配置时,一个GPU SM片大约是GPU可用SM总数的七分之一;GPU实例:GPU实例(GI)是一个或多个GPU切片和其它GPU引擎(DMAs、NVDECs等)的组合。一个GPU实例中的任何东西总是共享所有GPU内存切片和GPU引擎,但它的SM切片可以进一步细分为计算实例(CI,Compute Instance)。GPU实例提供内存QoS。每个GPU切片包含专用的GPU内存资源,限制可用容量和带宽,并提供内存QoS。每个GPU内存切片获得GPU总内存资源的1/8,每个GPU SM切片获得SMs总数的1/7。

计算实例:一个GPU实例可以细分为多个计算实例。计算实例(CI)是父GPU实例的SM切片和其它GPU引擎(DMAs、NVDECs等)的一个子集。CIs共享内存和引擎。

MIG 技术关键特点:

1.资源划分:MIG 允许将一块物理 GPU 分割成多个 GPU 实例,每个实例具有自己的 GPU 核心、GPU 内存、NVLink 带宽等资源。这样可以更好地控制和划分 GPU 资源。

2.多租户支持:MIG 技术可以用于虚拟化 GPU,以便不同用户或应用程序可以共享同一块物理 GPU 而不会相互干扰。

3.动态资源调整:管理员可以根据工作负载的需求动态地重新配置 MIG 实例的资源,从而实现更好的资源利用和性能。

4.容错性:MIG 技术支持 GPU 实例的隔离,这意味着一个 GPU 实例中的问题不会影响到其他实例,从而提高了系统的容错性。

5.部署灵活性:MIG 技术可以用于云计算、虚拟化环境、容器化应用程序等多种情境,为不同的部署需求提供了灵活性。

gpu-mig-overview.jpg

并不是所有的显卡都支持MIG,以下是官方给出的GPU型号:

微信截图_20240524142837.png

上面介绍完了,接着我们来讲下MIG的配置和使用

使用下面命令可以进行MIG功能的开启

nvidia-smi -i <GPU_ID> --mig 1

如果关闭数字1改为0,如果不指定i则是开启或者关闭所有卡的MIG功能

注意我们开启mig的卡需要单独进行重启,如果是使用nvlink的GPU需要重启所有的GPU

nvidia-smi -i 0 --gpu-reset #重启指定index的GPUnvidia-smi --gpu-reset #重启所有GPU

接着使用lgip命令查询当前GPU的GPU ID和实例ID进行后续的操作

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

使用上述命令可以查看每个开启MIG的设备支持的GI实例类型,可以看到上述打印一共有五种实例类型

我们可以使用如下命令创建GI,多个ID需要使用英文逗号隔开,如果需要指定卡片还是需要添加-i参数和卡的index,例如此处就是-i 1

nvidia-smi mig -cgi [ID]nvidia-smi mig -cgi 5,14,19 -i 1

再使用lgi命令查看创建的GI列表

nvidia-smi mig -lgi

接着我们创建CI,首先使用lcip命令查看,所有可供配置选的CI实例配置

nvidia-smi mig -lcip

针对指定gi实例,配置profile index为0的CI实例

nvidia-smi mig -cci 0 -gi 1 -i 1

也可以一次性创建过个CI实例

nvidia-smi mig -cci 1,1 -gi 1 -i 1

上述命令是在GI ID为1的GI上创建两个CI profile为1的CI实例

接着我们可以执行lci命令进行查看创建情况

nvidia-smi mig -lci

然后还有一种方式可以自动根据GI使用默认CI配置,CI就不需要另外再创建

nvidia-smi mig -cgi 5,14,19 -i 1 -C

最后就是删除MIG相关配置,可以选着直接关闭MIG,然后重启GPU卡,已经配置了的mig配置会出现丢失,仅仅能保留在物理GPU卡上的mig开启和关闭状态

如果需要删除指定的CI/GI,那么可以看看以下操作

nvidia-smi mig -dci -ci 0 -gi 1 -i 1

删除GI 1实例上ID为0的CI实例,删除侯可以使用-lci的命令再次进行CI实例的查询

删除了CI接着我们就可以再删除GI了,注意,一般删除顺序是必须先CI后GI

nvidia-smi mig -dgi -gi 1 -i 1

删除GI ID为1的实例

转载注明出处:https://www.sulao.cn/post/987.html

最新回复 (0)
全部楼主
返回
发新帖