ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【多GPU训练】选择服务器中部分指定GPU进行使用

2022-01-26 12:36:12  阅读:173  来源: 互联网

标签:标号 get 指定 服务器 显卡 print GPU


使用背景:

多GPU情况下选择指定部分GPU使用
很多服务器在进行配备时会装配多块GPU,那么我们在使用服务器时,有时可能会多个终端对服务器进行操控,因此有时需要对特定的GPU进行指定操作,才不会使用户之间使用GPU时相互影响;或者需要指定特定数量的GPU才能达到训练效果。

操作步骤:

1、首先在终端输入nvidia-smi查看我们的主机有几块GPU,并查看工作状态
在这里插入图片描述
如上图所示,我们的主机中一共有4块GPU,其中第4块GPU(3号GPU)已经有人在满载运行当中,如果这时我们如果四块默认同时运行的话可能会提示out of memory报错,或者提示显卡不平衡imblance的warning警告。

注意!注意!注意!
有时候通过nvidia-smi查看的显卡标号可能会和实际显卡标号不一样!

因此我们可以print一下显卡的真实标号:

        a = torch.cuda.get_device_name(0)  # 返回GPU名字
        print("a is ",a)
        b = torch.cuda.get_device_name(1)
        print("b is ", b)
        c = torch.cuda.get_device_name(2)
        print("c is ", c)
        d = torch.cuda.get_device_name(3)
        print("d is ", d)

在这里插入图片描述
如上图所示,我们真实的GPU标号其实和通过nvidia-smi查看的显卡标号不一样,因此我们需要对真实的GPU标号进行操作。

所以这时我们需要选择部分GPU进行使用,譬如在这里我们选择nvidia-smi查看的0号GPU和1号GPU进行使用,那我们需要在我们的网络开始训练前加入如下一行代码:
(注:放在网络net开始训练的代码之前即可)

os.environ["CUDA_VISIBLE_DEVICES"] = ','.join(map(str, [2,3]))

该行代码的意思是只选择指定标号GPU进行使用,执行完该行代码之后python环境无法检测到指定GPU之外的其他GPU。

最后我们只需要执行训练文件就可以对其中指定的两块GPU进行使用了!

############如果各位同学觉得有帮助还请点个赞支持下哈################

标签:标号,get,指定,服务器,显卡,print,GPU
来源: https://blog.csdn.net/qq_45193872/article/details/122643769

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有