PyTorch入门AI开发的几个必备知识点

Posted by Jeremy Song on 2023-08-26
Estimated Reading Time 13 Minutes
Words 2.7k In Total
Viewed Times

万事开头难!

最近在研究 AI,准备入门 AI 涉及开发的一些内容。但一开始就让我遇到了不少问题,下面就根据遇到的问题,单独列出来以供查询。

写在最前!!!

这篇文章不是一个流程指导,所以每个章节都是单独的。
如果你遇到了类似的问题,可以直接查看相关章节,而不需要提前掌握其他章节的知识。

本人也是一个新手,如果您发现错误,还希望能留言,不吝赐教!

CUDA安装相关

CUDA
CUDA 是 NVIDIA 发明的一种并行计算平台和编程模型。它通过利用图形处理器 (GPU) 的处理能力,可大幅提升计算性能。


目前为止基于 CUDA 的 GPU 销量已达数以百万计,软件开发商、科学家以及研究人员正在各个领域中运用 CUDA,其中包括图像与视频处理、计算生物学和化学、流体力学模拟、CT 图像再现、地震分析以及光线追踪等等。


如需了解有关 CUDA 的更多信息,敬请访问 www.nvidia.cn/cuda

检查显卡支持的CUDA版本

如果你的计算机上安装了 Nvidia 的显卡,则有两种方式检查显卡支持的 CUDA 版本。

通过命令行检查显卡支持的CUDA版本

使用快捷键 Win + R 打开 cmd 窗口,输入命令 nvidia-smi 后按回车,显示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Sat Aug 26 20:02:34 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 537.13 Driver Version: 537.13 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 3060 ... WDDM | 00000000:01:00.0 On | N/A |
| N/A 40C P8 10W / 75W | 1116MiB / 6144MiB | 2% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 9680 C+G ...t.LockApp_cw5n1h2txyewy\LockApp.exe N/A |
| 0 N/A N/A 11448 C+G C:\Windows\explorer.exe N/A |
| 0 N/A N/A 18008 C+G ...inaries\Win64\EpicGamesLauncher.exe N/A |
| 0 N/A N/A 24656 C+G ...ekyb3d8bbwe\PhoneExperienceHost.exe N/A |
| 0 N/A N/A 31248 C+G ...rm 2021.1.3\jbr\bin\jcef_helper.exe N/A |
| 0 N/A N/A 31320 C+G ...CBS_cw5n1h2txyewy\TextInputHost.exe N/A |
| 0 N/A N/A 33304 C+G ...n\115.0.1901.203\msedgewebview2.exe N/A |
| 0 N/A N/A 46644 C+G ....0_x64__8wekyb3d8bbwe\onenoteim.exe N/A |
| 0 N/A N/A 46960 C+G ...nr4m\radeonsoftware\AMDRSSrcExt.exe N/A |
| 0 N/A N/A 49180 C+G ...2txyewy\StartMenuExperienceHost.exe N/A |
| 0 N/A N/A 50796 C+G ...nt.CBS_cw5n1h2txyewy\SearchHost.exe N/A |
| 0 N/A N/A 53356 C+G ...72.0_x64__8wekyb3d8bbwe\GameBar.exe N/A |
| 0 N/A N/A 53744 C+G ...ne\Binaries\Win64\EpicWebHelper.exe N/A |
| 0 N/A N/A 55840 C+G ...oogle\Chrome\Application\chrome.exe N/A |
| 0 N/A N/A 57020 C+G ...siveControlPanel\SystemSettings.exe N/A |
| 0 N/A N/A 57768 C+G ...5n1h2txyewy\ShellExperienceHost.exe N/A |
| 0 N/A N/A 67832 C+G ...\cef\cef.win7x64\steamwebhelper.exe N/A |
| 0 N/A N/A 74644 C+G ...m\radeonsoftware\RadeonSoftware.exe N/A |
| 0 N/A N/A 84368 C+G ...les\Microsoft OneDrive\OneDrive.exe N/A |
| 0 N/A N/A 90804 C+G ...__8wekyb3d8bbwe\WindowsTerminal.exe N/A |
| 0 N/A N/A 93124 C+G ...q8ppsgwt4\LenovoSmartAppearance.exe N/A |
| 0 N/A N/A 96952 C+G ...rm 2021.1.3\jbr\bin\jcef_helper.exe N/A |
| 0 N/A N/A 100488 C+G ...__8wekyb3d8bbwe\WindowsTerminal.exe N/A |
+---------------------------------------------------------------------------------------+

