Nvidia MX130 GPU运行时错误:微调spaCy BERT NER模型CUDA显存不足如何解决
spaCy微调BERT NER CUDA显存不足解决方法
- 进一步降低batch size:当前配置batch size为2,可尝试下调到1,可直接在训练命令中追加参数覆盖配置:
!python -m spacy train -g 0 config_spacy_bert.cfg --output ./output --paths.train ./train.spacy --paths.dev ./train.spacy --training.batch_size 1
也可直接修改config文件中的batch size对应字段。
- 更换更小的预训练Transformer模型:如果当前使用的是BERT-base类的大模型,可替换为DistilBERT、BERT-tiny这类轻量预训练模型,体积可降低40%~70%,显存占用大幅下降,且NER任务上的精度损失非常有限,只需修改配置文件中Transformer组件的预训练模型路径即可。
- 开启梯度累积:在配置文件中设置
training.accumulate_gradient = N(N为累积步数,比如设为2),相当于每训练N个step再更新一次梯度,可在低batch size的情况下达到近似大batch size的训练效果,不会额外占用显存。 - 启用混合精度训练:在配置文件中将
training.fp16参数设为true,开启FP16半精度训练,可直接降低近50%的显存占用,大部分主流GPU均支持该特性。 - 清理无关GPU占用:训练前关闭其他占用GPU显存的进程(如开启硬件加速的浏览器、其他运行中的模型任务等),释放空闲显存。
- 切换到CPU训练:如果以上调整后仍然显存不足,可将训练命令中的
-g 0改为-g -1,使用CPU进行训练,仅会降低训练速度,不会出现显存不足问题。
内容的提问来源于stack exchange,提问作者Aniiya0978
相关产品推荐
相关产品推荐

