Почему pytorch нужно гораздо больше памяти, чем нужно? - PullRequest
1 голос
/ 28 сентября 2019

Я просто играю с pytorch и мне интересно, почему он потребляет столько памяти моего GPU?

Я использую Cuda 10.0 с pythorch 1.2.0 и torchvision 0.4.0.

import torch
gpu = torch.device("cuda")
x = torch.ones(int(4e8), device=gpu)
y = torch.ones(int(1e5), device=gpu)

При выполнении кода выше я получаю сообщение об ошибке: RuntimeError: CUDA не хватает памяти.Попытка выделить 2,00 МБ (GPU 0; общая емкость 2,00 ГБ; 1,49 ГБ уже выделено; 0 байт свободно; 0 байт кэшировано)

Итак, нужно ли pytorch ~ 500 МБ памяти gpu в качестве служебной информации?Или в чем тут проблема?

1 Ответ

0 голосов
/ 29 сентября 2019

Дополнительную информацию и тестирование, выполненное xymeng в github, можно увидеть по данной ссылке

Ссылка на слова xymeng:

PyTorch имеет свои собственные ядра cuda.Из моих измерений среда выполнения cuda выделяет для них ~ 1 ГБ памяти.Если вы компилируете pytorch с включенным cudnn, общее использование памяти составляет 1 ГБ + 750 МБ + другие = 2 ГБ + Обратите внимание, что это всего лишь мои предположения, так как нет официальной документации по этому поводу.Что меня озадачивает, так это то, что среда выполнения cuda выделяет гораздо больше памяти, чем фактический размер кода (они приблизительно линейно связаны. Если я удаляю половину ядер pytorch, использование памяти также уменьшается вдвое).Я подозреваю, что двоичные файлы ядра были сжаты, или они должны быть постобработаны во время выполнения.

Кажется, что это подходит для вашей ситуации.

...