LSF实践专题(35):如何使用MIG GPU资源

本文介绍了NVIDIA的MIG(Multi-InstanceGPU)技术,如何通过将GPU划分为多个实例,以满足不同应用的需求,以及LSF如何支持MIG的GPU调度,包括GI和CI的创建与分配。作者通过示例展示了在实际操作中如何使用LSF进行资源管理。
摘要由CSDN通过智能技术生成

随着人工智能领域的快速发展,对于GPU性能的需求数量不断增加,需求的类型也不断增多。

NVIDIA推出的MIG结构(Multi-Instance GPU)可以将GPU进行划分,再分配给不同的应用或者用户来使用,以达到更细致的资源利用。相比于之前的以时间片进行划分的vGPU,MIG更加灵活高效。

MIG的原理是根据GPU的特性,将每张GPU卡的计算能力平均分成7份,将显存平均分成8份,然后由这些基本单元组成不同大小的GI(GPU Instance)。以NVIDIA A100为例,显存的大小为40G,最小显存单元就是5G(40G/8)。

我们可以根据需要,以这些最小运算单元为基础创建不同大小的MIG device,比如创建7个最小单元的GI,或者以每2个、3个、4个、7个最小单元为大小创建MIG device。这个大小不是随意创建的,NVIDIA 给出了可以允许的组合列表。以NVIDIA A100 GPU为例,下图是NVIDIA官方文档中给出的所有可以创建的组合类型:

图片

如图所示,我们可以在每张A100 GPU上创建一个7个单元的MIG device,也可以同时创建一个4个单元和一个3个单元的MIG device,或者一个4个单元加一个2单元和一个1单元,等等。

如果是一个单元的MIG device,就拥有5G显存。类似的,两个单元是10G,4个单元和3个单元都是20G,7个单元的MIG则拥有全部40G显存。

由于运算单元和显存单元的数量不一致,会导致有些组合无法创建,可以参考下图:

图片

当划分好了MIG device后,还可以进一步将每个GI里的算力根据最小计算单元进行划分,分配给不同的应用,每一个划分称为一个CI(Compute Instance)。例如,一个3个单元的GI,可以划分为3个相同的CI,或者划分为一个2个单元的CI和一个1个单元的CI。

LSF最新版本能很好地支持MIG GPU device的调度。在装有支持MIG的GPU卡的机器上,可以通过lshosts -gpu -mig看到当前GPU的MIG划分情况。

图片

在执行作业的时候,LSF可以根据用户的需求对GPU上的MIG进行重新划分和绑定。

在提交作业的时候,通过bsub -gpu参数中的mig选项,可以指定作业使用的GI和CI大小。例如:

图片

上图中的mig=4/4表示,作业想要得到一个4个单元的GI,并且创建一个4个单元的CI给这个作业,也就是将这个4单元的MIG device完全分配给这个作业使用。当作业执行起来以后,我们通过bjobs -l -gpu可以看到作业分配到的GPU:

图片

图片

我们看到,作业分配到了一个大小为4的GI,和大小为4的CI。这里的GI和CI信息中,斜杠前面的是设备起始编号,后面的是设备大小。比如,0/4表示从第一个单元开始,大小为4单元。而我们提交作业时指定了-n2,表示有2个task,但是MIG device只有一个,所以是由这两个task共用这个device。

同时,我们在lshosts -gpu -mig中也会看到GPU的MIG信息的变化:

图片

我们看到,MIG device从刚才的7个变为了4个,一个为4g.20gb的、大小为4单元的GI,还有3个还是原始大小。

如果我们在提交作业的时候指定mig=3/2, 则表示创建一个大小为3的GI,但是只分配一个大小为2的CI给这个作业,这样,还剩下一个CI可以分配给其它作业。

例如,我们先提交第一个mig=3/2的作业:

图片

图片

当作业运行起来以后,我们看到,由于0-3单元上之前的作业已经创建了一个大小为4的GI,所以这个新的GI从单元4开始创建,大小为3个单元,而CI也是从单元4开始,但是只分配2个CI给这个作业。

再提交一个mig=3/1的作业:

图片

图片

这一次,GI还是复用刚才第二个作业创建的GI,但是第三个作业得到的CI是从单元5开始大小为1的CI。

这个时候,我们通过lshosts -gpu -mig也可以看到我们创建了3个device,除了第一个作业的4g.20gb外,还创建了一个3g.20gb的GI,同时这个GI被划分成了两个CI 。

图片

我们这次提交一个4个task的作业,但是使用mig=2/1。

图片

因为这次GPU的数量也是4(上图中的“num=4”),所以会为每个task分配一个MIG device,这样,LSF就会创建2个大小为2的GI,同时把每个GI各划分成两个CI,每个task只分配一个CI:

图片

我们看到,这一次是使用单元0和1,以及单元4和5来创建2个大小为2的GI,同时创建了4个CI,并且把每个CI分配给了一个task。

以上就是LSF调度MIG GPU的基本使用。实际应用中,还可以同时指定GPU和CPU affinity来同时指定作业的GPU和CPU需求,有兴趣的读者可以参考IBM相关文档,或发邮件与我们交流。

欢迎关注下方微信公众号【HPC常青园】,共同交流HPC集群管理经验和最佳实践。如果您有关于HPC集群的具体需求,欢迎邮件沟通交流:hpc@ivyent.cn。

HPC常青园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ivyent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值