当前位置:网站首页>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
边栏推荐
猜你喜欢
![[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [Chapter III exercises]](/img/b4/3442c62586306b4fceca992ce6294a.png)
[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [Chapter III exercises]

rxjs Observable filter Operator 的实现原理介绍

CVPR 2022 | interpretation of 6 excellent papers selected by meituan technical team

Elk note 24 -- replace logstash consumption log with gohangout

The shortage of graphics cards finally came to an end: 3070ti for more than 4000 yuan, 2000 yuan cheaper than the original price, and 3090ti

人身变声器的原理

Smbms project

The 35 required questions in MySQL interview are illustrated, which is too easy to understand

18W word Flink SQL God Road manual, born in the sky

Seven habits of highly effective people
随机推荐
Kivy教程之 如何通过字符串方式载入kv文件设计界面(教程含源码)
The difference between session and cookie
SSH login server sends a reminder
Understanding of CPU buffer line
Will Huawei be the next one to fall
February 14, 2022, incluxdb survey - mind map
MyCms 自媒体商城 v3.4.1 发布,使用手册更新
Today's sleep quality record 77 points
【电脑插入U盘或者内存卡显示无法格式化FAT32如何解决】
This math book, which has been written by senior ml researchers for 7 years, is available in free electronic version
MySQL functions and related cases and exercises
106. How to improve the readability of SAP ui5 application routing URL
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
stm32和电机开发(从mcu到架构设计)
Comprehensive evaluation of double chain notes remnote: fast input, PDF reading, interval repetition / memory
Father and basketball
mysql更新时条件为一查询
[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [Chapter V exercises]
In the promotion season, how to reduce the preparation time of defense materials by 50% and adjust the mentality (personal experience summary)
File uploading and email sending