Detectron2 指定cuda id;set cuda device;

  • Post author:
  • Post category:其他


一般的服务器8张卡,但是好多人都在用,如果不进行额外的设置的话,Detectron2只能使用前n张卡。比如你指定num_gpus=1,那么就只能使用0号卡,指定num_gpus = 3,那就只能使用0,1,2号卡。这样的设置肯定太蠢了,如果正好有人使用了0号卡或者1号卡,虽然后面的卡都空着,但是实验就是跑不起来。Detectron2虽然基于torch,但是要高级的多的多,不能直接指定用那几张卡来跑。那可咋整啊!(我个人真的是喜欢简洁,直截了当,就连anaconda我都不愿意用)

没办法,网上查了查,在github那里发现有人有类似的问题,网址在此:


specify gpu id · Issue #210 · facebookresearch/detectron2 · GitHub

(github也tmd有时候上的去有时候上不去的,不知道到底是个什么原因,就不能痛痛快快的吗?之前也没听过github总是访问不了啊!烦的一批)

在运行代码的时候,在前面指定可见的gpu device是哪几块就可以了,比如:

CUDA_VISIBLE_DEVICES=2,3 python3 xxx.py

命令行内容和原来一摸一样,就是在python前面添加CUDA_VISIBLE_DEVICES,用几块就写几块,如果运行代码需要2块gpu,但是CUDA_VISIBLE_DEVICES只写了1个id,那就报错了。

另外一种方法,在代码里指定程序可以看到的显卡:

import os
os.environ['CUDA_VISIBLE_DEVICES']='0,2,3'

这种方法更为稳妥一些,不会有那么多幺蛾子。



版权声明:本文为qq_36303832原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。