pytorch 多卡训练,模型保存的一些问题

单显卡

先看看单显卡是如何实现训练的:
第一步:检查环境内是否有cuda环境,如果有则将device 设置为cuda,如果没有则设置为cpu

 device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

第二步:定义模型,并将模型放入device。

model = mobilenet_v3_large(pretrained=True)
model.to(DEVICE)

第三步:将数据放入device中

 for batch_idx, (data, target) in enumerate(train_loader):
        data, target = data.to(device, non_blocking=True), target.to(device, non_blocking=True)

第 4 步:保存模型

torch.save(model, 'model_.pth')

接下来,让我们看看多显卡训练过程与单显卡训练过程有何不同。

多张显卡

第一步:检查环境内是否有cuda环境,如果有则将device 设置为cuda:0,如果没有则设置为cpu。

 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

第二步:定义模型,并将模型放入device。如果环境中有多张显卡,则使用torch.nn.DataParallel方法加载模型,实现多卡训练。

model = mobilenet_v3_large(pretrained=True)
model.to(DEVICE)
if torch.cuda.device_count() > 1:
    print("Let's use", torch.cuda.device_count(), "GPUs!")
    model = torch.nn.DataParallel(model)

第三步:将数据放入device中。数据默认加载到第一张显卡上。

 for batch_idx, (data, target) in enumerate(train_loader):
        data, target = data.to(device, non_blocking=True), target.to(device, non_blocking=True)

第四步:保存模型,判断是否是多张显卡训练出来的模型。如果是多张显卡训练的模型则要保存model.module。

 if isinstance(model, torch.nn.DataParallel):
                torch.save(model.module, 'model_.pth')
            else:
                torch.save(model, 'model_.pth')

pytorch 多卡训练,模型保存的一些问题

版权声明:本文为博主AI浩原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/123392741

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年3月11日
下一篇 2022年3月12日

相关推荐