1.关于模型的打印或保存问题
首先对于多GPU的使用分两种方案一种是简单的DP方案一种是复杂的DDP方案,在此处我们使用的是DP方案:
if t.cuda.device_count() > 1:
model = nn.DataParallel(model,device_ids=[0, 1])
if opt.use_gpu: model.cuda()
由于两张卡所以我直接定义的 device_ids=[0, 1],若不定义此项dataparallel会自动分配所有GPU
回到正题,在单卡进行训练的时候打印模型变量或者模型名是利用:
model.model_name
但如果改为多卡训练后会报错(打印其他信息同样报类似的错)
AttributeError: 'DataParallel' object has no attribute 'model_name'
加上moudle即可正常使用
model.module.model_name
在此处使用torch.save的时候也是一样的道理
# 使用单卡训练保存模型参数方法
t.save(model.state_dict(), PATH)
# 使用多卡训练保存模型参数方法
t.save(model.module.state_dict(), PATH)