右上角的 CUDA Version: 12.2 就是该显卡(我的显卡是:NVIDIA GeForce RTX 3060)目前支持的 CUDA 最高版本(12.2)。

通过Nvidia控制面板检查显卡支持的CUDA版本

打开 Nvidia控制面板(Nvidia Control Panel),依次点击 帮助 - 系统信息 - 组件 查看 CUDA版本信息。


上图红色方框中的 NVIDIA CUDA 12.2.138 就是。
PS:不过这个是我在安装完之后才看的,未安装 CUDA 之前这里会不会显示我不敢100%确定

下载CUDA

如果你明确知道你需要下载某个版本的 CUDA 那么接着往下看,如果不知道,请看上个章节 CUDA安装相关

了解了自己的显卡支持的最高 CUDA 版本,就可以去 Nvidia Developer 网站的 CUDA Toolkit Archive 页面下载 CUDA 安装包。

PS:CUDA 是高版本支持低版本的,这就是说向下兼容的。
截至文章成稿 PyTorch 支持的最高版本是 CUDA 11.8。 所以选哪个版本,自己慎重选择。

打开 CUDA Toolkit Archive 页面,选择合适的版本

因为我的显卡目前支持 CUDA 12.2, 所以我选择下载 CUDA Toolkit 12.2.1 (July 2023) 这个版本,点击打开页面。

上图表示下载的是 Windows + 64bit + 11 + 本地安装包 (windows 11 64位本地安装包)。
你可以根据计算机的具体情况选择,选好之后点击 Download (xx GB) 就开始下载了。

安装CUDA

下载完成双击程序,根据界面提示进行安装即可。

下面是几个安装过程中需要注意的地方(不过也因人而异,仅供参考。我是这个操作,中间没发生什么错误)

  1. 这个是解压安装文件,路径无所谓,安装完会自动删除

  2. 正常全部下一步就行,如果你多次卸载安装造成安装失败的话,选择自定义安装,选择组件的时候只选 CUDA,然后点击下一步安装

安装完毕后,系统的环境变量会自动添加下面两个:

deviceQuery.exe测试

执行 %CUDA_PATH%\extras\demo_suite\deviceQuery.exe,显示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
deviceQuery.exe Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "NVIDIA GeForce RTX 3060 Laptop GPU"
CUDA Driver Version / Runtime Version 12.2 / 12.2
CUDA Capability Major/Minor version number: 8.6
Total amount of global memory: 6144 MBytes (6441926656 bytes)
(30) Multiprocessors, (128) CUDA Cores/MP: 3840 CUDA Cores
GPU Max Clock rate: 1282 MHz (1.28 GHz)
Memory Clock rate: 6001 Mhz
Memory Bus Width: 192-bit
L2 Cache Size: 3145728 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers
Total amount of constant memory: zu bytes
Total amount of shared memory per block: zu bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 1536
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: zu bytes
Texture alignment: zu bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
CUDA Device Driver Mode (TCC or WDDM): WDDM (Windows Display Driver Model)
Device supports Unified Addressing (UVA): Yes
Device supports Compute Preemption: Yes
Supports Cooperative Kernel Launch: Yes
Supports MultiDevice Co-op Kernel Launch: No
Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.2, CUDA Runtime Version = 12.2, NumDevs = 1, Device0 = NVIDIA GeForce RTX 3060 Laptop GPU
Result = PASS

Result = PASS 表示一切OK!!!

bandwidthTest.exe测试

执行 %CUDA_PATH%\extras\demo_suite\bandwidthTest.exe,显示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[CUDA Bandwidth Test] - Starting...
Running on...

Device 0: NVIDIA GeForce RTX 3060 Laptop GPU
Quick Mode

Host to Device Bandwidth, 1 Device(s)
PINNED Memory Transfers
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 6523.7

Device to Host Bandwidth, 1 Device(s)
PINNED Memory Transfers
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 6435.7

Device to Device Bandwidth, 1 Device(s)
PINNED Memory Transfers
Transfer Size (Bytes) Bandwidth(MB/s)
33554432 243946.0

Result = PASS

NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.

同样,Result = PASS 表示一切OK!!!

查看CUDA安装版本

使用快捷键 Win + R 打开 cmd 窗口,输入命令 nvcc -V 即可查看当前计算机已安装的 CUDA 版本,注意,命令参数的 V 是大写字母。

1
2
3
4
5
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Jul_11_03:10:21_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.2, V12.2.128
Build cuda_12.2.r12.2/compiler.33053471_0

至此,CUDA 的安装已全部完成。

PyTorch安装相关

