2. 环境搭建:Anaconda安装、创建虚拟环境、PyTorch安装、CUDA与cuDNN配置、验证环境
说实话,环境搭建是很多初学者最头疼的一步。我见过太多人卡在这里,甚至直接放弃了。但换个角度想——你连环境都能搞定,后面写代码还怕什么?
这一章,我会带你一步步走完整个流程。从 Anaconda 到 PyTorch,再到 CUDA 和 cuDNN。嗯,每一步我都会告诉你:为什么要这么做,以及我踩过的坑。
2.1 为什么用 Anaconda?
你可能听说过 Python 的虚拟环境。说白了,就是给你的每个项目一个独立的“小房间”。房间里的 Python 版本、库的版本互不干扰。
我个人习惯用 Anaconda 来管理这些房间。它自带 conda 命令,比 pip 更擅长处理一些底层依赖,比如 CUDA 相关的包。你想想看,如果两个项目一个要 PyTorch 1.10,一个要 2.0,没有虚拟环境,你怎么办?
2.2 安装 Anaconda
去官网下载对应系统的安装包。Windows 用户记得选 64-Bit Graphical Installer。Linux 用户用命令行跑 .sh 文件。
安装时有个坑——Windows 上记得勾选 "Add Anaconda to my PATH environment variable"。虽然安装程序会警告你不推荐,但我建议你勾上。不然后面每次打开终端都要手动激活 conda,很烦。
安装完成后,打开终端(或 Anaconda Prompt),输入:
conda --version
如果看到版本号,恭喜你,第一步走通了。
2.3 创建虚拟环境
我个人习惯给每个项目建一个独立环境。名字起得有意义一点,比如 yolo_env。
conda create -n yolo_env python=3.9 -y
这里指定 Python 3.9。为什么是 3.9?因为 PyTorch 对它的支持最稳定。我曾经试过 Python 3.11,结果有些库还没适配,折腾了半天。
创建完成后,激活环境:
conda activate yolo_env
你会看到终端前面多了 (yolo_env) 字样。这说明你现在就在这个“小房间”里了。
conda activate yolo_env。不然你装的包都跑到 base 环境里去了,那就白建了。
2.4 安装 PyTorch
PyTorch 的安装方式取决于你有没有 NVIDIA 显卡。先确认一下:
- 有 NVIDIA 显卡: 去 PyTorch 官网(pytorch.org)选你的配置,复制命令。
- 没有显卡: 装 CPU 版本,也能跑代码,就是慢一点。
以我常用的配置为例(CUDA 11.8):
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
如果你网速慢,可以加 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 用清华镜像。不过要注意,镜像站的包可能不是最新版。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118。pip 有时候比 conda 快。
2.5 CUDA 与 cuDNN 配置
很多人搞不清 CUDA 和 cuDNN 的关系。我打个比方:
- CUDA 是 NVIDIA 的“通用计算平台”,让显卡能跑通用程序。
- cuDNN 是专门为深度学习优化的“加速库”,基于 CUDA。
换句话说,CUDA 是基础,cuDNN 是上层应用。PyTorch 安装时自带了 cuDNN,所以你通常不需要手动装。但如果你要自己编译一些底层代码,就得配好。
检查 CUDA 是否可用:
nvidia-smi
你会看到显卡信息、驱动版本、CUDA 版本。注意:这里的 CUDA 版本是驱动支持的最高版本,不是 PyTorch 用的版本。PyTorch 用的是它自己编译时链接的 CUDA 版本。
2.6 验证环境
环境搭好了,得验证一下。写个简单的 Python 脚本:
import torch
# 检查 PyTorch 版本
print("PyTorch 版本:", torch.__version__)
# 检查 CUDA 是否可用
print("CUDA 可用:", torch.cuda.is_available())
# 如果可用,打印 GPU 名称
if torch.cuda.is_available():
print("GPU 名称:", torch.cuda.get_device_name(0))
print("GPU 数量:", torch.cuda.device_count())
保存为 check_env.py,然后在终端运行:
python check_env.py
如果输出类似这样,说明环境没问题:
PyTorch 版本: 2.0.1
CUDA 可用: True
GPU 名称: NVIDIA GeForce RTX 3080
GPU 数量: 1
如果 CUDA 可用: False,别慌。先检查显卡驱动,再确认 PyTorch 版本是否匹配。我遇到过有人装了 CPU 版本的 PyTorch,那当然检测不到 GPU。
import torch
x = torch.randn(3, 3).cuda()
print(x @ x.T) # 矩阵乘法
如果没报错,说明 GPU 正常。
2.7 知识体系总览
下面这张图概括了本章的核心流程。你可以把它当作一个检查清单:
2.8 常见问题与解决方案
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
conda: command not found |
Anaconda 未加入 PATH | 重新安装并勾选 "Add to PATH",或手动添加环境变量 |
torch.cuda.is_available() 返回 False |
PyTorch 版本与驱动不匹配,或装了 CPU 版本 | 运行 nvidia-smi 检查驱动版本,重新安装对应 CUDA 版本的 PyTorch |
| 安装 PyTorch 时网络超时 | 默认源在国外,速度慢 | 使用清华镜像源,或换 pip 安装 |
| 虚拟环境激活后 pip 仍指向全局 | 环境变量顺序问题 | 运行 which pip 确认路径,必要时 conda install pip 重新安装 pip |
2.9 本章小结
环境搭建说难不难,说简单也不简单。关键在于理解每一步在做什么,而不是机械地复制命令。
记住几个要点:
- 用 Anaconda 管理虚拟环境,隔离项目依赖
- PyTorch 版本要和 CUDA 驱动匹配
- 装完后一定要验证,别等到跑代码才发现问题