batchsize и объём видеопамяти
От: Bill Baklushi СССР  
Дата: 02.07.20 12:14
Оценка:
Приветствую.

Часто случается, что тренировка модели упирается в объем видеопамяти.
В частности, размер минибатча пропорционально увеличивает потребление видеопамяти.

Делать минибатчи маленькими тоже не хочется — теряется обобщающая способность.

Насколько понимаю, основная работа обучения это матричные (вернее тензорные) операции.
Наверняка есть трюки, чтобы матрицу не грузить в память целиком.
Например, матрица разбивается на подматрицы (матрица матриц), и операции ведутся с этими подматрицами, а потом это как-то объединяется.
Эх, забыл линейную алгебру

Еще такой момент. В tensorflow и др. пакетах есть multigpu-конфигурации.
Насколько я понимаю, из одной видюхи в другую много информации не гоняется, т.к. это накладно. Т.е. софт всё таки умеет распределять данные на более мелкие порции...

Есть ли какие-то способы чтобы и рыбку съесть и минибатчт сохранить достойного размера и обойтись разумным количеством видеопамяти?
Модератор-националист Kerk преследует оппонентов по политическим мотивам.
Re: batchsize и объём видеопамяти
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 02.07.20 12:37
Оценка:
Здравствуйте, Bill Baklushi, Вы писали:

BB>Часто случается, что тренировка модели упирается в объем видеопамяти.

BB>В частности, размер минибатча пропорционально увеличивает потребление видеопамяти.

BB>Делать минибатчи маленькими тоже не хочется — теряется обобщающая способность.


На основной вопрос ответ не знаю, но, кажется, что и с маленьким батчем можно жить. Кто-то говорит, что можно оставить небольшой batch size, кратный степени 2, но:

Batch size played the least role. It was positively correlated with speed for small values, but quickly saturated (and even seemed to hurt at high values, after 64 on the V100 and P100 and 16 on the K80 and P4). We modeled its contribution as a logarithmic function to keep things simple as it was also the variable for which the factorized independence assumption was the weakest. We ran all our experiments at size 64 on a single GPU. This is another perk of big models: as bigger batch sizes don't seem to help much, if your model is too big to fit on a GPU, you could just use a smaller batch size and gradient accumulation.

Ещё в какой-то статье видел мнение, что маленький batch size предотвращает переобучение и наоборот — увеличивает обобщающую способность, т.к. является чем-то вроде регуляризации. Короче, надо экспериментировать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.