当前位置:网站首页>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
边栏推荐
- JSON serialization case summary
- 2022-02-14 analysis of the startup and request processing process of the incluxdb cluster Coordinator
- 71 articles on Flink practice and principle analysis (necessary for interview)
- Solve system has not been booted with SYSTEMd as init system (PID 1) Can‘t operate.
- mysql更新时条件为一查询
- 35道MySQL面试必问题图解,这样也太好理解了吧
- Oracle memory management
- Reptile
- STM32 and motor development (from MCU to architecture design)
- 人身变声器的原理
猜你喜欢

This math book, which has been written by senior ml researchers for 7 years, is available in free electronic version

106. 如何提高 SAP UI5 应用路由 url 的可读性
![[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [Chapter IV exercises]](/img/8b/bef94d11ac22e3762a570dab3a96fa.jpg)
[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [Chapter IV exercises]

常见的几种最优化方法Matlab原理和深度分析

Internet of things completion -- (stm32f407 connects to cloud platform detection data)

Kivy tutorial how to automatically load kV files

106. How to improve the readability of SAP ui5 application routing URL

2022-02-14 analysis of the startup and request processing process of the incluxdb cluster Coordinator

MySQL installation, uninstallation, initial password setting and general commands of Linux

人身变声器的原理
随机推荐
The principle of human voice transformer
2022-02-11 heap sorting and recursion
KEIL5出现中文字体乱码的解决方法
今日睡眠质量记录77分
Understanding of CPU buffer line
The difference between session and cookie
Fabric. JS three methods of changing pictures (including changing pictures in the group and caching)
User and group command exercises
The R language GT package and gtextras package gracefully and beautifully display tabular data: nflreadr package and gt of gtextras package_ plt_ The winloss function visualizes the win / loss values
SwiftUI 开发经验之作为一名程序员需要掌握的五个最有力的原则
PostgreSQL installation
Flink SQL knows why (7): haven't you even seen the ETL and group AGG scenarios that are most suitable for Flink SQL?
Start signing up CCF C ³- [email protected] chianxin: Perspective of Russian Ukrainian cyber war - Security confrontation and sanctions g
这本数学书AI圈都在转,资深ML研究员历时7年之作,免费电子版可看
Useful blog links
MySQL functions and related cases and exercises
SVN添加文件时的错误处理:…\conf\svnserve.conf:12: Option expected
Sword finger offer 15 Number of 1 in binary
Realize the recognition and training of CNN images, and process the cifar10 data set and other methods through the tensorflow framework
Will Huawei be the next one to fall