大家好,又见面了,我是你们的朋友全栈君。
目录
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,这里推荐安装Python3.6版本。Python的安装此处不再过多说明,不会的读者请参考其它资料。
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/get-started/locally/,然后出现下图所示的配置界面
此处会自动列出当前最新最稳定的Pytoch版本,此时为Pytorch1.4,在操作系统上选择Windows,安装方式选择Pip,语言选择Python。cuda选择可以看到官方推荐当前与Pytorch1.4适配的版本是cuda9.2和cuda10.1,因此我们可以选择cuda10.1来进行安装。
首先我们要确定本机是否有独立显卡。在计算机-管理-设备管理器-显示适配器中,查看是否有独立显卡,如下图所示:
如上图所示,可以看到,当前系统拥有两快NVIDIA显卡,型号均为GeForce GTX1080 Ti。接下来,需要测试本机独立显卡是否支持CUDA的安装以及该显卡实际执行时运行速度有多快,可以去NVIDIA官网进行查询测试: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
可以看到当前最新的cuda版本为CUDA Toolkit 10.2,但是由于需要适配Pytorch1.4,因此我们选择CUDA Toolkit 10.1进行下载。单击后会进入版本配置界面,按下图进行选择即可。
配置好后单击Download进行下载:
接着就是安装过程,双击打开显示临时解压目录,可以改变解压目录然后进行解压即可:
解压完成后会自动进入安装流程,如下图所示:
按照安装提示默认安装即可。 安装完成后,可以打开文件夹C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA,可以看到当前目录已经存在v10.1文件夹,表示已经成功安装cuda10.1版本,并且上述安装程序已经自动的向环境变量中添加了对应的cuda路径,使得后续pytorch可以正常调用和执行。
最后,测试一下cuda是否安装成功。打开cmd命令终端,然后输入命令:
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,然后单击Download Cudnn,这里需要注册账号并填写相关个人信息,然后进才可以进入真正的下载页面,按照提示一步步操作即可。最终下载页面如下:
我们选择cuDNN v7.6.5版本,因为该版本适配cuda10.1。最后,展开后选择对应的操作系统版本即可:
本文选择cuDNN Library for Windows 10。下载之后,解压缩,将CUDNN压缩包里面的bin、clude、lib文件直接复制到CUDA的安装目录下(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1),直接覆盖安装即可完成。
在使用GPU进行深度学习的时候,我们经常需要查看GPU使用情况,首先添加环境变量到path中:
C:\Program Files\NVIDIA Corporation\NVSMI
然后在终端中运行命令:
nvidia-smi
即可。效果如下图所示:
2.3 安装Pytoch
安装完cuda和cudnn后,安装pytorch相对比较简单。在安装cuda时已经进入了pytorch的安装选择配置页面,此时根据相关配置会自动给出安装方法,如下所示:
此时,只需要在cmd终端中运行Run this Command中的命令即可:
pip install torch===1.4.0 torchvision===0.5.0 -f https://download.pytorch.org/whl/torch_stable.html
此时会开始安装torch1.4.0和torchvision0.5.0。
2.4 验证
本小节来验证Pytorch是否安装成功并且能够成功调用cudnn。首先在命令行中输入python进入python环境,然后输入命令:
import torch
print(torch.__version__)
效果如下图所示说明pytorch已经安装成功:
接下来再验证pytorch调用cuda是否正确。输入命令:
print(torch.cuda.is_available())
效果如下图所示即为成功:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152775.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...