1. 概述

PyTorch是一个开源的Python机器学习库,其前身是著名的机器学习库Torch。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch,它是一个面向Python语言的深度学习框架,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这是很多主流深度学习框架比如Tensorflow等都不支持的。PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。除了Facebook外,它已经被Twitter、CMU和Salesforce等机构采用。作为经典机器学习库Torch的端口,PyTorch 为 Python 语言使用者提供了舒适的深度学习开发选择。

尽管推出时间不长,但是目前,Pytorch已成为深度学习领域使用最火热的框架。其原因主要包括以下三点:

(1)简洁:

PyTorch的设计追求最少的封装,尽量避免重复造轮子。 简洁的设计带来的另外一个好处就是代码易于理解。PyTorch的源码只有TensorFlow的十分之一左右,更少的抽象、更直观的设计使得PyTorch的源码十分易于阅读。

(2)速度:

PyTorch 的灵活性不以牺牲速度为代价,在许多评测中,PyTorch 的速度表现胜过 TensorFlow和Keras 等框架。

(3)易用:

PyTorch 是所有的框架中面向对象设计的最优雅的一个。PyTorch的面向对象的接口设计来源于Torch,而Torch的接口设计以灵活易用而著称,Keras作者最初就是受Torch的启发才开发了Keras。PyTorch继承了Torch的衣钵,尤其是API的设计和模块的接口都与Torch高度一致。PyTorch的设计最符合人们的思维,它让用户尽可能地专注于实现自己的想法,即所思即所得,不需要考虑太多关于框架本身的束缚。

2. 安装

由于PyTorch面向的是Python语言,因此首先需要安装Python。

Python的安装方法,请参考:https://blog.csdn.net/cxh_1231/article/details/113826949

PyTorch主要用来进行深度学习算法建模和推理,为了加快算法训练速度,一般情况下需要使用带GPU的电脑进行Pytoch安装,而为了能够在PyToch中准确使用GPU,首先需要安装GPU环境,包括cudacudnn

在确保正确安装GPU环境后再安装PyToch。

2.1 安装cuda

随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像渲染和计算以外的目的(例如这里提到的通用并行计算)。CUDA即Compute Unified Device Architecture,是NVidia利用GPU平台进行通用并行计算的一种架构,它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员可以利用C言、OpenCL、Fortran、c++等为CUDA架构编写程序。简单来理解,cuda就是NVidia提供的可以将显卡进行并行运算的一种软件驱动。

这里注意,我们的最终目标是使用PyToch,而特定PyTorch对cuda的版本是有要求的。

因此,我们在安装cuda之前需要先确认到底装哪个cuda版本才行。

首先进入Pytoch安装官网:https://pytorch.org/,然后在 INSTALL PYTORCH 模块显示如下信息:

image-20200926164243557

此处会自动列出当前最新最稳定 Stable 的Pytoch版本。此时为 Pytorch1.6.0

接下来的操作系统OS选择 Windows ,安装方式选择 Pip,语言选择Python

CUDA选择可以看出,官方推荐与Pytorch1.6.0适配的版本是cuda9.2、cuda10.1和cuda10.2。

到底选择哪个CUDA版本呢?请继续看

首先我们要确定本机是否有独立显卡。在 计算机-管理-设备管理器-显示适配器 中,查看是否有独立显卡,如下图所示:

img

如上图所示,可以看到,当前系统拥有两块NVIDIA显卡,型号均为GeForce GTX1080 Ti

接下来,需要查询本机独立显卡是否支持CUDA的安装,以及该显卡实际执行时运行速度有多快。

可以访问英伟达官网查询,链接:https://developer.nvidia.com/cuda-gpus,如下图所示:

image-20200926165513651

由于我们的机器是GeForce系列,因此单击 CUDA-Enabled GeForce and TITAN Products 展开查询。

通过上图可以看到,GeForce GTX 1080Ti在支持的列表里面,其计算能力等级为6.1。点进去,可以看到该显卡支持的详情。

接下来就可以安装cuda

进入cuda安装官网:https://developer.nvidia.com/cuda-toolkit-archive

image-20200926170122584

通过上图我们可以看到,CUDA的最新版本已经到了11.0,但是需要适配前问中的Pytorch1.6.0,所以最高只能选择10.2

下面我们选择 CUDA Toolkit 10.1 update 2进行下载。单击后会进入版本配置界面,按下图进行选择即可:

image-20200926170536321

安装好后单击 Download 进行下载。

接着就是安装过程,双击打开显示临时解压目录,可以改变解压目录然后进行解压即可:

img

解压完成后会自动进入安装流程,如下图所示:

img

按照安装提示默认安装即可。

安装完成后,可以打开文件夹 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA,可以看到当前目录已经存在v10.1文件夹,表示已经成功安装cuda10.1版本,并且上述安装程序已经自动的向环境变量中添加了对应的cuda路径,使得后续PyTorch可以正常调用和执行。

最后,测试一下cuda是否安装成功。

打开cmd命令终端,然后输入命令:

nvcc -V

正常情况下会出现下图所示结果:

image-20200926170828162

2.2 安装cudnn

这里读者会有疑问,cudnn是什么?为什么装了cuda了还要再装cudnn?

为了解释上述两个问题,我们需要重新梳理一下我们使用Pytorch的最终目标是什么。

毫无疑问,我们是用它来进行深度学习训练和推理,深度学习本质上就是训练深度卷积神经网络。尽管我们已经可以用cuda使得显卡来完成并行计算任务,但是所有的操作还是比较底层的、复杂的。是否在cuda之上有一个专门用于深度神经网络的SDK库来加速完成相关特定的深度学习操作,答案就是cudnn。

NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如caffe、tensorflow、pytorch、mxnet等。cudnn简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在GPU上实现高性能现代并行计算。

简单来说,cuda就是用来定义显卡并行运算的一些列底层GPU操作库,cudnn则是在cuda基础上专门正对深度学习定制的高级GPU操作库。

cudnn官网下载地址:https://developer.nvidia.com/cudnn

访问该网站,需要注册登录英伟达账号后,并填写相关个人信息,然后才可以进入下载页面。这个过程按照提示一步步操作即可。

最终下载页面如下图所示:

image-20200926171147591

我们选择cuDNN v8.0.3版本,因为该版本适配cuda10.1。最后,展开后选择对应的操作系统版本即可。

本文选择cuDNN Library for Windows 10。虽然标题中显示的是X86,即32位架构,但实际下载的文件是X64的。

下载之后,解压缩,将CUDNN压缩包里面的bin、clude、lib文件直接复制到CUDA的安装目录下(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1),直接覆盖安装即可完成。

2.3 安装Pytoch

安装完cuda和cudnn后,安装pytorch相对比较简单。

在安装cuda时已经进入了pytorch的安装选择配置页面,此时根据相关配置会自动给出安装方法,如下所示:

image-20200926164243557

此时,只需要在cmd终端中运行 Run this Command 中的命令即可:

pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
Previous versions of PyTorch

此时会开始安装torch1.6.0和torchvision0.7.0。

2.4 验证

接下来验证Pytorch是否安装成功并且能够成功调用cudnn。首先在命令行中输入python进入python环境,然后依次输入命令:

import torch 
print(torch.__version__)

效果如下图所示说明pytorch已经安装成功:

image-20200926171841672

接下来再验证pytorch调用cuda是否正确。输入命令:

print(torch.cuda.is_available())

效果如下图所示即为成功:

image-20200926171854951

参考资料:

1. https://blog.csdn.net/qianbin3200896/article/details/104244538

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