一、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
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 | ||
1.1 | 1.0 – 1.1+x | ||
2.0 | 1.0 – 1.1+x | ||
1.0 – 1.3 | |||
1.0 – 2.0 | |||
3.2[17] | 1.0 – 2.1 | ||
4.0 – 4.2 | 1.0 – 2.1+x | ||
5.0 – 5.5 | 1.0 – 3.5 | ||
6.0 | 1.0 – 3.5 | ||
6.5 | 1.1 – 5.x | 最后支持计算能力 1.x (Tesla) 的版本 | |
7.0 – 7.5 | 2.0 – 5.x | ||
8.0 | 2.0 – 6.x | 最后支持计算能力 2.x (Fermi) 的版本;GTX 1070Ti 不受支持 | |
9.0 – 9.2 | 3.0 – 7.2 | Pascal GTX 1070Ti 不受 CUDA SDK 9.0 支持,但受 CUDA SDK 9.2支持 | |
10.0 – 10.2 | 3.0 – 7.5 | 最后支持计算能力 3.x (Kepler) 的版本;CUDA SDK 10.2 是最后能用于 macOS 的官方版本,在未来的版本中 macOS 将不被支持 | |
11.0 – | 3.5 - 8.6 |
架构-显卡型号的对应表:
https://zh.wikipedia.org/wiki/CUDACUDA版本-显卡型号对应表:Matching CUDA arch and CUDA gencode for various NVIDIA architectures - Arnon Shimoni
https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/CUDA版本-驱动对应表:CUDA 12.6 Update 3 Release Notes
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.htmlpytorch-CUDA版本对应表:Previous PyTorch Versions | PyTorchhttps://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
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#conda-installation三、pyTorch基础功能
这里面对的都是神经网络的计算操作,
细节基础功能:
https://pytorch1x.apachecn.org/torch.nn — PyTorch main documentationhttps://pytorch.org/docs/main/nn.html#containers四、设计神经网络
我此前对机器学习的模糊概念是“把模型放到数据集中训练,就能得到好用的东西”,随着深入,要开始对这种想法进行“祛魅”了。
神经网络的基础处理方法我们都有了,于是我们的主体工作对象变为了设计神经网络——这些需要接触一些论文,并且结合所学,如何实现自己设计的神经网络。
神经网络本质是权重,是计算后的一堆在网络结构中的数值,有了对应的网络结构,这些数值才能被用上。这些训练后得到的数值就是所谓的“模型”。
这部分……就看自己了。
参考
深度学习 | pytorch + torchvision + python 版本对应及环境安装_pytorch python版本