ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

PyTorch深度学习环境搭建:Anaconda虚拟环境与GPU验证指南

PyTorch深度学习环境搭建:Anaconda虚拟环境与GPU验证指南

简介:这份资源面向深度学习初学者与需要配置 PyTorch 开发环境的学生、开发者,聚焦于在 Anaconda 中新建独立虚拟环境来搭建深度学习框架,避免直接在 base 环境中安装导致的库冲突问题。压缩包内共 1 个 docx 文档,约 170KB,以图文笔记形式整理环境配置的关键环节,便于边看边操作。内容涉及 conda 新建与激活环境命令、显卡驱动版本查看、CUDA 与 cuDNN 版本匹配思路,以及 PyTorch、Torchvision 的版本选择与安装命令,还给出国内镜像源地址用于加速下载,并演示了导入 torch、查看版本与检测 GPU 是否可用的验证方法。目前已有 1609 人学习下载,适合希望快速跑通 PyTorch 环境、减少版本踩坑的读者参考。

1. 为什么我劝你别在 base 环境里装 PyTorch

刚接触深度学习那会儿,我也图省事,直接在 Anaconda 的 base 环境里pip install torch。结果三个月后,一个做图像分割的项目需要 PyTorch 1.7 + CUDA 11.0,另一个做 NLP 的 Demo 又依赖 TensorFlow 1.5,两个框架的 numpy 版本互相打架,base 环境直接崩了,重装 Anaconda 花了我一整个下午。从那以后,我给自己定了一条死规矩:任何深度学习框架,一律新建独立虚拟环境。

这份资源要解决的,就是「PyTorch 深度学习虚拟环境搭建」这件事——从 Anaconda 建环境、装 CUDA/cuDNN、选对 PyTorch 版本,到验证 GPU 是否真的可用。它适合刚入门深度学习、准备跑第一个训练脚本的开发者,也适合手里有多套代码、被依赖冲突折磨过的老手。核心逻辑只有一句话:环境隔离是底线,版本匹配是关键,验证 GPU 是最后一道关。

2. 用 conda 建一个干净的 PyTorch 环境:命令、参数与目录结构

2.1 为什么不复用 base,也不建议用 venv

Anaconda 的 base 环境里预装了 numpy、scipy、jupyter 等一大堆包,看起来方便,实际上是隐患。深度学习框架对 numpy、protobuf、h5py 这些底层库的版本极其敏感,base 里预装的版本往往和你需要的框架版本对不上。一旦你在 base 里pip install覆盖了某个包,jupyter 可能就打不开了,conda 自身的依赖也可能被破坏。

那用 Python 自带的venv行不行?对于纯 CPU 的轻量项目可以,但深度学习场景下不推荐。原因有两个:一是venv只管 Python 包,管不了 CUDA 工具链这种非 Python 依赖;二是 conda 可以同时管理 Python 版本和二进制依赖,装 PyTorch 时能自动拉取匹配的 cudatoolkit,省去手动配环境变量的麻烦。常见做法是:深度学习用 conda 建环境,纯 Web 开发用 venv。

2.2 新建环境的完整命令与参数拆解

打开 Anaconda Prompt(Windows)或终端(Linux/macOS),执行下面这条命令:

# 新建一个名为 pytorch 的环境,指定 Python 3.8 # -n 后面跟环境名,python= 后面跟版本号 conda create -n pytorch python=3.8

这里有几个参数值得说清楚:

  • -n pytorch:-n是--name的缩写,指定环境名称。名字建议用pytorch、torch17这种能看出用途的,别用env1、test,过两个月你自己都忘了是干嘛的。
  • python=3.8:指定 Python 版本。PyTorch 1.7 官方支持 Python 3.6~3.8,选 3.8 是比较稳的。如果你装的是更新的 PyTorch,可以选 3.9 或 3.10,但要注意有些老代码在 3.10 上会有语法兼容问题。
  • 不加python=的话,conda 会用默认版本,可能和你需要的框架不匹配,所以强烈建议显式指定。

执行过程中 conda 会列出将要安装的包,输入y确认。装完后激活环境:

# 激活刚建好的环境 conda activate pytorch # 确认当前 Python 版本和路径 python --version which python # Windows 上用 where python

激活后命令行提示符前面会出现(pytorch),说明你已经进入这个独立环境了。以后在 PyCharm 里配置解释器时,就指向这个环境的 python.exe,路径一般在Anaconda安装目录/envs/pytorch/python.exe。

提示:如果你用的是 Windows 且conda activate报错,先执行conda init然后重开终端。这是 conda 4.6 以后的一个常见初始化问题。

2.3 环境目录里到底放了什么

建完环境后,你可以到Anaconda安装目录/envs/pytorch/下面看一眼。里面会有Lib/site-packages(存放所有 pip 和 conda 装的包)、python.exe(该环境独立的解释器)、Scripts(可执行脚本)。每个环境都是这样一套完整的目录,互不干扰。这也是为什么环境隔离能解决问题——你在这个环境里升级 numpy,另一个环境里的 numpy 纹丝不动。

