MindSpore是华为推出的深度学习建模平台,类似于TensorFlow、PyTorch等。如果在一台服务器上装有多块GPU卡,有多人共享使用,大家都使用语句os.environ['CUDA_VISIBLE_DEVICES']=’0’选择GPU时,多个GPU的负载将严重不平衡。
下面的Python函数可以实现自动检测系统中GPU个数,以及根据每块GPU的使用率与显存占用率自动选择负载较低的GPU,运行当前任务。
from GPUtil import GPUtil #
def sele_gpu():
ids=GPUtil.getAvailable(order='last')
score1=10
sele=0
for k in range(ids[0]+1):
gpu=GPUtil.getGPUs()[k]
score2=gpu.load+gpu.memoryUsed/gpu.memoryTotal
if score2<score1 :
sele=k
score1=score2
return sele
下面语句将调用上面的函数,自动选择GPU
import os
from mylib import sele_gpu #假设上述函数所在文件名为#sele_gpu.py,函数名为sele_gpu
gpu=sele_gpu.sele_gpu()
os.environ['CUDA_VISIBLE_DEVICES'] = str(gpu)
print(str(gpu))
上述方法简单却很有效,解决了800人同时共享使用4块GPU的问题,检测结果表明,4块GPU卡负载基本相同。
如果对您有用,请微信扫描下面的打赏码,谢谢!