pytorch使用DataParallel并行化保存和加载模型(单卡、多卡各种情况讲解)

话不多说,直接进入正题。

!!!不过要注意一点,本文保存模型采用的都是只保存模型参数的情况,而不是保存整个模型的情况。一定要看清楚再用啊!

1 单卡训练,单卡加载

复制代码
#保存模型
torch.save(model.state_dict(),'model.pt')

#加载模型
model=MyModel()#MyModel()是你定义的创建模型的函数,就是先初始化得到一个模型实例,之后再将模型参数加载到该实例上
model.load_state_dict(torch.load('model.pt'))

2 单卡训练,多卡加载

保存模型的过程同第一种情况一样,但是要注意,多卡加载模型时, 是先加载模型参数,再对模型做并行化处理。

复制代码
#保存模型
torch.save(model.state_dict(),'model.pt')


#加载模型
model=MyModel()
model.load_state_dict(torch.load('model.pt'))

model=nn.DataParallel(model)#将模型进行并行化处理

3 多卡保存,单卡加载

方法一:

考虑到之后可能需要单卡加载你多卡训练的模型,所以建议在保存的时候,要去除模型参数字典里面的module,即使用model.module.state_dict()代替model.state_dict()来进行去除。

因为是单卡加载,所以还是要先加载 模型参数,再对模型做并行化处理。

复制代码
#保存模型
torch.save(model.module.state_dict(),'modle.pt')


#加载模型
model=MyModel()
model.load_state_dict(torch.load('model.pt'))

model=nn.DataParallel(model)

方法二:

仍然使用model.state_dict()保存,但是单卡加载的时候,要把模型做并行化(在单卡上并行),加载的时候要注意:由于我们保存到 方式是以多卡方式保存的,所以无论加载之后的模型是 在答案卡上运行还是在多卡上运行,都要先把模型并行化处理,然后再去加载模型。

复制代码
#保存模型
torch.save(model.state_dict(),'model.pt')


#加载模型
model=MyModel()

model=nn.DataParallel(model)

model.load_state_dict(torch.load('model.pt'))

4 多卡保存,多卡加载

这里保存模型采用"多卡保存,单卡加载"的第二种方法,加载的时候,要先把模型做并行化(在多卡上并行),然后再加载。

复制代码
#保存模型
torch.save(model.state_dict(),'model.pt')

#加载模型
model=MyModel()

model=nn.DataParallel(model)

model.load_state_dict(torch.load('model.pt'))

希望以上内容能够帮助到你,这里是希望你能越来越好的 小白冲鸭 ~~~

相关推荐
Ybaocheng21 小时前
大模型第一章
人工智能·机器学习·语言模型
2501_9160088921 小时前
Python抓包HTTPS详解:Wireshark、Fiddler、Charles等工具使用教程
python·ios·小程序·https·uni-app·wireshark·iphone
Gitpchy21 小时前
Day 58 经典时序模型2
python
梵得儿SHI21 小时前
(第一篇)Spring AI 核心技术攻坚:RAG 全流程落地指南|从理论到实战构建本地知识库问答系统
人工智能·spring·大模型落地·增强生成(rag)技术·大模型存在的知识滞后·大模型存在的知识幻觉·提升回答可信度
张彦峰ZYF21 小时前
AI赋能原则3解读思考:可得性时代-AI 正在重写人类能力结构的未来
人工智能·ai·ai赋能与落地
CoovallyAIHub21 小时前
AI 项目如何避免“烂尾”?怎么选择才能让AI项目长期奔跑?
人工智能·算法·计算机视觉
hudawei99621 小时前
词嵌入中语料库矩阵和句子矩阵是怎样的?
人工智能·ai·自然语言处理·词嵌入·word embedding·词向量·语义理解
Mxsoft61921 小时前
某次数据分析偏差,发现时区设置错,修正时间戳救场!
人工智能
2301_7951672021 小时前
Python 高手编程系列一十五:使用 __new __()方法覆写实例创建过程
开发语言·网络·python
努力也学不会java21 小时前
【docker】Docker Register(镜像仓库)
运维·人工智能·机器学习·docker·容器