Как платформы глубокого обучения, такие как PyTorch, обрабатывают память при использовании нескольких графических процессоров? - PullRequest
0 голосов
/ 12 сентября 2018

Недавно я столкнулся с ситуацией, когда у меня не хватает памяти на одном Nvidia V100.У меня ограниченный опыт использования нескольких графических процессоров для обучения сетей, поэтому я немного не уверен в том, как работает процесс распараллеливания данных.Допустим, я использую модель и размер пакета, который требует около 20-25 ГБ памяти.Есть ли способ использовать все 32 ГБ памяти, которая у меня есть между двумя 16 ГБ V100?Достигнет ли это функциональность PyTorch DataParallel?Я полагаю, что есть также возможность разбить модель и использовать параллелизм модели.Пожалуйста, извините за отсутствие знаний по этому вопросу.Заранее спасибо за любую помощь или разъяснение!

1 Ответ

0 голосов
/ 12 сентября 2018

Вы должны сохранить параллелизм модели в качестве своего последнего ресурса, и только если ваша модель не помещается в памяти одного графического процессора (с 16 ГБ / графическим процессором у вас достаточно места для гигантской модели).

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

Pytorch позволяет легко добиться параллелизма данных, поскольку вам просто нужно обернуть экземпляр модели в nn.DataParallel:

model = torch.nn.DataParallel(model, device_ids=[0, 1])
output = model(input_var)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...