Пики памяти графического процессора Conv1d во время обратной опоры. на меньших входахPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Пики памяти графического процессора Conv1d во время обратной опоры. на меньших входах

Сообщение Гость »


(Краткий воспроизводимый код ниже.)

Очень странное поведение при использовании torch.Conv1d: при подаче меньшего входного сигнала (ниже некоторого порога) использование памяти графического процессора резко возрастает в обратном направлении — на порядок или больше.

Мы предполагаем, что это связано с тем, что torch/cuda использует разные алгоритмы свертки в зависимости от размеров и доступной памяти; проблема в том, что это приводит к очень нежелательным ошибкам OOM во время выполнения.

импортировать факел из импорта фонарика nn %load_ext pytorch_memlab base_ch = 512 d_pos = 64 защита print_gpu_mem_usage(prefix=""): print(f"{prefix}Пиковая память: {torch.cuda.max_memory_allocated() / 1024 ** 3:.2f} ГБ" f" | {torch.cuda.max_memory_reserved() / 1024 ** 3:.2f} ГБ" f" (Текущий: {torch.cuda.memory_allocated() / 1024 ** 3:.2f} ГБ" f" | {torch.cuda.memory_reserved() / 1024 ** 3:.2f} ГБ)") защита изолированный_конв (в): samp_conv = nn.Conv1d(base_ch + d_pos, 2 * base_ch, kernel_size=1, дополнение='valid').cuda() мн = samp_conv(v).mean() мин.назад() %mlrun -f изолированный_конв изолированный_конв(torch.rand(5000, base_ch+d_pos, 11).cuda())
:active_bytes: :reserved_bytes: :line: :код: все все ----пик---- -----пик----- ---- ---- 108,00 млн 108,00 6 def изолированный_конв(v): 328,00 млн 346,00 млн 7 mn = nn.Conv1d(.....) 542,00 млн 562,00 млн 8 mn.backward()
однако, если переключить n выборок с 5000 на 4000, ситуация взорвется:

%mlrun -f изолированный_конв изолированный_конв(torch.rand(4000, base_ch+d_pos, 11).cuda())
:active_bytes: :reserved_bytes: :line: :код: все все ----пик---- -----пик----- ---- ---- 86,00 млн 86.00 6 def изолированный_конв(v): 260,00 млн 280,00 млн 7 mn = nn.Conv1d(.....) 8.07G 8,25 ГБ 8 mn.backward()
То же самое произойдет, если я проверю их в противоположном порядке.

Это работает в Docker, поэтому, если вы не можете воспроизвести его в следующих версиях, я могу поделиться Dockerfile.

факел == 2.0.1 pytorch-memlab == 0.3.0 Нвидиа 2080Ти Версия драйвера: 525.105.17
Версия CUDA: 12.0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»