正文 面向Windows的Pytorch完整安装教程 拾年之璐 V管理员 /2021年 /752 阅读 0305 ## 面向Windows的Pytorch完整安装教程 [TOC] ### 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://zxdmy.com/?id=3](https://zxdmy.com/?id=3) Pytorch主要用来进行深度学习算法建模和推理,为了加快算法训练速度,一般情况下需要使用带GPU的电脑进行Pytoch安装,而为了能够在Pytoch中准确使用GPU,首先需要安装GPU环境,包括`cuda`和`cudnn`。 **在确保正确安装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/](https://pytorch.org/),然后在 `INSTALL PYTORCH` 模块显示如下信息:  此处会自动列出当前最新最稳定 `Stable` 的Pytoch版本。此时为 `Pytorch1.6.0`。 接下来的操作系统OS选择 `Windows` ,安装方式选择 `Pip`,语言选择`Python`。 CUDA选择可以看出,官方推荐与Pytorch1.6.0适配的版本是cuda9.2、cuda10.1和cuda10.2。 **到底选择哪个CUDA版本呢?请继续看** 首先我们要确定本机是否有独立显卡。在 `计算机-管理-设备管理器-显示适配器` 中,查看是否有独立显卡,如下图所示:  如上图所示,可以看到,当前系统拥有两快NVIDIA显卡,型号均为GeForce GTX1080 Ti。 接下来,需要查询本机独立显卡是否支持CUDA的安装,以及该显卡实际执行时运行速度有多快。 可以访问英伟达官网查询,链接:[https://developer.nvidia.com/cuda-gpus](https://developer.nvidia.com/cuda-gpus),如下图所示:  由于我们的机器是GeForce系列,因此单击 `CUDA-Enabled GeForce and TITAN Products` 展开查询。 通过上图可以看到,GeForce GTX 1080Ti在支持的列表里面,其计算能力等级为6.1。点进去,可以看到该显卡支持的详情。 接下来就可以开始安装cuda。 进入cuda安装官网:[https://developer.nvidia.com/cuda-toolkit-archive](https://developer.nvidia.com/cuda-toolkit-archive)  通过上图我们可以看到,CUDA的最新版本已经到了11.0,但是需要适配前面的Pytorch1.6.0,所以最高只能选择10.2。 下面我们选择 `CUDA Toolkit 10.1 update 2`进行下载。单击后会进入版本配置界面,按下图进行选择即可:  安装好后单击 `Download` 进行下载。 接着就是安装过程,双击打开显示临时解压目录,可以改变解压目录然后进行解压即可:  解压完成后会自动进入安装流程,如下图所示:  按照安装提示默认安装即可。 安装完成后,可以打开文件夹 `C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA`,可以看到当前目录已经存在v10.1文件夹,表示已经成功安装cuda10.1版本,并且上述安装程序已经自动的向环境变量中添加了对应的cuda路径,使得后续pytorch可以正常调用和执行。 最后,测试一下cuda是否安装成功。 打开cmd命令终端,然后输入命令: ```bash nvcc -V ``` 正常情况下会出现下图所示结果:  #### 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](https://developer.nvidia.com/cudnn) 访问该网站,需要注册登录英伟达账号后,并填写相关个人信息,然后才可以进入下载页面。这个过程按照提示一步步操作即可。 最终下载页面如下图所示:  我们选择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的安装选择配置页面,此时根据相关配置会自动给出安装方法,如下所示:  此时,只需要在cmd终端中运行 `Run this Command` 中的命令即可: ```bash 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环境,然后输入命令: ```python import torch print(torch.__version__) ``` 效果如下图所示说明pytorch已经安装成功:  接下来再验证pytorch调用cuda是否正确。输入命令: ```python print(torch.cuda.is_available()) ``` 效果如下图所示即为成功:  ### 参考资料: [1. https://blog.csdn.net/qianbin3200896/article/details/104244538](https://blog.csdn.net/qianbin3200896/article/details/104244538) 本文采用创作共用版权 CC BY-NC-SA 3.0 CN 许可协议,转载或复制请注明出处! -- 展开阅读全文 --