在2017年1月18日,facebook
下的Torch7
团队宣布PyTorch
开源后就引来了剧烈的反响。PyTorch
是 Torch
在 Python
上的衍生版本。Torch
是一个使用 Lua
语言的神经网络库, Torch
很好用, 但是 Lua
流行度不够, 所以facebook
开发团队将 Lua
的 Torch
移植到了更流行的语言 Python
上,推出了PyTorch
。
PyTorch
是一个Python
优先的深度学习框架,是一个和tensorflow,Caffe,MXnet
一样,非常底层的框架。先说下PyTorch
相比于其他框架的五大优势:
一.Python优先支持
PyTorch主推的特性之一,就是支持Python(官方的提法:puts Python first
)。因为直接构建自 Python C API,PyTorch
从细粒度上直接支持python的访问。相比于原生Python
实现,引入的新概念很少,这不仅降低了 Python
用户理解的门槛,也能保证代码基本跟原生的 Python
实现一致。事实上,开发者可以直接用原生 Python
代码扩展 PyTorch
的 operation
。
而Tensorflow
总有一种用 Python
调用 C++
写的第三方动态链接库的感觉;写模型需要更多代码,无法贯彻 Python
的简约风格;而且写新的 operation
必须用 C++
开发。
二.动态图的良好支持
Tensorflow
运行必须提前建好静态计算图,然后通过feed
和run
重复执行建好的图。但是Pytorch
却不需要这么麻烦:PyTorch
的程序可以在执行时动态构建/调整计算图。相对来说,pytorch具有更好的灵活性。这得益于PyTorch
直接基于 Python C API
构建的 Python
接口。
TensorFlow
饱受诟病的痛点就是只支持静态图模型。也就是说,在处理数据前必须预先定义好一个完整的模型。如果数据非常规整,那还好。但实际工程和研究项目中的数据,难免有一些边角的情况。很多项目,其实需要大量实验才能选择正确的图模型。这就很痛苦了。因此,很多项目转而采用了PyTorch
等支持动态图模型的框架,以便在运行程序的时候动态修正模型。
不过在2017年10月31日万圣节这天,Google
发布了TensorFlow Eager Execution
(贪婪执行),为TensorFlow
添加了命令式编程的接口。启用贪婪执行后,TensorFlow
操作会立刻执行,不用通过Session.run()
执行一个预先定义的图。2017年11月,TensorFlow1.5
版本中正式加入了动态图机制Eager Execution
的支持!
三.易于Debug
Pytorch在运行时可以生成动态图,开发者就可以在堆栈跟踪中看到哪一行代码导致了错误。你甚至可以在调试器中停掉解释器并看看某个层会产生什么。
四.生态丰富
以计算机视觉为例,目前Pytorch
有官方支持的PyTorch Hub,还有优秀的第三方计算机视觉框架库,例如detectron2和
MMdetection等。当然在NLP、图神经网络、强化学习和迁移学习等诸多AI领域都有Pytorch实现的包。
五.易于落地
在落地方便,Pytorch
不仅支持用户自定义OP,还提供了C++的libtorch
库和C++接口。
Pytorch
可以无缝切换Caffe
的模型,还有NVIDIA
的TensorRT
加速支持,训一次模型可以成功移植到ARM和安卓等嵌入式和移动端设备。
此前,Facebook在2020年1月发布了支持分布式模型并行、Java程序、移动端等多项新功能的PyTorch 1.4。在2019年10月举行的年度PyTorch开发者大会上,Facebook首次介绍了Google Cloud TPU支持和量化以及PyTorch Mobile。
2020年4月21日,Facebook 正式发布了 PyTorch 1.5,这是自 2020 年 1 月发布 Pytorch 1.4 之后,时隔三月迎来的另一次版本升级。
此次发布PyTorch 1.5此版本主要包括对几个新的API 的添加和改进,包括对c++前端API的支持(稳定版)和库升级,比如Facebook与Amazon 合作开发的模型服务库TorchServe。
我们可以直接在Pytorch官网寻找自己所需的最新的版本进行安装。
需要注意的是,PyTorch 1.5
只支持Python 3
,不再支持Python 2
版本。cuda
版本需要9.2
及以上,不再支持cuda8.0
及以下。
Conda安装
如果已经装了Ananconda|Python
,不管是Python3.5
,Python3.6
还是Python3.7
,都可以选择对应的cuda版本,然后直接执行下面命令安装:
conda install pytorch torchvision cudatoolkit=9.2 -c pytorch -c defaults -c numba/label/dev #for cuda9.2
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch #for cuda10.1
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch #for cuda10.2
conda install pytorch torchvision cpuonly -c pytorch # for cpu version
pip安装
pip安装的话,不管是cpu版本还是cuda,都只需下面这条命令:
pip install torch torchvision
测试安装是否成功
import torch
print(torch.__version__)
如果输出1.5.0
,那么恭喜Windows
下的PyTorch1.5.0
安装成功!