深度学习

导航
返回深度学习分类

深度学习是一种机器学习技术,它使用多层神经网络来处理数据并学习表示。与传统的机器学习方法不同,深度学习模型能够自动从大量数据中提取复杂的特征,从而减少对人工设计特征的依赖。这种能力使得深度学习在图像识别、语音识别、自然语言处理等领域取得了显著的成果。

本文主要介绍我的深度学习环境搭建,基础学习方法等。

章节目录

  1. 深度学习资源与 Python 环境
  2. PyTorch 版本与镜像
  3. PyTorch CPU 与 cu128 安装
  4. PyTorch cu126 与 cu124 安装
  5. PyTorch cu121 安装
  6. PyTorch cu118 安装
  7. PyTorch cu117 至 cu113 安装
  8. PyTorch cu111 与 cu102 安装
  9. PyTorch 自选版本安装
  10. TensorFlow 与本地 CUDA 环境

机器学习基础

  • 语言基础:Python
  • 视频学习:哔哩哔哩up主跟李沐学AI的【完结】动手学深度学习PyTorch版视频。
  • 配套图书:《动手学深度学习》(机器学习领域的经典之作)

环境搭建

使用下面的PyTorch官方CUDA二进制包,或在受支持的Linux/WSL2环境安装tensorflow[and-cuda]时,所需CUDA运行库和cuDNN会随包或依赖安装,通常只需预先安装兼容的NVIDIA驱动,不必单独安装系统级CUDA Toolkit。编译框架或自定义CUDA扩展时,仍可能需要本地Toolkit;CPU包和其他安装方式不能一概而论。

Python环境搭建

我的Python环境主要依赖于uv,有关uv的详细内容可以参考我的博客uv 项目管理

PyTorch环境搭建

有关PyTorch的详细内容可以参考PyTorch官方文档

PyTorch-Python版本对应关系

安装最新版本的PyTorch,可以直接去PyTorch官方文档查看所需Python版本和安装命令。

需要安装旧版的PyTorch,就要查看PyTorch-Python版本对照表和PyTorch安装命令。

pip安装PyTorch镜像

下载较慢时可以尝试阿里云镜像,速度和可用版本以实际网络和镜像同步情况为准。

注意:–find-links(-f)只是增加候选下载链接,不等于替换–index-url(-i)。下面的示例同时指定CUDA本地版本后缀,避免仅凭-f地址误以为一定安装了对应CUDA构建;也可以直接使用官方安装命令。

1
pip install torch==2.5.1+cu124 torchvision==0.20.1+cu124 torchaudio==2.5.1+cu124 -f https://mirrors.aliyun.com/pytorch-wheels/cu124

上海交通大学镜像使用包索引结构,这里用–index-url:

1
pip install torch==2.5.1+cu118 torchvision==0.20.1+cu118 torchaudio==2.5.1+cu118 --index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu118

安装命令

初始化项目

1
uv init

配置pyproject.toml。下面每个代码块是独立方案,选择一份使用,不要把重复的TOML表直接拼在一起;需要多种后端时使用“自选安装”的完整方案。

这些是历史版本范围示例,不是最新兼容性清单。先按所选版本设置[project]中的requires-python和项目Python版本,并核对系统、架构与显卡驱动支持。python_version条件不满足时,对应依赖会被跳过,不会自动切换Python。

cpu
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cpu = [
"torch>=1.12.0",
"torchvision>=0.13.0",
"torchaudio>=0.12.0",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cpu" },
]
torchvision = [
{ index = "pytorch-cpu" },
]
torchaudio = [
{ index = "pytorch-cpu" },
]

[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
cu128
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu128 = [
"torch>=2.7.0; python_version >= '3.9'",
"torchvision>=0.22.0; python_version >= '3.9'",
"torchaudio>=2.7.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu128" },
]
torchvision = [
{ index = "pytorch-cu128" },
]
torchaudio = [
{ index = "pytorch-cu128" },
]

