Графическому процессору не хватает памяти, просто импортировав предварительно подготовленную модель БЕРТА

#deep-learning #pytorch #bert-language-model

Вопрос:

Поэтому я пытался выяснить, почему моя модель не запускается и какая ее часть занимает всю память графического процессора, так как я всегда получал одну и ту же ошибку: RuntimeError: CUDA out of memory. Tried to allocate 120.00 MiB (GPU 0; 6.00 GiB total capacity; 4.85 GiB already allocated; 0 bytes free; 4.89 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

Я гуглил это, и все говорили, что, возможно, тензоры, которые я сохраняю, слишком велики, но это было не так, они вообще не занимали памяти при их сохранении.

Поэтому я начал использовать torch.cuda.max_memory_allocated() , чтобы выяснить, какая часть занимает всю память, и обнаружил, что, когда я использую свою model = BertForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=len(codes)) model.cuda() память, она уже почти полностью заполнена, и модель не может работать.

Я довольно новичок в этой области, поэтому использую предварительно подготовленную модель, но пока безуспешно. Я надеюсь, что у кого-нибудь уже была такая же ошибка и он знает, как ее исправить. Заранее спасибо

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

1. БЕРТ-большая модель. После model.cuda() параметры сохраняются в VRAM, и вам, похоже, почти не хватает памяти для их хранения. Затем, когда вы запускаете его, вы также сохраняете данные и вычисления в VRAM, и поэтому вы входите в OOM. Таким образом, решение состоит в том, чтобы работать на процессоре или попробовать меньший transfo (уменьшить максимальный размер секций, размер скрытого пространства или количество блоков).

2. Спасибо за быстрый ответ, я сделаю это без использования моего графического процессора и посмотрю, что произойдет.