Попытка обучить модель разрешения кореференции AllenNLP на онтонах: выводит CUDA из памяти

Я пытаюсь обучить модель Coreference AllenNLP на графическом процессоре 16 ГБ, используя этот файл конфигурации: https://github.com/allenai/allennlp-models/blob/main/training_config/coref/coref_spanbert_large.jsonnet

Я создал файлы для обучения, тестирования и разработки с помощью этого скрипта: https://github.com/allenai/allennlp/blob/master/scripts/compile_coref_data.sh

У меня почти мгновенно не хватает памяти для CUDA, поэтому я попытался изменить значения spans_per_word и max_antecedent на более низкие значения. Если для параметра spans_per_words установлено значение 0,1 вместо 0,4, я мог бы работать немного дольше, но не почти на полную эпоху. Разве 16 ГБ GPU недостаточно? Или есть другие параметры, которые я могу попробовать изменить?

Отслеживание (последний вызов последним): Файл / home / ubuntu / anaconda3 / envs / allennlp / bin / allennlp, строка 8, в sys.exit (run ()) Файл / home / ubuntu / anaconda3 / envs / allennlp / lib / python3.7 / site-packages / allennlp / main .py, строка 34, выполняется основной (prog = allennlp) файл /home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/ site-packages / allennlp / commands / init .py, строка 119, в основном файле args.func (args) /home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site- packages / allennlp / commands / train.py, строка 119, в train_model_from_args file_friendly_logging = args.file_friendly_logging, File /home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-packages/allennlp/commands/train , строка 178, в train_model_from_file file_friendly_logging = file_friendly_logging, File /home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-packages/allennlp/commands/train.py, строка 242, file_logging_model file_logging /home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-pa ckages / allennlp / commands / train.py, строка 466, в файле _train_worker metrics = train_loop.run () /home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-packages/allennlp/commands/train. py, строка 528, в процессе выполнения return self.trainer.train () Файл /home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-packages/allennlp/training/trainer.py, строка 740, в поезде metrics, epoch = self._try_train () Файл /home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-packages/allennlp/training/trainer.py, строка 772, в _try_train train_metrics = self._train_epoch ( эпоха) Файл /home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-packages/allennlp/training/trainer.py, строка 523, в _train_epoch loss.backward () Файл / home / ubuntu / anaconda3 / envs / allennlp / lib / python3.7 / site-packages / torch / tensor.py, строка 245, в обратном направлении torch.autograd.backward (self, gradient, keep_graph, create_graph, inputs = inputs) Файл / home / ubuntu / anaconda3 /envs/allennlp/lib/python3.7/site-packages/torch/autograd/<▪init .py, line 147, в обратном направлении allow_unreachable = True, accumulate_grad = True) # allow_unreachable flag RuntimeError: CUDA не хватает памяти. Пытался выделить 1,33 ГиБ (GPU 0; 14,76 ГиБ общая емкость; 11,69 ГиБ уже выделено; 639,75 МиБ свободно; 13,09 ГиБ зарезервировано всего PyTorch)


person user14169622    schedule 16.04.2021    source источник
comment
Попробуйте запустить на Колабе!   -  person Elidor00    schedule 16.04.2021


Ответы (1)


16 ГБ - это нижний предел для этой модели.

Когда эта модель получает много текста, она разбивает текст на несколько более коротких последовательностей по 512 слов в каждой и запускает их все одновременно. Таким образом, вы получите в памяти множество последовательностей одновременно, даже если размер пакета равен 1.

Попробуйте установить для max_sentence более низкое значение (по умолчанию 110) и посмотрите, работает ли это.

person Dirk Groeneveld    schedule 22.04.2021