Kaggle手动连接GPU后运行Paddle版ERNIE-doc出现显存不足报错
问题原因
你遇到的是典型的GPU显存不足(OOM)报错,根因如下:
- PaddlePaddle静态图模式默认会预占当前GPU几乎全部显存,你使用的16G Tesla P100卡被预占后仅剩余不到90M可用空间,训练时矩阵乘法算子需要申请432M显存无法满足,触发报错。
- nvidia-smi没有显示其他占用GPU的进程,说明所有显存都是当前Paddle训练进程占用,不存在其他进程抢占显存的情况,无需终止额外进程。
解决建议
按优先级从高到低可以尝试以下方案:
- 关闭Paddle显存预占机制:在导入Paddle包前添加环境变量配置
os.environ['FLAGS_fraction_of_gpu_memory_to_use'] = '0.8',限制Paddle最多预占80%的GPU显存,保留弹性空间应对训练过程中的临时显存申请。 - 下调训练batch size:直接降低每次输入的样本数量,比如将现有batch size减半,是最直接有效解决OOM的方案。
- 开启梯度累加:如果batch size过小影响训练效果,可以配置每N步反向传播后再统一更新参数,等效于batch size扩大N倍,不会额外增加显存占用。
- 启用混合精度训练:将模型参数和计算从FP32改为FP16精度,可降低近50%的显存占用,同时基本不影响模型训练效果。
- 缩短输入序列长度:如果业务场景允许,下调输入文本的最大截断长度,比如从默认512改为256,也可以大幅降低显存消耗。
内容的提问来源于stack exchange,提问作者bruceyuan
相关产品推荐
相关产品推荐