[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
cu126
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu126 = [
"torch>=2.6.0; python_version >= '3.9'",
"torchvision>=0.21.0; python_version >= '3.9'",
"torchaudio>=2.6.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu126" },
]
torchvision = [
{ index = "pytorch-cu126" },
]
torchaudio = [
{ index = "pytorch-cu126" },
]

[[tool.uv.index]]
name = "pytorch-cu126"
url = "https://download.pytorch.org/whl/cu126"
explicit = true
cu124
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu124 = [
"torch>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
"torchvision>=0.19.0,<0.20.0; python_version >= '3.8' and python_version < '3.13'",
"torchaudio>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu124" },
]
torchvision = [
{ index = "pytorch-cu124" },
]
torchaudio = [
{ index = "pytorch-cu124" },
]

[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu124 = [
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu124" },
]
torchvision = [
{ index = "pytorch-cu124" },
]
torchaudio = [
{ index = "pytorch-cu124" },
]

[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"
explicit = true
cu121
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu121 = [
"torch>=2.1.0,<2.4.0; python_version >= '3.8' and python_version < '3.12'",
"torchvision>=0.16.0,<0.19.0; python_version >= '3.8' and python_version < '3.12'",
"torchaudio>=2.1.0,<2.4.0; python_version >= '3.8' and python_version < '3.12'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu121" },
]
torchvision = [
{ index = "pytorch-cu121" },
]
torchaudio = [
{ index = "pytorch-cu121" },
]

[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu121 = [
"torch>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
"torchvision>=0.19.0,<0.20.0; python_version >= '3.8' and python_version < '3.13'",
"torchaudio>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu121" },
]
torchvision = [
{ index = "pytorch-cu121" },
]
torchaudio = [
{ index = "pytorch-cu121" },
]

[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu121 = [
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu121" },
]
torchvision = [
{ index = "pytorch-cu121" },
]
torchaudio = [
{ index = "pytorch-cu121" },
]

[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true
cu118
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu118 = [
"torch>=2.1.0,<2.4.0; python_version >= '3.8' and python_version < '3.12'",
"torchvision>=0.16.0,<0.19.0; python_version >= '3.8' and python_version < '3.12'",
"torchaudio>=2.1.0,<2.4.0; python_version >= '3.8' and python_version < '3.12'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu118" },
]
torchvision = [
{ index = "pytorch-cu118" },
]
torchaudio = [
{ index = "pytorch-cu118" },
]

[[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu118 = [
"torch>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
"torchvision>=0.19.0,<0.20.0; python_version >= '3.8' and python_version < '3.13'",
"torchaudio>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu118" },
]
torchvision = [
{ index = "pytorch-cu118" },
]
torchaudio = [
{ index = "pytorch-cu118" },
]

[[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu118 = [
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu118" },
]
torchvision = [
{ index = "pytorch-cu118" },
]
torchaudio = [
{ index = "pytorch-cu118" },
]

[[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"
explicit = true
cu117
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu117 = [
"torch>=1.13.0,<2.0.0; python_version >= '3.8' and python_version < '3.11'",
"torchvision>=0.14.0,<0.15.0; python_version >= '3.8' and python_version < '3.11'",
"torchaudio>=0.13.0,<2.0.0; python_version >= '3.8' and python_version < '3.11'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu117" },
]
torchvision = [
{ index = "pytorch-cu117" },
]
torchaudio = [
{ index = "pytorch-cu117" },
]

[[tool.uv.index]]
name = "pytorch-cu117"
url = "https://download.pytorch.org/whl/cu117"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu117 = [
"torch>=2.0.0,<2.1.0; python_version >= '3.8' and python_version < '3.12'",
"torchvision>=0.15.0,<0.16.0; python_version >= '3.8' and python_version < '3.12'",
"torchaudio>=2.0.0,<2.1.0; python_version >= '3.8' and python_version < '3.12'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu117" },
]
torchvision = [
{ index = "pytorch-cu117" },
]
torchaudio = [
{ index = "pytorch-cu117" },
]

[[tool.uv.index]]
name = "pytorch-cu117"
url = "https://download.pytorch.org/whl/cu117"
explicit = true
cu116
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu116 = [
"torch>=1.12.0,<2.0.0; python_version >= '3.8' and python_version < '3.11'",
"torchvision>=0.13.0,<0.15.0; python_version >= '3.8' and python_version < '3.11'",
"torchaudio>=0.12.0,<0.14.0; python_version >= '3.8' and python_version < '3.11'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu116" },
]
torchvision = [
{ index = "pytorch-cu116" },
]
torchaudio = [
{ index = "pytorch-cu116" },
]

[[tool.uv.index]]
name = "pytorch-cu116"
url = "https://download.pytorch.org/whl/cu116"
explicit = true
cu113
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu113 = [
"torch>=1.11.0,<1.13.0; python_version >= '3.8' and python_version < '3.11'",
"torchvision>=0.12.0,<0.14.0; python_version >= '3.8' and python_version < '3.11'",
"torchaudio>=0.11.0,<0.13.0; python_version >= '3.8' and python_version < '3.11'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu113" },
]
torchvision = [
{ index = "pytorch-cu113" },
]
torchaudio = [
{ index = "pytorch-cu113" },
]

[[tool.uv.index]]
name = "pytorch-cu113"
url = "https://download.pytorch.org/whl/cu113"
explicit = true
cu111
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu111 = [
"torch>=1.9.0,<1.11.0; python_version >= '3.8' and python_version < '3.10'",
"torchvision>=0.10.0,<0.12.0; python_version >= '3.8' and python_version < '3.10'",
"torchaudio>=0.9.0,<0.11.0; python_version >= '3.8' and python_version < '3.10'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu111" },
]
torchvision = [
{ index = "pytorch-cu111" },
]
torchaudio = [
{ index = "pytorch-cu111" },
]

[[tool.uv.index]]
name = "pytorch-cu111"
url = "https://download.pytorch.org/whl/cu111"
explicit = true
cu102
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu102 = [
"torch>=1.9.0,<1.11.0; python_version >= '3.8' and python_version < '3.10'",
"torchvision>=0.10.0,<0.12.0; python_version >= '3.8' and python_version < '3.10'",
"torchaudio>=0.9.0,<0.11.0; python_version >= '3.8' and python_version < '3.10'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu102" },
]
torchvision = [
{ index = "pytorch-cu102" },
]
torchaudio = [
{ index = "pytorch-cu102" },
]

[[tool.uv.index]]
name = "pytorch-cu102"
url = "https://download.pytorch.org/whl/cu102"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu102 = [
"torch>=1.11.0,<1.13.0; python_version >= '3.8' and python_version < '3.11'",
"torchvision>=0.12.0,<0.14.0; python_version >= '3.8' and python_version < '3.11'",
"torchaudio>=0.11.0,<0.13.0; python_version >= '3.8' and python_version < '3.11'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu102" },
]
torchvision = [
{ index = "pytorch-cu102" },
]
torchaudio = [
{ index = "pytorch-cu102" },
]

