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'))

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

相关推荐
做萤石二次开发的哈哈34 分钟前
连锁门店、园区、交通枢纽的视频如何统一汇集?应用模板的接入与分权管理详解
人工智能·物联网·音视频·二次开发·视频监控·蓝海aiot一站式工作台·萤石云开放平台
高级程序源40 分钟前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
老金带你玩AI1 小时前
全程拿着手机,我让dot准备了一场AI分享
人工智能
WeiXin_DZbishe1 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
nvd111 小时前
Flink 批处理驱动的湖仓 AI 财务研报流水线:从双流广播汇聚到 Agent 智能决策与原生 Iceberg 落盘全景实战
大数据·人工智能·flink
kimnoic1 小时前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
snhna1 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
架构技术专栏1 小时前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
蒸鱼Yuzheng1 小时前
RenderDoc 跨版本回放治理:驱动、API、资源与兼容性矩阵
数据治理·gpu·兼容性测试·vulkan·renderdoc
点云-激光雷达-Slam-三维牙齿1 小时前
100,000 Records CSV File - India Traffic Accident Analysis Dataset.7z
人工智能·数据集