热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

pytorch中gpu与gpu、gpu与cpu在load时相互转化操作

这篇文章主要介绍了pytorch模型载入之gpu和cpu互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

问题描述

有时在加载已训练好的模型时,会出现 out of memory 的错误提示,但仔细检测使用的GPU卡并没有再用且内存也没有超出。

经查阅发现原来是训练模型时使用的GPU卡和加载时使用的GPU卡不一样导致的。个人感觉,因为pytorch的模型中是会记录有GPU信息的,所以有时使用不同的GPU加载时会报错。

解决方法

gpu之间的相互转换。即,将训练时的gpu卡转换为加载时的gpu卡。

torch.load('modelparameters.pth', map_location={'cuda:1':'cuda:0'}) # gpu 1 --> gpu 0

当然,你也可以直接将加载模型时使用的gpu卡改为和训练时的一样。但在多人使用一个服务器时,你想用的gpu卡已被使用,就需按上面方法转换gpu。

拓展

cpu --> cpu 或 gpu --> gpu

checkpoint = torch.load('modelparameters.pth')
model.load_state_dict(checkpoint)

cpu --> gpu 0

torch.load('modelparameters.pth', map_location=lambda storage, loc: storage.cuda(0))

gpu --> cpu

torch.load('modelparameters.pth', map_location=lambda storage, loc: storage)

gpu 1 --> gpu 0

torch.load('modelparameters.pth', map_location={'cuda:1':'cuda:0'})

补充知识:pytorch model.cuda()花费时间很长

如果pytorch在进行model.cuda()操作需要花费的时间很长,长到你怀疑GPU的速度了,那就是不正常的。

如果你用的pytorch版本是0.3.0,升级到0.3.1就好了!

以上这篇pytorch模型载入之gpu和cpu互转操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


推荐阅读
  • 开发笔记:深度探索!Android之OkHttp网络架构源码解析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了深度探索!Android之OkHttp网络架构源码解析相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 突然觉得服务器ssh密码登录总是浪费一定量的时间,就想试试用sshKey进行登录。生成服务器sshkey和本地sshkey$ssh-keygen在服务器上生成一个authorize ... [详细]
  • webpack 配置IP 和端口号
    最近在用webpack搭建本地服务器的时候,因为不想总是用localhost来跑,所以对webpack.config.js进行了配置,如下devServer:{publicPath ... [详细]
  • CAS介绍CAS(CentralAuthenticationService),是耶鲁大学开发的单点登录系统(SSO,singlesign-on),应用广泛,具有独立于平台的,易于理解,支持代 ... [详细]
  • 利用ipv6技术,废旧笔记本变成server
    如果你家的路由器已经get到了ipv6地址,并且你家的电脑也获取了有效的ipv6地址,在广域网的设备可以访问到。那恭喜你,再配合我这个dd ... [详细]
  • 让SQL Server 2008默认使用Report Builder 2.0做报表设计器
    由于SQLServer2008比ReportBuilder2.0先发布,所以默认情况下,在SSRS2008中的报表管理器中单击“报表生成器”,打开的是ReportBuilder1.0版本 ... [详细]
  • 本篇内容主要讲解“JavaScript在网页设计中的嵌入应用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小 ... [详细]
  • Step1:启动服务器首先启动zookeeperbinzookeeper-server-start.shconfigzookeeper.properties接着启动kafka服务 ... [详细]
  • 下载器,就是一种网络工具,从网络中接收自己想要的数据。下载器是一个网络客户端。它的下载流程无非就是客户端连接服务器端,然后发送资源下载请求 ... [详细]
  • 一、域名解析记录说明记录类型A:用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP ... [详细]
  • Redis 外部访问设置
    1、错误原因Redis搭建好后一般都是使用编程语言进行连接调用,默认Redis的设置是不允许外界访问的,连接Redis只能通过本地(127.0.0.1)来连接,而不能使用网络IP( ... [详细]
  • 13Linux基本命令和配置服务器来电后自动开机
    本节所讲内容:Linux终端介绍Shell提示符BashShell基本语法基本命令的使用:ls、pwd、cd查看系统和BIOS硬件时间Linux如何获得 ... [详细]
  • 服务器磁盘突然100%,看文件大小是正常的,我重启了一下,连上后还是100%,过了大概30秒的样子,断开连接了,重连是秒连的,一看又正常了。服务器里面跑的lnmp环境,其中有一个w ... [详细]
  • 终端系统服务器部署一、安装IIS依次单击“开始”菜单—控制面板—添加和删除程序—添加和删除windows组件,出现窗口如下图a所示,将“应用程序服 ... [详细]
  • 这篇文章主要讲解了“GradeBook类怎么定义”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Grad ... [详细]
author-avatar
没搜摸索摸索_685
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有