#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. Спасибо за быстрый ответ, я сделаю это без использования моего графического процессора и посмотрю, что произойдет.