3. CUDA 与 cuDNN 版本怎么选:从显卡驱动倒推

3.1 先查驱动版本,再决定 CUDA 上限

很多人装 CUDA 的顺序是错的:先下载最新版 CUDA,装完发现显卡驱动不支持,又回头折腾驱动。正确的顺序是从显卡驱动倒推。

在 Windows 上,右键桌面 → NVIDIA 控制面板 → 帮助 → 系统信息 → 组件,可以看到「NVIDIA 驱动程序版本」和「CUDA 版本」两行。这里的 CUDA 版本是驱动最高支持的 CUDA 版本,不是你已经安装的版本。比如显示 CUDA 11.2,意味着你可以装 11.2 及以下的 CUDA,装 11.3 就可能出问题。

Linux 下用命令查:

# 查看显卡驱动版本和支持的最高 CUDA 版本 nvidia-smi

输出右上角会显示CUDA Version: 11.2这样的字样。记住这个数字,它是你的天花板。

3.2 CUDA 11.0 + cuDNN 8.0 的匹配逻辑

原始项目里选的是 CUDA 11.0 + cuDNN 8.0 + PyTorch 1.7.0 + torchvision 0.8.1。这个组合在 2020 年底到 2021 年初是主流配置,现在虽然偏老,但很多实验室的旧代码和预训练模型还锁在这个版本上。

选 CUDA 11.0 的理由是:驱动支持 11.2,11.0 在支持范围内且比 11.2 更成熟,第三方库的兼容性更好。cuDNN 必须和 CUDA 版本对应,CUDA 11.0 对应 cuDNN 8.0.x,装错了会导致 PyTorch 找不到 cuDNN 库。

下载 CUDA 和 cuDNN 时注意:

组件版本下载来源关键注意点
CUDA Toolkit11.0NVIDIA 官网归档页选 runfile 或 exe 本地安装包
cuDNN8.0.xNVIDIA 开发者页面需要注册账号,下载后解压覆盖到 CUDA 目录
PyTorch1.7.0PyTorch 官网 previous-versions复制对应 CUDA 11.0 的安装命令
torchvision0.8.1随 PyTorch 命令一起装版本必须和 PyTorch 匹配

cuDNN 的安装方式是把解压后的bin、include、lib三个文件夹里的内容,分别复制到 CUDA 安装目录的对应文件夹里。这一步容易漏,漏了的话torch.cuda.is_available()会返回 False。

注意:CUDA 安装时如果提示「Visual Studio Integration」失败,可以忽略,那个组件是给 C++ 开发用的,不影响 PyTorch。

3.3 用 conda 装 cudatoolkit 的替代方案

如果你不想手动装 CUDA 和 cuDNN,conda 提供了一个更省事的方案:在环境里直接装cudatoolkit。PyTorch 官方 conda 命令里通常已经包含了这个依赖,比如:

# 用 conda 安装 PyTorch 1.7.0 + CUDA 11.0 的组合 conda install pytorch==1.7.0 torchvision==0.8.1 torchaudio==0.7.0 cudatoolkit=11.0 -c pytorch

这样 conda 会自动帮你处理好 CUDA 运行时库,不需要单独装 CUDA Toolkit 和 cuDNN。缺点是 conda 的 cudatoolkit 只包含运行时,不包含 nvcc 编译器,如果你需要编译自定义 CUDA 算子,还是得装完整的 CUDA Toolkit。常见做法是:纯跑模型用 conda 装 cudatoolkit,要编译扩展就手动装完整 CUDA。

4. 安装 PyTorch 与验证 GPU:命令、镜像源与排错

4.1 从官网复制安装命令的正确姿势

PyTorch 官网的 previous-versions 页面列出了所有历史版本的安装命令。找到 1.7.0 对应的 CUDA 11.0 那一行,复制 conda 或 pip 命令。以 pip 为例:

# 安装 PyTorch 1.7.0 + torchvision 0.8.1,CUDA 11.0 版本 pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

注意+cu110这个后缀,它表示这个 wheel 包是编译了 CUDA 11.0 支持的。如果你装的是不带后缀的版本,那就是 CPU 版,torch.cuda.is_available()会返回 False。这是新手最容易踩的坑之一。

4.2 国内镜像源加速与注意事项

PyTorch 官方源在国内下载速度可能很慢,可以换国内镜像源。但要注意:镜像源同步的包可能不全,尤其是带+cu110这种后缀的 CUDA 版本。如果镜像源里找不到对应版本,还是得回官方源。

常用的镜像源:

# 临时使用清华源安装普通包 pip install tensorflow==1.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 永久配置清华源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

可选的镜像源还有阿里云、中科大、豆瓣等。但装 PyTorch CUDA 版时,我一般还是用官方源加-f参数指定 wheel 索引页,因为镜像源对 CUDA 版本的支持不稳定。

4.3 验证脚本:三行代码确认环境是否可用

装完后必须验证。在激活的 pytorch 环境里执行:

