一、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
二、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 | Tesla, Fermi | |
3.2[17] | 1.0 -- 2.1 | Tesla, Fermi | |
4.0 -- 4.2 | 1.0 -- 2.1+x | Tesla, Fermi | |
5.0 -- 5.5 | 1.0 -- 3.5 | Tesla, Fermi, Kepler | |
6.0 | 1.0 -- 3.5 | Tesla, Fermi, Kepler | |
6.5 | 1.1 -- 5.x | Tesla, Fermi, Kepler, Maxwell | 最后支持计算能力 1.x (Tesla) 的版本 |
7.0 -- 7.5 | 2.0 -- 5.x | Fermi, Kepler, Maxwell | |
8.0 | 2.0 -- 6.x | Fermi, Kepler, Maxwell, Pascal | 最后支持计算能力 2.x (Fermi) 的版本;GTX 1070Ti 不受支持 |
9.0 -- 9.2 | 3.0 -- 7.2 | Kepler, Maxwell, Pascal, Volta | Pascal GTX 1070Ti 不受 CUDA SDK 9.0 支持,但受 CUDA SDK 9.2支持 |
10.0 -- 10.2 | 3.0 -- 7.5 | Kepler, Maxwell, Pascal, Volta, Turing | 最后支持计算能力 3.x (Kepler) 的版本;CUDA SDK 10.2 是最后能用于 macOS 的官方版本,在未来的版本中 macOS 将不被支持 |
11.0 -- | 3.5 - 8.6 | Maxwell, Pascal, Volta, Turing, Ampere |
架构-显卡型号的对应表:
CUDA - 维基百科,自由的百科全书https://zh.wikipedia.org/wiki/CUDACUDA版本-显卡型号对应表:
CUDA 12.6 Update 3 Release Noteshttps://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
bash
# 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.8 | 0.20.1 | 2.5.1 |
| 2.5.0 | >=3.9,<3.13(3.12) | 12.4/12.1/11.8 | 0.20.0 | 2.5.0 |
| 2.4.1 | >=3.8,<3.13(3.12) | 12.4/12.1/11.8 | 0.19.1 | 2.4.1 |
| 2.4.0 | >=3.8,<3.13(3.12) | 12.4/12.1/11.8 | 0.19.0 | 2.4.0 |
| 2.3.1 | >=3.8,<3.13(3.12) | 12.1/11.8 | 0.18.1 | 2.3.1 |
| 2.3.0 | >=3.8,<3.13(3.12) | 12.1/11.8 | 0.18.0 | 2.3.0 |
| 2.2.2 | >=3.8,<3.12 | 12.1/11.8 | 0.17.2 | 2.2.2 |
| 2.2.1 | >=3.8,<3.12 | 12.1/11.8 | 0.17.1 | 2.2.1 |
| 2.2.0 | >=3.8,<3.12 | 12.1/11.8 | 0.17.0 | 2.2.0 |
| 2.1.2 | >=3.8,<3.12(3.10) | 12.1/11.8 | 0.16.2 | 2.1.2 |
| 2.1.1 | >=3.8,<3.12(3.10) | 12.1/11.8 | 0.16.1 | 2.1.1 |
| 2.1.0 | >=3.8,<3.12(3.10) | 12.1/11.8 | 0.16.0 | 2.1.0 |
| 2.0.0 | >=3.8,<3.12(3.8) | 11.8/11.7 | 0.15.0 | 2.0.0 |
| 1.13.1 | >=3.7.2,<=3.10(3.8) | 11.7/11.6 | 0.14.1 | 0.13.1 |
| 1.13.0 | >=3.7.2,<=3.10(3.8) | 11.7/11.6 | 0.14.0 | 0.13.0 |
| 1.12.1 | >=3.7,<=3.10(3.8) | 11.6/11.3/10.2 | 0.13.1 | 1.12.1 |
| 1.12.0 | >=3.7,<=3.10(3.8) | 11.6/11.3/10.2 | 0.13.0 | 1.12.0 |
| 1.11.0 | >=3.7,<=3.10(3.8) | 11.3/10.2 | 0.12.0 | 1.11.0 |
| 1.10.1 | >=3.6,<=3.9(3.8) | 11.3/10.2 | 0.11.2 | 0.10.1 |
| 1.10.0 | >=3.6,<=3.9(3.8) | 11.3/10.2 | 0.11.0 | 0.10.0 |
| 1.9.1 | >=3.6,<=3.9(3.8) | 11.1/10.2 | 0.10.1 | 0.9.1 |
| 1.9.0 | >=3.6,<=3.9(3.8) | 11.1/10.2 | 0.10.0 | 0.9.0 |
| 1.8.1 | >=3.6,<=3.9(3.8) | 11.1/10.2 | 0.9.1 | 0.8.1 |
| 1.8.0 | >=3.6,<=3.9(3.8) | 11.1/10.2 | 0.9.0 | 0.8.0 |
| 1.7.1 | >=3.6(3.6) | 11.0/10.2/10.1 | 0.8.2 | 0.7.2 |
| 1.7.0 | >=3.6(3.6) | 11.0/10.2/10.1 | 0.8.0 | 0.7.0 |注意:pytorch版本还与numpy等依赖库版本有对应!否则会报错(本人就因为装pyro-api 导致numpy被迫升级,然后我的pytorch就报API_ERROR的错误,当时我还以为是cuda不兼容问题,换了CUDA版本还有这个问题,才知道是依赖的numpy版本导致的)
此表原文链接:深度学习 | pytorch + torchvision + python 版本对应及环境安装_pytorch python版本-CSDN博客
等都确定好了,就可以安装CUDA了:
三、pyTorch基础功能
这里面对的都是神经网络的计算操作,
细节基础功能:
【布客】PyTorch 中文翻译https://pytorch1x.apachecn.org/torch.nn --- PyTorch main documentationhttps://pytorch.org/docs/main/nn.html#containers
四、设计神经网络
我此前对机器学习的模糊概念是++"把模型放到数据集中训练,就能得到好用的东西"++,随着深入,要开始对这种想法进行"祛魅"了。
神经网络的基础处理方法我们都有了,于是我们的主体工作对象变为了设计神经网络------这些需要接触一些论文,并且结合所学,如何实现自己设计的神经网络。
神经网络本质是权重,是计算后的一堆在网络结构中的数值,有了对应的网络结构,这些数值才能被用上。这些训练后得到的数值就是所谓的"模型"。
这部分......就看自己了。
参考
深度学习 | pytorch + torchvision + python 版本对应及环境安装_pytorch python版本-CSDN博客