Один GPU использует больше памяти, чем другие во время тренировки - PullRequest
0 голосов
/ 08 июня 2019

Я использую multigpu для обучения модели с pytorch.Один GPU использует больше памяти, чем другие, вызывая «нехватку памяти».Зачем одному графическому процессору использовать больше памяти?Можно ли сделать использование более сбалансированным?Есть ли другие способы уменьшить использование памяти?(Удаление переменных, которые больше не будут использоваться ...?) Размер пакета уже равен 1. Спасибо.

1 Ответ

0 голосов
/ 18 июня 2019

DataParallel разделяет пакет и отправляет каждое разделение в другой графический процессор, каждый графический процессор имеет копию модели, затем прямой проход вычисляется независимо, а затем выходные данные каждого графического процессора собираются обратно в один графический процессор вместо вычисленияпотери независимо в каждом графическом процессоре.

Если вы хотите устранить эту проблему, вы можете включить вычисление потерь в модуль DataParallel.

Если это все еще остается проблемой, то вы можете захотетьпараллелизм модели вместо параллелизма данных: переместите разные части вашей модели на разные графические процессоры, используя .cuda(gpu_id).Это полезно, когда вес вашей модели довольно большой.

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