PyTorch 的安装比较简单,我们一般都是用 pip 安装。我们根据官方的指导 PyTorch Get Started 来即可。

按照自己电脑的实际情况选择上面的待选条件,然后根据 Run this Command 提示操作即可安装。

但有一种情况就是,在线的方式安装不上。只能通过 wheel 安装,那怎么确定我们需要的是那个 .whl 文件?

寻找当前适合的python wheel

通过命令行查询

我们可以通过 pip debug --verbose 来查询版本支持。输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
C:\Users\Jeremysong>pip debug --verbose
WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice.
pip version: pip 22.0.4 from C:\Python310\lib\site-packages\pip (python 3.10)
sys.version: 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929 64 bit (AMD64)]
sys.executable: C:\Python310\python.exe
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: cp936
sys.platform: win32
sys.implementation:
name: cpython
'cert' config value: Not specified
REQUESTS_CA_BUNDLE: None
CURL_CA_BUNDLE: None
pip._vendor.certifi.where(): C:\Python310\lib\site-packages\pip\_vendor\certifi\cacert.pem
pip._vendor.DEBUNDLED: False
vendored library versions:
CacheControl==0.12.10
colorama==0.4.4
distlib==0.3.3
distro==1.6.0
html5lib==1.1
msgpack==1.0.3 (Unable to locate actual module version, using vendor.txt specified version)
packaging==21.3
pep517==0.12.0
platformdirs==2.4.1
progress==1.6
pyparsing==3.0.7
requests==2.27.1
certifi==2021.10.08
chardet==4.0.0
idna==3.3
urllib3==1.26.8
rich==11.0.0 (Unable to locate actual module version, using vendor.txt specified version)
pygments==2.11.2
typing_extensions==4.0.1 (Unable to locate actual module version, using vendor.txt specified version)
resolvelib==0.8.1
setuptools==44.0.0 (Unable to locate actual module version, using vendor.txt specified version)
six==1.16.0
tenacity==8.0.1 (Unable to locate actual module version, using vendor.txt specified version)
tomli==1.0.3
webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
Compatible tags: 36
cp310-cp310-win_amd64
cp310-abi3-win_amd64
cp310-none-win_amd64
cp39-abi3-win_amd64
cp38-abi3-win_amd64
cp37-abi3-win_amd64
cp36-abi3-win_amd64
cp35-abi3-win_amd64
cp34-abi3-win_amd64
cp33-abi3-win_amd64
cp32-abi3-win_amd64
py310-none-win_amd64
py3-none-win_amd64
py39-none-win_amd64
py38-none-win_amd64
py37-none-win_amd64
py36-none-win_amd64
py35-none-win_amd64
py34-none-win_amd64
py33-none-win_amd64
py32-none-win_amd64
py31-none-win_amd64
py30-none-win_amd64
cp310-none-any
py310-none-any
py3-none-any
py39-none-any
py38-none-any
py37-none-any
py36-none-any
py35-none-any
py34-none-any
py33-none-any
py32-none-any
py31-none-any
py30-none-any

上面的输出,从 Compatible tags: 36 开始,下面的都是支持的版本的后缀。例如: xxx-1.1.0-cp310-cp310-win_amd64.whl

通过规则来确定

假如,要安装 AutoGPTQ,Release 的列表如下:

那么如何来理解这些文件的命名呢,他们都是那些区别。下面以 auto_gptq-0.4.2+cu118-cp310-cp310-win_amd64.whl 来说明。

  • auto_gptq: wheel 项目名称
  • 0.4.2: wheel 项目的版本
  • cu118: CUDA 11.8 版本
  • cp310: Python 3.10 版本
  • win: Windows平台
  • amd64: x64 架构

根据以上描述,就可以很容易找到自己需要的 wheel 了。

wheel安装命令

wheel 的安装非常简单。将下载好的 .whl 文件放到任意目录,执行下面的命令即可:

1
pip install xxx.whl

PyTorch验证

在命令行敲入 python 打开会话后,输入如下代码:

1
2
3
import torch
x = torch.rand(5, 3)
print(x)

输出如下代码则表示已安装OK。

1
2
3
4
5
tensor([[0.6102, 0.5069, 0.6882],
[0.1692, 0.1036, 0.6484],
[0.9339, 0.4199, 0.7293],
[0.4797, 0.4609, 0.2859],
[0.9006, 0.5501, 0.3337]])

另外,如果需要检查当前计算机的GPU是否支持 CUDA,则使用如下代码获知。

1
2
import torch
torch.cuda.is_available()

欢迎关注我的公众号 须弥零一,跟我一起学习IT知识。


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !