前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[开发技巧]·PyTorch如何使用GPU加速(CPU与GPU数据的相互转换)

[开发技巧]·PyTorch如何使用GPU加速(CPU与GPU数据的相互转换)

作者头像
小宋是呢
发布2019-06-27 13:22:06
35K1
发布2019-06-27 13:22:06
举报
文章被收录于专栏:深度应用深度应用

开发技巧·PyTorch如何使用GPU加速(CPU与GPU数据的相互转换)

配合本文推荐阅读:PyTorch中Numpy,Tensor与Variable深入理解与转换技巧

1.问题描述

在进行深度学习开发时,GPU加速可以提升我们开发的效率,速度的对比可以参照笔者这篇博文:[深度应用]·主流深度学习硬件速度对比(CPU,GPU,TPU)结论:通过对比看出相较于普通比较笔记本的(i5 8250u)CPU,一个入门级显卡(GPU MX150)可以提升8倍左右的速度,而高性能的显卡(GPU GTX1080ti)可以提升80倍的速度,如果采用多个GPU将会获得更快速度,所以经常用于训练的话还是建议使用GPU。

在PyTorch中使用GPU和TensorFlow中不同,在TensorFlow如果不对设备进行指定时,TensorFlow检测到GPU就会把自动将数据与运算转移到GPU中。而PyTorch类似于MxNet,需要显性的指定数据和运算放在哪里执行,这样的操作比较自由,却也有些繁琐。因为如果哪一步忘记转换了就会运行出错。

本文在数据存储的层面上,帮大家解析一下CPU与GPU数据的相互转换。让大家可以掌握PyTorch使用GPU加速的技巧。

2.原理讲解

使用GPU之前我需要安装PyTorch的GPU版本,建议使用conda安装,官方教程地址

代码语言:javascript
复制
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch

检测是否可以使用GPU,使用一个全局变量use_gpu,便于后面操作使用

代码语言:javascript
复制
use_gpu = torch.cuda.is_available()

可以使用GPU,use_gpu的值为True,否则为False。当可以使用GPU,我们不想使用,可以直接赋值use_gpu = False

我们在进行转换时,需要把数据,网络,与损失函数转换到GPU上

1.构建网络时,把网络,与损失函数转换到GPU上

代码语言:javascript
复制
model = get_model()
loss_f = t.nn.CrossEntropyLoss()
if(use_gpu):
    model = model.cuda()
    loss_f = loss_f.cuda()

2.训练网络时,把数据转换到GPU上

代码语言:javascript
复制
if (use_gpu):
    x,y = x.cuda(),y.cuda()

3.取出数据是,需要从GPU准换到CPU上进行操作

代码语言:javascript
复制
if(use_gpu):
    loss = loss.cpu()
    acc = acc.cpu()

进一步的对数据操作可以查看笔者这篇博文:[开发技巧]·PyTorch中Numpy,Tensor与Variable深入理解与转换技巧

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开发技巧·PyTorch如何使用GPU加速(CPU与GPU数据的相互转换)
    • 1.问题描述
      • 2.原理讲解
      相关产品与服务
      数据保险箱
      数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档