Неверный идентификатор устройства при использовании параллельной передачи данных Pytorch! - PullRequest
0 голосов
/ 19 марта 2020

Среда:

  • Win10
  • Pytorch 1.3.0
  • python3 .7

Проблема :

Я использую dataparallel в Pytorch для использования двух графических процессоров 2080Ti. Код выглядит следующим образом:

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

model = Darknet(opt.model_def)  
model.apply(weights_init_normal) 

model = nn.DataParallel(model, device_ids=[0, 1]).to(device)

Но при запуске этого кода я сталкиваюсь с ошибками ниже:

Traceback (most recent call last):
  File "C:/Users/Administrator/Desktop/PyTorch-YOLOv3-master/train.py", line 74, in <module>
    model = nn.DataParallel(model, device_ids=[0, 1]).to(device)
  File "C:\Users\Administrator\Anaconda3\envs\py37_torch1.3\lib\site-packages\torch\nn\parallel\data_parallel.py", line 133, in __init__
    _check_balance(self.device_ids)
  File "C:\Users\Administrator\Anaconda3\envs\py37_torch1.3\lib\site-packages\torch\nn\parallel\data_parallel.py", line 19, in _check_balance
    dev_props = [torch.cuda.get_device_properties(i) for i in device_ids]
  File "C:\Users\Administrator\Anaconda3\envs\py37_torch1.3\lib\site-packages\torch\nn\parallel\data_parallel.py", line 19, in <listcomp>
    dev_props = [torch.cuda.get_device_properties(i) for i in device_ids]
  File "C:\Users\Administrator\Anaconda3\envs\py37_torch1.3\lib\site-packages\torch\cuda\__init__.py", line 337, in get_device_properties
    raise AssertionError("Invalid device id")
AssertionError: Invalid device id

Когда я отлаживаю в нем, я нахожу функцию device_count() в get_device_properties() возвращает 1, в то время как у меня 2 GPU на моей машине. И torch._C._cuda_getDeviceCount() возвращает 2 в Anaconda Prompt. Что не так?

Quration:

Как решить эту проблему? Как мне удается использовать два графических процессора, используя параллельную передачу данных? Спасибо, ребята!

...