# 启动 Python 解释器后逐行输入 import torch # 导入 PyTorch print(torch.__version__) # 输出 PyTorch 版本,应为 1.7.0+cu110 print(torch.cuda.is_available()) # 输出 True 表示 GPU 可用 print(torch.cuda.get_device_name(0)) # 输出显卡型号

如果torch.cuda.is_available()返回 False,按以下顺序排查:

  1. 确认装的是 CUDA 版而不是 CPU 版(看版本号有没有+cu110)。
  2. 确认 CUDA 和 cuDNN 装好了,且 cuDNN 的文件复制到了正确位置。
  3. 确认显卡驱动版本支持所装的 CUDA 版本。
  4. 在命令行执行nvidia-smi,看能否正常输出显卡信息。

4.4 在 PyCharm 里绑定这个环境

PyCharm 新建项目时,解释器选择「Existing interpreter」,然后指向Anaconda安装目录/envs/pytorch/python.exe。绑定后,PyCharm 右下角会显示当前环境名,运行脚本时用的就是这个环境里的包。如果你在 PyCharm 里装包,注意看它用的是不是这个环境的 pip,别装到 base 里去了。

5. 避坑指南:五个让我重装过环境的血泪教训

5.1 坑一:pip 和 conda 混用导致依赖冲突

现象:在 conda 环境里用 pip 装了 PyTorch,又用 conda 装了另一个包,结果 conda 把 PyTorch 的依赖降级了,GPU 不可用。

原因:conda 和 pip 各自维护一套依赖解析逻辑,conda 不知道 pip 装了什么,pip 也不管 conda 的包。混用时容易互相覆盖。

解决:一个环境里尽量只用一种包管理器。装 PyTorch 用 conda 命令就全程 conda,用 pip 就全程 pip。如果必须混用,先用 conda 装完所有 conda 包,最后再用 pip 装 conda 里没有的包。

5.2 坑二:CUDA 版本和 PyTorch 版本不匹配

现象:torch.cuda.is_available()返回 False,或者 import torch 时报undefined symbol错误。

原因:装的是 CUDA 11.0 的 PyTorch,但系统里装的是 CUDA 10.2,或者反过来。

解决:用conda list查看环境里 cudatoolkit 的版本,用nvcc --version查看系统 CUDA 版本,确保两者一致。不一致就重装对应版本的 PyTorch。

5.3 坑三:cuDNN 文件没复制全

现象:PyTorch 能 import,但一跑 GPU 运算就报cuDNN error。

原因:cuDNN 解压后有三个文件夹,只复制了bin里的 dll,忘了复制include和lib。

解决:重新解压 cuDNN,把bin、include、lib三个文件夹的内容分别复制到 CUDA 安装目录的同名文件夹里。复制时选「合并」而不是「替换」。

5.4 坑四:Python 版本选太高导致老代码跑不了

现象:环境建好了,PyTorch 也装上了,但跑项目代码时报语法错误或某个包没有对应版本的 wheel。

原因:选了 Python 3.10 或 3.11,但项目依赖的某个老包只支持到 3.8。

解决:建环境前先看项目requirements.txt或setup.py里有没有 Python 版本限制。没有明确要求的话,深度学习项目选 3.8 是最稳妥的。

5.5 坑五:忘了激活环境就直接装包

现象:装完 PyTorch 后,在 PyCharm 里跑代码提示No module named 'torch'。

原因:装包时没激活 pytorch 环境,装到 base 里去了。

解决:养成习惯,打开终端第一件事就是conda activate pytorch,看到提示符前面有(pytorch)再执行安装命令。装完后用pip show torch确认安装位置在 pytorch 环境的 site-packages 下。

6. 多环境管理与环境迁移的实用技巧

当你手里同时有三四个项目时,环境管理就成了一门必修课。我一般会遵循几个习惯:每个项目一个环境,环境名带项目缩写和框架版本,比如seg-torch17、nlp-tf15。这样一看名字就知道该激活哪个。

查看所有环境用conda env list,删除不用的环境用conda env remove -n 环境名。导出环境配置用conda env export > environment.yml,别人拿到这个文件后执行conda env create -f environment.yml就能复现一模一样的环境。但要注意,environment.yml里会包含本地路径和 pip 装的包,跨平台迁移时可能需要手动调整。

还有一个技巧是给环境瘦身。conda 环境用久了会积累很多缓存和无用包,执行conda clean --all可以清理下载缓存,conda list --revisions可以查看环境的历史版本,必要时用conda install --revision N回滚到某个状态。这相当于给环境装了个后悔药,装错包导致环境崩了可以快速恢复。

最后说一个验证环境是否真的独立的办法:在两个环境里分别执行python -c "import numpy; print(numpy.__version__)",如果输出的版本号不同,说明隔离生效了。如果相同,检查一下是不是两个环境指向了同一个 site-packages。

从那以后我每次新建环境,都会先跑一遍conda env list确认环境建好了,再激活、装包、验证 GPU,最后才打开 PyCharm 写代码。这套流程走下来多花五分钟,但能省掉后面几个小时的排错时间。希望帮到你。

本文还有配套的精品资源,点击获取

返回列表