最近在跑一个图像分类项目,用ResNet50做backbone,batch size设成32,结果跑不到10个epoch就OOM了。我检查了一下,数据加载用了DataLoader的num_workers=4,也试过pin_memory=True,但显存占用一直飙到24G+(我显卡是RTX 3090)。网上搜了一下,有人说用混合精度训练可以省显存,但我试了torch.cuda.amp还是偶尔报错。另外,我是不是应该把一些中间变量手动释放?还是说ResNet50本身就这么吃显存?有没有前辈指点一下调优方向,或者推荐一些常用的显存优化技巧?先谢过大家了。