赞
踩
最近将Pytorch程序迁移到GPU上去的一些工作和思考
环境:Ubuntu 16.04.3
Python版本:3.5.2
Pytorch版本:0.4.0
大家知道,在深度学习中使用GPU来对模型进行训练是可以通过并行化其计算来提高运行效率,这里就不多谈了。
最近申请到了实验室的服务器来跑程序,成功将我简陋的程序改成了“高大上”GPU版本。
看到网上总体来说少了很多介绍,这里决定将我的一些思考和工作记录下来。
由于我使用的是Pytorch写的模型,网上给出了一个非常简单的转换方式: 对模型和相应的数据进行.cuda()处理。通过这种方式,我们就可以将内存中的数据复制到GPU的显存中去。从而可以通过GPU来进行运算了。
网上说的非常简单,但是实际使用过程中还是遇到了一些疑惑。下面分数据和模型两方面的迁移来进行说明介绍。
下载了对应的GPU版本的Pytorch之后,要确保GPU是可以进行使用的,通过torch.cuda.is_available()
的返回值来进行判断。返回True
则具有能够使用的GPU。
通过torch.cuda.device_count()
可以获得能够使用的GPU数量。其他就不多赘述了。
常常通过如下判定来写可以跑在GPU和CPU上的通用模型:
if torch.cuda.is_available():
ten1 = ten1.cuda()
MyModel = MyModel.cuda()
数据方面常用的主要是两种 —— Tensor和Variable。实际上这两种类型是同一个东西,因为Variable实际上只是一个容器,这里先视其不同。
不论是什么类型的Tensor(FloatTensor或者是LongTensor等等),一律直接使用方法.cuda()即可。
例如:
ten1 = torch.Float
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。