Среда:
- 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:
Как решить эту проблему? Как мне удается использовать два графических процессора, используя параллельную передачу данных? Спасибо, ребята!