Как я могу устранить эту неуловимую ошибку в настройке Pytorch с несколькими GPU? - PullRequest
2 голосов
/ 23 апреля 2019

Я провел прошлый день, пытаясь понять, как использовать несколько графических процессоров.Теоретически, распараллеливание моделей между несколькими графическими процессорами должно быть таким же простым, как простое объединение моделей с nn.DataParallel.Тем не менее, я обнаружил, что это не работает для меня.Чтобы использовать самую простую и каноническую вещь, которую я смог найти для доказательства этого, я запустил код в учебнике Параллелизм данных , строка за строкой.

Я попробовал все, только имеяконкретная перестановка моих графических процессоров будет видна CUDA для переустановки всего, что связано с CUDA, но не может понять, почему я не могу работать с несколькими графическими процессорами.Некоторая информация о моей машине: Операционная система: Ubuntu 16.04 GPUS: 4 1080tis Версия Pytorch: 1.01 Версия CUDA: 10.0

Код ошибки:

---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-3-0f0d83e9ef13> in <module>
      1 for data in rand_loader:
      2     input = data.to(device)
----> 3     output = model(input)
      4     print("Outside: input size", input.size(),
      5           "output_size", output.size())

/usr/local/lib/python3.6/site-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs)
    487             result = self._slow_forward(*input, **kwargs)
    488         else:
--> 489             result = self.forward(*input, **kwargs)
    490         for hook in self._forward_hooks.values():
    491             hook_result = hook(self, input, result)

/usr/local/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py in forward(self, *inputs, **kwargs)
    141             return self.module(*inputs[0], **kwargs[0])
    142         replicas = self.replicate(self.module, self.device_ids[:len(inputs)])
--> 143         outputs = self.parallel_apply(replicas, inputs, kwargs)
    144         return self.gather(outputs, self.output_device)
    145 

/usr/local/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py in parallel_apply(self, replicas, inputs, kwargs)
    151 
    152     def parallel_apply(self, replicas, inputs, kwargs):
--> 153         return parallel_apply(replicas, inputs, kwargs, self.device_ids[:len(replicas)])
    154 
    155     def gather(self, outputs, output_device):

/usr/local/lib/python3.6/site-packages/torch/nn/parallel/parallel_apply.py in parallel_apply(modules, inputs, kwargs_tup, devices)
     73             thread.start()
     74         for thread in threads:
---> 75             thread.join()
     76     else:
     77         _worker(0, modules[0], inputs[0], kwargs_tup[0], devices[0])

/usr/local/lib/python3.6/threading.py in join(self, timeout)
   1054 
   1055         if timeout is None:
-> 1056             self._wait_for_tstate_lock()
   1057         else:
   1058             # the behavior of a negative timeout isn't documented, but

/usr/local/lib/python3.6/threading.py in _wait_for_tstate_lock(self, block, timeout)
   1070         if lock is None:  # already determined that the C code is done
   1071             assert self._is_stopped
-> 1072         elif lock.acquire(block, timeout):
   1073             lock.release()
   1074             self._stop()

KeyboardInterrupt: 

Любое понимание этой ошибкибудет очень ценится.Исходя из моих относительно ограниченных систем и знаний CUDA, это связано с какой-то блокировкой, но я не могу понять, как это исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...