一、pyTorch介绍

1.前言

学人工智能,少不了深度学习和神经网络,之前都是只有理论和新闻的那种大致的、模糊的印象,现在开始学习了。

构造神经网络感觉实践的对象就改变了,之前做数据系统、软件界面面对的都是字节流、结构体以及控件,现在面对的是nn(neural network ,神经网络)了。

2.神经网络实现的现成框架:

Caffe(c++实现的)采用以层为单位的抽象,优点是逻辑清晰,实现简便,但是需要手动实现梯度计算;

而Tensorflow是以计算图为基础,是静态图,先编译后计算;

pyTorch是动态计算图

3.pytorch由来:
Torch是一个用Lua语言实现的科学计算框架,它提供了大量的机器学习算法。而PyTorch是Torch的Python版本,它继承了Torch的强大功能,并且提供了更加Pythonic的接口,使得用户可以更方便地使用Python和其它Python库(如NumPy)进行开发。PyTorch的核心是一个提供了张量计算和深度神经网络的库。

它提供了大量的预定义函数和类,使得用户可以方便地定义和训练神经网络。

4.pytorch的官方git

pytorch/pytorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration

pyTorch笔记_pytorch

https://github.com/pytorch/pytorch

二、CUDA相关问题

CUDA(Compute Unified Device Architecture)是由NVIDIA开发的用于并行计算的平台和编程模型。CUDA旨在利用NVIDIA GPU(图形处理单元)的强大计算能力来加速各种科学计算、数值模拟和深度学习任务。

「GPU并行计算」:pytorch可以纯靠CPU完成计算,但也可以通过GPU来加速计算(数个矩阵的值,cpu只能一个个顺序遍历计算,而gpu可以并行计算,虽然每个内核效率低但是胜在核多且并行)。 CUDA使GPU能够执行并行计算任务,从而大幅提高了计算性能。GPU由许多小型处理单元组成,每个处理单元都能够执行多个线程,这意味着GPU可以同时处理大量的计算任务。

GPU(显卡)与pytorch有如下对应关系,不满足则无法使用cuda加速

GPU架构--驱动--CUDA版本--pytorch版本

显卡的架构-CUDA版本对应表:

CUDA 版本

支持的计算能力

微架构

备注

1.0[10]

1.0 – 1.1

Tesla

1.1

1.0 – 1.1+x

Tesla

2.0

1.0 – 1.1+x

Tesla

2.1 – 2.3.1[11][12][13][14]

1.0 – 1.3

Tesla

3.0 – 3.1[15][16]

1.0 – 2.0

TeslaFermi

3.2[17]

1.0 – 2.1

TeslaFermi

4.0 – 4.2

1.0 – 2.1+x

TeslaFermi

5.0 – 5.5

1.0 – 3.5

TeslaFermiKepler

6.0

1.0 – 3.5

TeslaFermiKepler

6.5

1.1 – 5.x

TeslaFermiKeplerMaxwell

最后支持计算能力 1.x (Tesla) 的版本

7.0 – 7.5

2.0 – 5.x

FermiKeplerMaxwell

8.0

2.0 – 6.x

FermiKeplerMaxwellPascal

最后支持计算能力 2.x (Fermi) 的版本;GTX 1070Ti 不受支持

9.0 – 9.2

3.0 – 7.2

KeplerMaxwellPascalVolta

Pascal GTX 1070Ti 不受 CUDA SDK 9.0 支持,但受 CUDA SDK 9.2支持

10.0 – 10.2

3.0 – 7.5

KeplerMaxwellPascalVoltaTuring

最后支持计算能力 3.x (Kepler) 的版本;CUDA SDK 10.2 是最后能用于 macOS 的官方版本,在未来的版本中 macOS 将不被支持

11.0 –

3.5 - 8.6

MaxwellPascalVoltaTuringAmpere

架构-显卡型号的对应表:

CUDA - 维基百科,自由的百科全书

pyTorch笔记_pytorch

https://zh.wikipedia.org/wiki/CUDACUDA版本-显卡型号对应表:

Matching CUDA arch and CUDA gencode for various NVIDIA architectures - Arnon Shimoni

pyTorch笔记_pytorch

https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/CUDA版本-驱动对应表:

CUDA 12.6 Update 3 Release Notes

pyTorch笔记_pytorch

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.htmlpytorch-CUDA版本对应表:
Previous PyTorch Versions | PyTorch

