使用指定GPU训练模型:os.environ[‘CUDA_VISIBLE_DEVICES‘]设置无效问题解决——随笔

        之前想使用指定的GPU训练模型,查网上的帖子一般是通过设置环境变量来实现的,然后自己试了一下,在debug的时候发现无论怎么弄显示的device都是‘cuda:0’:

 

         也没有多思考,于是就放弃了设置环境变量来指定GPU的方式,改为用以下方式来指定:

device = torch.device("cuda:5")
data = data.to(device)
model = model.to(device)

        在debug的时候,发现模型和数据都非常舒服的装载到了自己想要得gpu上,但是感觉这种方法多少有点麻烦,当有多个文件调用的时候,还要把device做为参数传来传去的,很不便捷。

        终于在今天实验的时候发现之前对环境变量设置理解有些问题。

 

        在pycharm中设置环境变量有两种方式,第一种方式是通过右上角Edit Configurations...界面设置

 

​        将cuda_visible_devices设置为5后,将模型model = model.cuda()和输入数据input = input.cuda()加载到gpu上,观察到:

 

        而通过nvidia-smi命令观察到GPU使用情况如图:

 

        可见,设置环境变量CUDA_VISIBLE_DEVICES=5后,系统会对设置的GPU进行重新编号,从’0’开始。cuda()命令会将模型/数据加载到相对“可见”的第一个GPU上。

        第二种方式是在代码里设置,也能达到同样的效果:

        我看网上有帖子说环境变量os.environ['CUDA_VISIBLE_DEVICES']='5,6'的设置要放到import torch之前,否则会失效。但我自己试了一下,放到model.cuda()之前都没问题。

 

        当然,如果调换一下顺序,在将模型加载到cuda之后设置环境变量,此时设置会失效,模型参数会放在cuda:0上,后续的input = input.cuda()后,input的device也为cuda:0。

         所以只要是在使用cuda之前设置应该都可!(当然为了减少不必要的麻烦,比如说import的其他文件可能会先使用到cuda,还是尽早设置环境变量为好)

 

参考:

【深度学习高效小trick】使用指定的GPU(组)搞深度学习:CUDA_VISIBLE_DEVICES || os.environ[‘CUDA_VISIBLE_DEVICES‘]=‘1‘_蓝胖胖▸的博客-CSDN博客_cuda_visible_devices

os.environ[‘CUDA_VISIBLE_DEVICES‘] 无法生效原因_天花板上飞着鱼的博客-CSDN博客 

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值