[[tool.uv.index]]
name = "pytorch-cu102"
url = "https://download.pytorch.org/whl/cu102"
explicit = true
自选安装
pyproject.toml
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
[project.optional-dependencies]
cu118 = [
"torch>=2.1.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torchvision>=0.16.0,<0.20.0; python_version >= '3.8' and python_version < '3.9'",
"torchaudio>=2.1.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]
cu121 = [
"torch>=2.1.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torchvision>=0.16.0,<0.20.0; python_version >= '3.8' and python_version < '3.9'",
"torchaudio>=2.1.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]
cu124 = [
"torch>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torchvision>=0.19.0,<0.20.0; python_version >= '3.8' and python_version < '3.9'",
"torchaudio>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]
cu126 = [
"torch>=2.6.0; python_version >= '3.9'",
"torchvision>=0.21.0; python_version >= '3.9'",
"torchaudio>=2.6.0; python_version >= '3.9'",
]
cu128 = [
"torch>=2.7.0; python_version >= '3.9'",
"torchvision>=0.22.0; python_version >= '3.9'",
"torchaudio>=2.7.0; python_version >= '3.9'",
]
cpu = [
"torch>=2.1.0",
"torchvision>=0.16.0",
"torchaudio>=2.1.0",
]

[tool.uv]
conflicts = [
[
{ extra = "cu118" },
{ extra = "cu121" },
{ extra = "cu124" },
{ extra = "cu126" },
{ extra = "cu128" },
{ extra = "cpu" },
],
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu118", extra = "cu118" },
{ index = "pytorch-cu121", extra = "cu121" },
{ index = "pytorch-cu124", extra = "cu124" },
{ index = "pytorch-cu126", extra = "cu126" },
{ index = "pytorch-cu128", extra = "cu128" },
{ index = "pytorch-cpu", extra = "cpu" },
]
torchvision = [
{ index = "pytorch-cu118", extra = "cu118" },
{ index = "pytorch-cu121", extra = "cu121" },
{ index = "pytorch-cu124", extra = "cu124" },
{ index = "pytorch-cu126", extra = "cu126" },
{ index = "pytorch-cu128", extra = "cu128" },
{ index = "pytorch-cpu", extra = "cpu" },
]
torchaudio = [
{ index = "pytorch-cu118", extra = "cu118" },
{ index = "pytorch-cu121", extra = "cu121" },
{ index = "pytorch-cu124", extra = "cu124" },
{ index = "pytorch-cu126", extra = "cu126" },
{ index = "pytorch-cu128", extra = "cu128" },
{ index = "pytorch-cpu", extra = "cpu" },
]

[[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"
explicit = true

[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true

[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"
explicit = true

[[tool.uv.index]]
name = "pytorch-cu126"
url = "https://download.pytorch.org/whl/cu126"
explicit = true

[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true

[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true

选择一个extra安装,例如CPU版本;使用CUDA时把cpu改成配置中对应的cu118、cu128等,不要同时启用互斥的extra。

1
2
uv sync --extra cpu
uv run --extra cpu python -c "import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available())"

添加需要的库(以CPU方案为例,继续保留extra,避免后续同步移除PyTorch)

1
2
uv add jupyter pandas matplotlib
uv sync --extra cpu

Tensorflow环境搭建

安装最新版本的Tensorflow,可以直接去Tensorflow官方文档查看所需Python版本和安装命令。

Tensorflow版本对应关系

在Linux环境下安装Tensorflow GPU版的版本对应关系

在Windows环境下安装Tensorflow GPU版的版本对应关系

info
原生Windows的CUDA GPU支持止于TensorFlow 2.10;2.11及以后的GPU版本可按官方说明使用WSL2。

Linux环境下安装Tensorflow

安装最新版Tensorflow的CPU版本

1
uv add tensorflow

安装最新版Tensorflow的GPU版本

1
uv add "tensorflow[and-cuda]"

非root用户安装本地CUDA

如果你没有root权限,无法安装系统级的CUDA Toolkit,可以选择安装到自己的目录;系统仍需由管理员安装兼容的NVIDIA驱动。这里我选择安装多个版本的CUDA Toolkit,通过使用统一的cuda软链接来选择不同的CUDA版本。

下载CUDA Toolkit

前往CUDA Toolkit下载页面下载适用于Linux的CUDA Toolkit,这里安装类型选择runfile下载。

1.png

安装CUDA Toolkit

截图演示runfile的选择方式;下面命令以CUDA 12.4.0的Linux x86_64安装包为例,文件名和目录应与实际下载的版本一致。

1
chmod +x cuda_12.4.0_550.54.14_linux.run
1
./cuda_12.4.0_550.54.14_linux.run --silent --toolkit --toolkitpath="$HOME/.local/cuda-12.4"

创建cuda软链接

1
ln -s $HOME/.local/cuda-12.4 $HOME/.local/cuda

覆盖已经存在的软链接。

1
ln -sfn $HOME/.local/cuda-12.4 $HOME/.local/cuda

配置环境变量

将以下内容添加到你的~/.bashrc文件中:

1
2
3
export CUDA_HOME=$HOME/.local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH="$CUDA_HOME/lib64${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"

验证安装

安装完成后,运行nvcc --version命令验证CUDA Toolkit是否安装成功。