当前位置:网站首页>pytorch 载入历史模型时更换gpu卡号,map_location设置
pytorch 载入历史模型时更换gpu卡号,map_location设置
2022-07-03 13:00:00 【子燕若水】
pytorch 在保存训练后模型的时候,会把训练过程中使用的设备号(例如gpu卡号cuda:0 ,cpu)也一并保存下来。当pytorch重新载入历史模型时,模型默认根据训练时的设备卡号,把权值载入到相应的卡号上。
然而,有的时候测试过程和训练过程的设备情况是不一致的。
举个例子,A主机有四块GPU卡,然后我们用cuda:3 训练模型,并保存模型。
在测试时候,我们需要在客户的B主机跑模型,但是B主机只有一块gpu卡:cuda:0 。
如果按照默认方式载入模型的话,pytorch会报找不到gpu设备,或其他一些错误。
此时,载入的时候需要做一个变换,为torch.load指定gpu设备的映射方式:
根据pytorch的文档,在加载模型的时候,可以指定将模型的tensor加载到特定目标GPU上。
加载方法有:
>>> torch.load('tensors.pt')
# 1. Load all tensors onto the GPU 0
>>> torch.load('tensors.pt', map_location=torch.device('cuda:0'))
# 2. Load all tensors onto GPU 1
>>> torch.load('tensors.pt', map_location=lambda storage, loc: storage.cuda(1))
# 3. Map tensors from GPU 1 to GPU 0
>>> torch.load('tensors.pt', map_location={'cuda:1':'cuda:0'})
实测发现:
方法1 根本就没有加载到目标卡,模型原来在什么卡训练的,还是加载到原来的旧卡号上,因此指定失败。
方法3,代码之间就报错,location.startswith(‘cuda’): AttributeError: ‘NoneType’ object has no attribute ‘startswitch’,分析代码发现这是torch自己的bug! 坑爹的。
方法2: 可以正常的把tensor都加载到cuda1上。
————————————————
版权声明:本文为CSDN博主「Icoding_F2014」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jmh1996/article/details/111041108
边栏推荐
- Kotlin - improved decorator mode
- Ubuntu 14.04 下开启PHP错误提示
- 网上开户哪家证券公司佣金最低,我要开户,网上客户经理开户安全吗
- Solve system has not been booted with SYSTEMd as init system (PID 1) Can‘t operate.
- 研发团队资源成本优化实践
- Comprehensive evaluation of double chain notes remnote: fast input, PDF reading, interval repetition / memory
- [Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [Chapter 6 exercises]
- Flink SQL knows why (XV): changed the source code and realized a batch lookup join (with source code attached)
- DQL basic query
- 使用tensorflow进行完整的DNN深度神经网络CNN训练完成图片识别案例
猜你喜欢

35道MySQL面试必问题图解,这样也太好理解了吧

Today's sleep quality record 77 points

Comprehensive evaluation of double chain notes remnote: fast input, PDF reading, interval repetition / memory

2022-02-11 heap sorting and recursion

Servlet

106. 如何提高 SAP UI5 应用路由 url 的可读性

mysql更新时条件为一查询

Tutoriel PowerPoint, comment enregistrer une présentation sous forme de vidéo dans Powerpoint?
[email protected]奇安信:透视俄乌网络战 —— 网络空间基础设施面临的安全对抗与制裁博弈..."/>开始报名丨CCF C³[email protected]奇安信:透视俄乌网络战 —— 网络空间基础设施面临的安全对抗与制裁博弈...

Flink SQL knows why (XI): weight removal is not only count distinct, but also powerful duplication
随机推荐
MySQL functions and related cases and exercises
Comprehensive evaluation of double chain notes remnote: fast input, PDF reading, interval repetition / memory
Red Hat Satellite 6:更好地管理服务器和云
正则表达式
stm32和电机开发(从mcu到架构设计)
道路建设问题
PowerPoint tutorial, how to save a presentation as a video in PowerPoint?
Flink SQL knows why (XIV): the way to optimize the performance of dimension table join (Part 1) with source code
Several common optimization methods matlab principle and depth analysis
Flink SQL knows why (17): Zeppelin, a sharp tool for developing Flink SQL
8 Queen question
Error handling when adding files to SVN:.... \conf\svnserve conf:12: Option expected
The reasons why there are so many programming languages in programming internal skills
Resource Cost Optimization Practice of R & D team
JS 将伪数组转换成数组
Flink SQL knows why (XI): weight removal is not only count distinct, but also powerful duplication
R language uses the data function to obtain the sample datasets available in the current R environment: obtain all the sample datasets in the datasets package, obtain the datasets of all packages, and
Slf4j log facade
Introduction to the implementation principle of rxjs observable filter operator
CVPR 2022 image restoration paper