pyTorch笔记_pytorch

https://pytorch.org/get-started/previous-versions/

 比如其中这个,代表1.7.0的pytorch支持CUDA9.2、10.1、10.2、11.0

# CUDA 9.2
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=9.2 -c pytorch

# CUDA 10.1
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=10.1 -c pytorch

# CUDA 10.2
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=10.2 -c pytorch

# CUDA 11.0
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0 -c pytorch

# CPU Only
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cpuonly -c pytorch

pytorch-python版本对应表: 

torch版本支持的Python版本(示例)Cuda版本torchvision版本torchaudio版本2.5.1>=3.9,<3.13(3.12)12.4/12.1/11.80.20.12.5.12.5.0>=3.9,<3.13(3.12)12.4/12.1/11.80.20.02.5.02.4.1>=3.8,<3.13(3.12)12.4/12.1/11.80.19.12.4.12.4.0>=3.8,<3.13(3.12)12.4/12.1/11.80.19.02.4.02.3.1>=3.8,<3.13(3.12)12.1/11.80.18.12.3.12.3.0>=3.8,<3.13(3.12)12.1/11.80.18.02.3.02.2.2>=3.8,<3.1212.1/11.80.17.22.2.22.2.1>=3.8,<3.1212.1/11.80.17.12.2.12.2.0>=3.8,<3.1212.1/11.80.17.02.2.02.1.2>=3.8,<3.12(3.10)12.1/11.80.16.22.1.22.1.1>=3.8,<3.12(3.10)12.1/11.80.16.12.1.12.1.0>=3.8,<3.12(3.10)12.1/11.80.16.02.1.02.0.0>=3.8,<3.12(3.8)11.8/11.70.15.02.0.01.13.1>=3.7.2,<=3.10(3.8)11.7/11.60.14.10.13.11.13.0>=3.7.2,<=3.10(3.8)11.7/11.60.14.00.13.01.12.1>=3.7,<=3.10(3.8)11.6/11.3/10.20.13.11.12.11.12.0>=3.7,<=3.10(3.8)11.6/11.3/10.20.13.01.12.01.11.0>=3.7,<=3.10(3.8)11.3/10.20.12.01.11.01.10.1>=3.6,<=3.9(3.8)11.3/10.20.11.20.10.11.10.0>=3.6,<=3.9(3.8)11.3/10.20.11.00.10.01.9.1>=3.6,<=3.9(3.8)11.1/10.20.10.10.9.11.9.0>=3.6,<=3.9(3.8)11.1/10.20.10.00.9.01.8.1>=3.6,<=3.9(3.8)11.1/10.20.9.10.8.11.8.0>=3.6,<=3.9(3.8)11.1/10.20.9.00.8.01.7.1>=3.6(3.6)11.0/10.2/10.10.8.20.7.21.7.0>=3.6(3.6)11.0/10.2/10.10.8.00.7.0

               pytorch版本还与numpy等依赖库版本有对应!否则会报错(本人就因为装pyro-api 导致numpy被迫升级,然后我的pytorch就报API_ERROR的错误,当时我还以为是cuda不兼容问题,换了CUDA版本还有这个问题,才知道是依赖的numpy版本导致的)

等都确定好了,就可以安装CUDA了:

CUDA Installation Guide for Linux

pyTorch笔记_pytorch

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#conda-installation

三、pyTorch基础功能

这里面对的都是神经网络的计算操作,


 细节基础功能:

【布客】PyTorch 中文翻译

pyTorch笔记_pytorch

https://pytorch1x.apachecn.org/torch.nn — PyTorch main documentation

pyTorch笔记_pytorch

https://pytorch.org/docs/main/nn.html#containers
 

四、设计神经网络

我此前对机器学习的模糊概念是“把模型放到数据集中训练,就能得到好用的东西”,随着深入,要开始对这种想法进行“祛魅”了。

神经网络的基础处理方法我们都有了,于是我们的主体工作对象变为了设计神经网络——这些需要接触一些论文,并且结合所学,如何实现自己设计的神经网络。

神经网络本质是权重,是计算后的一堆在网络结构中的数值,有了对应的网络结构,这些数值才能被用上。这些训练后得到的数值就是所谓的“模型”。

这部分……就看自己了。


pyTorch笔记_神经网络_09


参考

深度学习 | pytorch + torchvision + python 版本对应及环境安装_pytorch python版本