Большое изображение для задачи семантической сегментации — Pytorch не хватает памяти

#machine-learning #deep-learning #pytorch

#машинное обучение #глубокое обучение #pytorch

Вопрос:

У меня есть большие изображения (256 256) ImageNet, и я хочу подготовиться к задаче семантической сегментации. Таким образом, результат будет (B,Classes,C,H,W) . У меня 256 классов. Для CrossEntropyLoss или NLL, как определено pytorch, мне нужно использовать длинные документы dtype.

Однако тензор (256,3,256,256) типа long составляет чуть более 0,4 ГБ памяти, что делает невозможным обучение на GPU для пакетов размером более 4 (учитывая, что модель занимает значительную память, а также алгоритм обратной обработки).

Я использую Google Cloud T4 с 16 ГБ памяти. Есть ли какие-либо трюки, которые я могу сделать для решения этой проблемы, чтобы обучаться для больших размеров пакетов?Для размеров пакета, которые я могу обучить, потребуется несколько месяцев, чтобы закончить обучение.

Комментарии:

1. Попробуйте AMP ?

2. Эта проблема обычно возникает при глубоком обучении и привела к разработке GroupNorm ( arxiv.org/abs/1803.08494 ), что обеспечивает очень хорошие результаты, несмотря на небольшие партии. Это не решит вашу проблему как таковую, но размер 4 больше не должен быть такой проблемой

3. @trialNerror хорошая статья. Спасибо, что поделились. Однако обучение все равно займет месяцы: (

4. @hkchengrex это не решает проблему, возможно, я смогу увеличить размер пакета до 6 или 8, но улучшение будет незначительным. Пожалуйста, поправьте меня, если я ошибаюсь.