本文主要包含PyTorch的基本介绍,以及安装方法。
当前,人工智能正越来越火爆。特别是在AlphaGo击败围棋世界冠军后,人工智能逐渐进入大众视野,并得到了飞速的发展。
目前深度学习是人工智能的主流,这也代表随着人们的研究,人工智能走下了“神坛”,开始被运用在各个领域,如医学等。基于此,很多公司推出了各种形式的深度学习框架。
PyTorch和Tensorflow是目前最火的两个深度学习框架,两者在不同方面也有各自的优势。本文主要介绍PyTorch,及其安装。
PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebook的人工智能研究小组开发。Uber的"Pyro"也是使用的这个库。
PyTorch是一个Python包,提供两个高级功能:
没有好的框架,只有合适的框架,这篇知乎文章有个简单的对比,所以这里就不详细再说了。 并且技术是发展的,知乎上的对比也不是绝对的,比如Tensorflow在1.5版的时候就引入了Eager Execution机制实现了动态图,PyTorch的可视化,windows支持,沿维翻转张量等问题都已经不是问题了。
2018-04-25
(1) 支持 Windows 系统
(2) Tensor/Variable 合并,取消Variable
2018-12-8
(1) Torch Hub 预训练的模型库
(2) JIT 编译器
(3) C++ 前端 (实验性)
(4) 全新的分布式包torch.distributed和 torch.nn.parallel.DistributedDataParallel
2019-5-1
(1) 支持 TensorBoard : from torch.utils.tensorboard import SummaryWriter
(2) 不再支持CUDA 8.0
(3) TORCHVISION 0.3
2019-8-9
(1) 官方实现标准的 nn.Transformer 模块
(2) CUDA 9.2 +
(3) TORCHVISION 0.4
(4) D API(Domain API):torchvision、torchtext 和 torchaudio
2019-10-11
(1) 命名张量(实验性) named tensor
(2) 量化支持 用 eager 模式进行 8 位模型量化
(3) 谷歌云 TPU
(4) PyTorch Mobile 移动端 从 Python 到部署在 iOS 和安卓端
2020-1-16
(1) optim.lr_scheduler 持「链式更新(chaining)」。即可以定义两个 schedulers,并交替在训练中使用。
(2) Java bindings(实验性) Java bindings 从任何 Java 程序中调用 TorchScript 模型,只支持linux
(3) 分布式模型并行训练RPC (实验性)
2020-4-21
(1) C++ 前端 API(稳定型)
(2) 分布式 RPC 框架 API(稳定型)
(3) 不再支持 Python 2
(4) TORCHVISION 0.6
2020-7-29
(1) 官方 自动混合精度(AMP)训练 torch.amp,不需要nv的apex
(2) torch.autograd.profiler 内存分析器 (测试版)
(3) 不支持python 3.5 以前版本
(4) TORCHVISION 0.7
(5) TORCHAUDIO 0.6
(6) Pytorch1.6版本开始,PyTorch 的特性将分为 Stable(稳定版)、Beta(测试版)和 Prototype(原型版)
2020-10-29
(1) 支持CUDA 11:CUDA 9.2 - 11
(2) 通过 torch.fft 支持 NumPy 兼容的 FFT 操作(测试版)
(3) Windows 系统上的分布式训练:DistributedDataParallel和集合通信提供了原型支持(原型版)
(4) 支持Nvidia A100的 原生TF32格式
(5) PyTorch Mobile支持iOS和Android,CocoaPods和JCenter,并分别提供了二进制软件包
(6) TORCHVISION 0.8
2021-03-05
(1) 支持一部分的AMD GPU(测试版)
(2) Complex Autograd (测试版)
(3) 提高 NCCL 稳定性,包括异步错误/超时处理,RPC 分析
(4) torch.fft 已经更新为(稳定版),也就是可以在生产环境中使用了
(5) 新增torch.linalg,为常见的线性代数运算提供与 NumPy 类似的支持(测试版)
(6) torch.fx (测试版)可以进行 Python 代码转换
(7) pipeline 并行化(测试版)可将 pipeline 并行化作为训练 loop 的一部分
2021-06-16
(1) torch.linalg,Complex Autograd 已经更新为(稳定版)
(2) torch.norm 已经弃用了,需要使用 torch.linalg.norm
(3) TorchVision库已经可以在IOS/Android上使用
(4) PyTorch Profiler(测试版): 利用Kineto进行GPU分析,TensorBoard 进行可视化,PyTorch使用教程和文档都已经完善
(5) TorchVision 0.10:添加了新的SSD和SSDLite模型
(6) TorchAudio 0.9.0:可在非Python 环境(包括C++、Android和iOS)中部署的wav2vec 2.0模型
(7) TorchText 0.10.0:添加了一个新的高性能Vocab模块
2021-10-22
(1) 支持Android NNAPI (测试版)
(2) torch.fx 已经变为稳定版,也就是说可以在生产上用了
(3) torch.special、nn.Module 参数化(稳定版)
(4) 分布式训练的Remote Module、DDP Communication Hook、ZeroRedundancyOptimizer也都变为稳定版
PyTorch的安装十分简单,根据PyTorch官网,对系统选择和安装方式等灵活选择即可。这里以anaconda为例,简单的说一下步骤和要点。 国内安装anaconda建议使用清华镜像。
PyTorch是Python的一个库,可以直接使用pip进行安装,经过测试 pip是没有任何问题的。
PyTorch可以根据个人需要安装cpu版或gpu版:
1.cpu版安装
如果没有gpu资源,只需要下载cpu版本的话,可以打开命令提示符,输入以下命令:
pip install torch==1.5.1+cpu torchvision==0.6.1+cpu -f https://download.pytorch.org/whl/torch_stable.html
2.gpu版安装
gpu版本需要先配置cuda资源,cuda的配置不在这里做过多的介绍。
gpu版安装命令如下:
pip3 install torch===1.5.1 torchvision===0.6.1 -f https://download.pytorch.org/whl/torch_stable.html
在1.2版本以后,pytorch只支持cuda 9.2以上了,所以需要对cuda进行升级,目前测试大部分显卡都可以用,包括笔记本的MX250也是可以顺利升级到cuda 10.1。
打开python输入:
import torch
torch.__version__
# 得到结果'1.5.0'
新建的环境是没有安装 ipykernel 的, 所以无法注册到Jupyter Notebook中,先要准备下环境。
在命令提示符中输入以下两条命令:
#安装ipykernel
conda install ipykernel
#写入环境
python -m ipykernel install --name pytorch --display-name "Pytorch for Deeplearning"
下一步就是定制 Jupyter Notebook。输入以下两条命令:
#切换回基础环境
activate base
#创建jupyter notebook配置文件
jupyter notebook --generate-config
## 这里会显示创建jupyter_notebook_config.py的具体位置
打开jupyter_notebook_config.py文件,修改数字:
c.NotebookApp.notebook_dir = '' 默认目录位置
c.NotebookApp.iopub_data_rate_limit = 100000000 这个改大一些否则有可能报错
如果是用pycharm打开的话,可以使用 ctrl+f 快速查找以上位置。
至此 Pytorch 的开发环境安装完成,可以在开始菜单中打开Jupyter Notebook 在New 菜单中创建文件时选择Pytorch for Deeplearning 创建PyTorch的相关开发环境了。
问题1:启动python提示编码错误
解决方法:删除 .python_history
问题2:默认目录设置不起效
打开快捷方式,看看快捷方式是否跟这个截图一样,如果是则删除 %USERPROFILE% 改参数会覆盖掉notebook_dir设置,导致配置不起效。
如果没有问题,那么恭喜你,PyTorch已经安装成功!
本文主要参考PyTorch中文手册,如果想了解更多PyTorch内容,可以参考以下链接:
https://handbook.pytorch.wiki/index.html