0

我正在尝试使用以下配置文件在 16GB GPU 上训练 AllenNLP 共指模型: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_antecedents”更改为较低的值。将 spans_per_words 设置为 0.1 而不是 0.4,我可以运行更长的时间,但不会接近完整的 epoch。16GB 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 行,在运行main (prog="allennlp") 文件“/home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/站点包/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,文件“/home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-packages/allennlp/commands/train.py”,第 178 行,在 train_model_from_file file_friendly_logging=file_friendly_logging,文件“/home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-packages/allennlp/commands/train.py”,第 242 行,在 train_model file_friendly_logging=file_friendly_logging,文件“/home/ubuntu/anaconda3/envs /allennlp/lib/python3.7/site-packages/allennlp/commands/train.py”,第 466 行,在 _train_worker 指标 = train_loop.run() 文件“/home/ubuntu/anaconda3/envs/allennlp/lib/python3 .7/site-packages/allennlp/commands/train.py”,第 528 行,在运行中返回 self.trainer.train() 文件“/home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/site-packages /allennlp/training/trainer.py”,第 740 行,在训练指标中,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(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。向后(自我,渐变,retain_graph,create_graph,输入=输入)文件“/home/ubuntu/anaconda3/envs/allennlp/lib/python3.7/站点包/火炬/autograd/init .py",第 147 行,后向 allow_unreachable=True,accumulate_grad=True) # allow_unreachable flag RuntimeError: CUDA out of memory. 试图分配 1.33 GiB(GPU 0;14.76 GiB 总容量;11.69 GiB 已分配;639.75 MiB 可用; PyTorch 总共保留了 13.09 GiB)

4

1 回答 1

0

该型号的低端内存为 16GB。

当该模型接收到大量文本时,它会将文本拆分为多个较短的序列,每个序列包含 512 个单词片段,并同时运行它们。这样,即使批量大小为 1,您也会同时在内存中获得大量序列。

尝试设置max_sentence为较低的值(默认为 110),看看是否可行。

于 2021-04-22T21:46:18.247 回答