PyTorch RuntimeError: работник DataLoader (pid 15332) неожиданно завершил работу - PullRequest
0 голосов
/ 06 февраля 2020

Я новичок в PyTorch, и я просто пробую некоторые примеры на этой веб-странице . Но я не могу запустить программу 'super_resolution' из-за этой ошибки:

RuntimeError: DataLoader worker (pid(s) 15332) exited unexpectedly

Я искал Inte rnet и обнаружил, что некоторые люди предлагают установить num_workers до 0. Но если я это сделаю, программа сообщит мне, что мне не хватает памяти (либо с процессором, либо с графическим процессором):

RuntimeError: [enforce fail at ..\c10\core\CPUAllocator.cpp:72] data. DefaultCPUAllocator: not enough memory: you tried to allocate 9663676416 bytes. Buy new RAM!

или

RuntimeError: CUDA out of memory. Tried to allocate 1024.00 MiB (GPU 0; 4.00 GiB total capacity; 2.03 GiB already allocated; 0 bytes free; 2.03 GiB reserved in total by PyTorch)

Как это исправить?


Я использую python 3.8 на Win10 (64-битной) и pytorch 1.4.0.


Более полно сообщения об ошибках (--cuda означает использование графического процессора, --threads x означает передачу x параметру num_worker):

  1. с аргументами командной строки --upscale_factor 1 --cuda
  File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 761, in _try_get_data
    data = self._data_queue.get(timeout=timeout)
  File "E:\Python38\lib\multiprocessing\queues.py", line 108, in get
    raise Empty
_queue.Empty

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "Z:\super_resolution\main.py", line 81, in <module>
    train(epoch)
  File "Z:\super_resolution\main.py", line 48, in train
    for iteration, batch in enumerate(training_data_loader, 1):
  File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 345, in __next__
    data = self._next_data()
  File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 841, in _next_data
    idx, data = self._get_data()
  File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 808, in _get_data
    success, data = self._try_get_data()
  File "E:\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 774, in _try_get_data
    raise RuntimeError('DataLoader worker (pid(s) {}) exited unexpectedly'.format(pids_str))
RuntimeError: DataLoader worker (pid(s) 16596, 9376, 12756, 9844) exited unexpectedly
с аргументами командной строки --upscale_factor 1 --cuda --threads 0
  File "Z:\super_resolution\main.py", line 81, in <module>
    train(epoch)
  File "Z:\super_resolution\main.py", line 52, in train
    loss = criterion(model(input), target)
  File "E:\Python38\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "Z:\super_resolution\model.py", line 21, in forward
    x = self.relu(self.conv2(x))
  File "E:\Python38\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "E:\Python38\lib\site-packages\torch\nn\modules\conv.py", line 345, in forward
    return self.conv2d_forward(input, self.weight)
  File "E:\Python38\lib\site-packages\torch\nn\modules\conv.py", line 341, in conv2d_forward
    return F.conv2d(input, weight, self.bias, self.stride,
RuntimeError: CUDA out of memory. Tried to allocate 1024.00 MiB (GPU 0; 4.00 GiB total capacity; 2.03 GiB already allocated; 954.35 MiB free; 2.03 GiB reserved in total by PyTorch)

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Не существует «полного» решения для ошибок нехватки памяти для GPU, но есть довольно много вещей, которые вы можете сделать, чтобы уменьшить потребность в памяти. Кроме того, убедитесь, что вы не передаете набор и набор тестов в графический процессор одновременно!

  1. Уменьшите размер пакета до 1
  2. Уменьшите размерность полностью подключенных слоев (они занимают больше всего памяти)
  3. (Данные изображения) Применить обрезку по центру
  4. (Данные изображения) Преобразовать данные RGB в оттенки серого
  5. (Текстовые данные) Сократить ввод в n символов (что, вероятно, не очень поможет)

В качестве альтернативы вы можете попробовать запустить Google Colab Laboratory (12-часовое ограничение использования на графическом процессоре K80) и Next Journal, оба из которых предоставляют до 12 ГБ для использования, бесплатно. В худшем случае вам может потребоваться провести обучение на вашем процессоре. Надеюсь, это поможет!

0 голосов
/ 11 февраля 2020

Перезагрузите систему, чтобы графический процессор восстановил память. Сохраните всю работу и перезапустите вашу Систему.

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