问题
服务器类型:slurm管理下的超算服务器
系统:linux
python版本:3.8
虚拟环境:virtualenv
pytorch版本:1.10
问题描述:在服务器上用上卡跑模型时,使用
model = Model()
model = torch.nn.DataParallel(model).cuda()
后,模型和数据仍然只占用第一个gpu,然后内存爆掉。
解决过程
查阅https://github.com/openai/CLIP/issues/111后得知,对于clip类模型,即在模型训练过程中会调用子模块的情况,比如下面代码。调用子模块的部分不会在多gpu上运行。
model = Model()
model = torch.nn.DataParallel(model).cuda()
img = batch['img']
prompt = batch['prompt']
img_feat = model.module.image_encoder