啥是Pytorch

目录

一.参考资料

1.1 Tape-based autograd

1.2 Pytorch通常的使用场景

1.3 Pytorch组件

二.延展资料

2.1 NumPy

2.1.1 NumPy 应用

2.2 SciPy

2.3 scikit-learn

2.4 Cython

2.5 Numba

2.6 IntelMKL(Math Kernel Library)

2.7 NVIDIA(cuDNN,NCCL)

2.7.1 cuDNN

2.7.2 NCCL


一.参考资料

安装参考:

https://blog.csdn.net/yuanliang861/article/details/85676157?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

以及:

http://www.manongjc.com/article/30397.html

github项目地址:https://github.com/pytorch/pytorch

PyTorch是facebook开源的机器学习平台。

PyTorch提供两种能力:

  1. 强大的GPU加速的张量计算。

  2. 基于磁带式的自动微分的深度神经网络。

1.1 Tape-based autograd

根据如下文章:

https://www.pytorchtutorial.com/why-ai-and-machine-learning-researchers-are-beginning-to-embrace-pytorch/

在facebook内部一般是使用pytorch来做科研,而使用caffe2来做工业项目。

对于 PyTorch 来说,Chainer 是一个先行者。PyTorch 主要受三个框架启发。在 Torch 社区中,Twitter 的某些研究人员构建了名为 Autograd 的辅助软件包,它实际上是基于 Python 社区中的 Autograd。与 Chainer 类似,Autograd 和 Torch Autograd 都采用了一种称为基于磁带(tape-based)的自动分化技术:就是说,你有一个磁带式录音机来记录你所执行的操作,然后它向后重放,来计算你的梯度。这是除了 PyTorch 和 Chainer 之外的任何其他主要框架都不具备的技术。所有其他框架都使用所谓的静态计算图,即用户构建一个图,然后将该图传递给由框架提供的执行引擎,然后框架会提前分析并执行它。

根据https://www.zhihu.com/question/270578639中贾扬清本人的回答。

1.2 Pytorch通常的使用场景

  1. GPU版的Numpy

  2. 能够提供最大化扩展性和速度的深度学习研究平台。

1.3 Pytorch组件

 

 

组件

 

描述

 

torch

 

包含强大GPU支持的张量包,类似NumPy。

 

torch.autograd

 

在torch中支持所有的可微张量操作的基于磁带的自动微分包。

 

torch.jit

 

通过PyTorch代码生成可序列化和可优化模型的编译栈(TorchScript)。参考https://zhuanlan.zhihu.com/p/135911580

 

torch.nn

 

参考https://blog.csdn.net/Spring_24/article/details/100128412

 

torch.multiprocessing

 

支持多个进程中的torch张量在内存中共享,在数据加载和训练时比较有用。

 

torch.utils

 

DataLoader以及一些其他的工具程序。

 

 

二.延展资料

2.1 NumPy

NumPy:https://www.runoob.com/numpy/numpy-tutorial.html

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

一个强大的N维数组对象 ndarray

广播功能函数

整合 C/C++/Fortran 代码的工具

线性代数、傅里叶变换、随机数生成等功能

2.1.1 NumPy 应用

NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。

SciPy 是一个开源的 Python 算法库和数学工具包。

SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。

 

2.2 SciPy

https://www.jianshu.com/p/6c742912047f

Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。

2.3 scikit-learn

http://www.scikitlearn.com.cn/

scikit-learn 是基于 Python 语言的机器学习工具

简单高效的数据挖掘和数据分析工具

可供大家在各种环境中重复使用

建立在 NumPy ,SciPy 和 matplotlib 上

开源,可商业使用 - BSD许可证

一些支持的机器学习方法

 

2.4 Cython

参考:https://zhuanlan.zhihu.com/p/49573586

Cython是一个编程语言,它通过类似Python的语法来编写C扩展并可以被Python调用.既具备了Python快速开发的特点,又可以让代码运行起来像C一样快,同时还可以方便地调用C library。

 

2.5 Numba

https://numba.pydata.org/

Numba使用工业标准的LLVM编译包,将Python方法优化成运行时更优的机器码。

2.6 IntelMKL(Math Kernel Library)

http://blog.sina.com.cn/s/blog_5941f5c40101h4um.html

http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mklman/index.htm

Intel数学核心函数库(MKL)是一套高度优化、线程安全的数学例程、函数,面向高性能的工程、科学与财务应用。英特尔 MKL 的集群版本包括 ScaLAPACK 与分布式内存快速傅立叶转换,并提供了线性代数 (BLAS、LAPACK 和Sparse Solver)、快速傅立叶转换、矢量数学 (Vector Math) 与随机号码生成器支持。

主要包括:

① LAPACK (线形代数工具linear algebra package)

② DFTs (离散傅立叶变换 Discrete Fourier transforms)

③ VML (矢量数学库Vector Math Library)

④ VSL (矢量统计库Vector Statistical Library)

 

2.7 NVIDIA(cuDNN,NCCL)

2.7.1 cuDNN

cuDNN是一个SDK,是一个专门用于神经网络的加速包,它跟CUDA没有一一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应,但一般有一个最新版本的cuDNN版本与CUDA对应更好。

另外NVIDIA的显卡驱动程序和CUDA完全是两个不同的概念。CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。

2.7.2 NCCL

https://baijiahao.baidu.com/s?id=1581386178946489641&wfr=spider&for=pc

NCCL是Nvidia Collective multi-GPU Communication Library的简称,它是一个实现多GPU的collective communication通信(all-gather, reduce, broadcast)库,Nvidia做了很多优化,以在PCIe、Nvlink、InfiniBand上实现较高的通信速度。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值