最近在做一个简单的CIFAR-10分类任务,用的ResNet18,batch size设了64,结果训练到第10个epoch左右就报“CUDA out of memory”。我一开始以为是batch太大,调到32还是爆,甚至试了16也撑不到20个epoch。我检查了代码,没有明显的循环累积梯度或者没释放的变量。
想请教一下大家,这种“训练中途显存突然暴涨”的情况一般是什么原因?是不是DataLoader里pin_memory或者num_workers设置的问题?或者是我模型里某些层(比如BN层)有缓存没清理?有没有什么工具(比如nvidia-smi或者torch.cuda的API)能实时监控显存占用,定位到具体哪一行代码在吃显存?求大佬们给点排查思路,孩子快被显存搞自闭了……
楼主
2小时前
用PyTorch做图像分类,模型跑着跑着显存就爆了,怎么排查?
请 登录 后发表回复
全部回复
共 0 条暂无回复,快来抢沙发吧