用Anaconda搭建PyTorch CPU与GPU双环境:从安装到验证
发布时间:2026/9/3 15:56:58 作者:尧图编辑部 阅读量:1,286

很多刚开始接触 PyTorch 的同学最先遇到的其实不是模型跑不通而是环境装不上。打开教程第一步让你装 Anaconda第二步让你建虚拟环境第三步装 CUDA 版 PyTorch然后命令行报错一个接一个最后连import torch这句代码长什么样都没见到。这次我们直接把这个过程走完。目标是让一台电脑里同时存在两套 PyTorch 环境一套 CPU 版负责日常跑通代码、写实验、做调试一套 GPU 版负责真正的模型训练和推理。两者通过 Anaconda 的虚拟环境随时切换互不干扰。再配合一个顺手能用的编辑器把“装环境—写代码—跑训练—看结果”这条链路一次性拉通。文章只讲能落地的事。每一条命令都能直接复制每个步骤都给判断标准装完哪一步、看到什么输出算成功失败又该去哪里排查。不想在配环境上反复折腾的话这篇可以直接收藏。1. 核心能力速览先给一张总表搞清楚这套组合能做什么。能力项说明核心工具AnacondaPython 环境与包管理、PyTorch深度学习训练与推理框架、编辑器VS Code 或 PyCharm目标结构一台电脑同时具备 PyTorch CPU 版和 GPU 版两套独立环境环境隔离方式conda 虚拟环境不同项目使用不同 Python 版本与依赖包支持平台Windows / Linux / macOS按官方安装包选择对应版本启动方式命令行启动、Anaconda Navigator 图形界面启动、编辑器内直接切换解释器是否支持接口 API环境搭好后可用 FastAPI、Flask 等自行封装推理服务PyTorch 本身不限制是否支持批量任务支持。通过 PyTorch DataLoader 可完成批量训练、批量推理适合读者刚接触 PyTorch、被环境问题劝退、需要同时维护 CPU 与 GPU 环境的开发者这里的核心思路不是只装一个 PyTorch而是先理解“为什么要用 Anaconda 管环境”。下面逐步展开。2. 适用场景与使用边界这套方案适合以下场景。第一类是本地学习与验证。你只是想跑通一个示例代码、看一下张量输出、测试某个模型结构能不能 forward这时候不需要 GPU 参与。CPU 环境加载模型更快也不会因为显存不够报错。第二类是真实模型训练。进入训练阶段后数据量变大、网络变深CPU 算力明显不够。此时切换到 GPU 环境通过 CUDA 调用显卡加速。两套环境并存就是为了让“实验”和“训练”走不同的运行通道。第三类是项目隔离。你同时做图像分类和自然语言处理两个项目依赖的 torchvision、transformers 版本可能互相冲突。conda 虚拟环境可以为每个项目单独建一个空间避免“装 A 库把 B 库搞坏”的连锁反应。使用边界同样明确。Anaconda 解决的是 Python 包关系和运行环境问题它不解决 CUDA 驱动版本与 PyTorch 不匹配的问题也不解决模型本身不收敛、数据标注有误、显存容量不够的问题。简单说环境工具只保证你能启动程序不保证你的程序一定训练得好。另外要提醒一点在安装深度学习框架和后续处理训练数据、模型文件时务必使用已获得授权的数据与模型。涉及人脸、声音、版权图像等内容时要确认来源合法不要在未授权的前提下批量处理或生成内容。3. 环境准备与前置条件安装之前先花十分钟确认电脑现状能省掉后面大量排错时间。3.1 操作系统Windows 建议使用 Windows 10/11 的 64 位版本。Linux 建议使用 Ubuntu 18.04 之后的发行版服务器场景常用。macOS 也能装 Anaconda 和 CPU 版 PyTorch但 GPU 支持受限Apple Silicon 芯片需要参考 PyTorch 官方对 MPS 后端的支持情况。后续命令以 Windows 为例Linux/macOS 的主要差异在于激活环境的命令例如 Windows 用conda activateLinux 同样支持但部分终端需要先执行source ~/.bashrc。3.2 显卡与 CUDA 驱动想用 GPU 版 PyTorch先看显卡。NVIDIA 显卡用户可以在命令行输入nvidia-smi如果命令能执行说明驱动已装。输出里的CUDA Version是当前驱动支持的最高 CUDA 版本例如显示CUDA Version: 12.x说明驱动可以支持 11.x、12.x 等较新的 CUDA 运行时。注意安装 PyTorch 时选择的 CUDA 版本要和驱动兼容不需要完全等于驱动显示的数字通常选择不高于驱动支持最高版本的 CUDA 版本更稳妥。如果命令报“不是内部或外部命令”说明 NVIDIA 驱动未安装或未加入 PATH需要先装驱动。AMD 显卡、Intel 显卡的情况相对复杂建议直接去 PyTorch 官方安装页查询对应指令不要照搬 NVIDIA 的命令。查看 Python 版本python --version新环境不必追求最新 PythonPyTorch 对高版本 Python 的适配存在滞后。更稳妥的选择是 Python 3.9 或 3.10这也是目前大部分深度学习项目、第三方库兼容最好的区间。3.3 磁盘空间Anaconda 本体约 3 GB 到 5 GB一个 PyTorch 虚拟环境大约需要 3 GB 到 8 GB 空间。如果还计划保存模型权重和数据集建议预留至少 30 GB。磁盘不足时安装到一半报错的情况很常见。4. Anaconda 安装部署Anaconda 的核心价值是环境管理。它自带的 conda 命令可以创建多个互相隔离的 Python 环境每个环境有自己的 Python 版本和第三方库。这比直接在系统 Python 里pip install安全得多。4.1 下载与安装进入 Anaconda 官方网站下载页面选择与操作系统匹配的版本。如果只想用 conda 管理环境、不要预装大量科学计算包也可以选择 Miniconda体积更小安装更快。安装时注意几点安装在纯英文路径下不要包含中文目录。安装过程中选择“为当前用户安装”避免权限问题。安装完成后打开新的终端窗口输入conda --version正常会输出 conda 版本号。如果conda命令无法识别说明安装时没有加入 PATH。可以手动把 Anaconda 安装目录下的Scripts和根目录加入系统环境变量也可以在开始菜单中重新打开 Anaconda Prompt 使用后者会自动加载环境变量。4.2 更换国内镜像源国内网络环境下从官方源下载 pytorch 这类大型包速度可能很慢。建议配置清华镜像源加速 conda 和 pip 的下载。这里给出 conda 的镜像配置方式conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ conda config --set show_channel_urls yes配置完成后执行conda clean -i刷新索引缓存。之后安装会优先从镜像源拉取。pip 也可以配置镜像源。在用户目录下新建pip文件夹写入pip.ini文件[global] index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple trusted-host mirrors.tuna.tsinghua.edu.cn5. PyTorch 双版本环境搭建这一节是核心。目标很明确创建两个 conda 环境一个装 CPU 版 PyTorch一个装 GPU 版 PyTorch。5.1 创建两个虚拟环境打开 Anaconda Prompt 或系统终端输入conda create -n torch-cpu python3.10这里torch-cpu是环境名python3.10指定 Python 版本。等待 conda 分析依赖并下载基础包输入y确认安装。同理创建 GPU 环境conda create -n torch-gpu python3.10创建完成后可以通过conda env list查看当前已有环境。带星号的是当前激活的环境。5.2 安装 CPU 版本 PyTorch激活 CPU 环境conda activate torch-cpu确认当前环境python -V此时python指向torch-cpu环境下的解释器而不是系统的 Python。CPU 版 PyTorch 安装命令以 PyTorch 官网给出的命令为准。当前官网通常提供类似结构pip install torch torchvision torchaudio也可以使用 conda 安装。注意两点第一CPU 版不含 CUDA 相关库安装包体积更小第二如果是在 Windows 上建议优先使用 pip 安装官方预编译包兼容性更好。安装完成后在 Python 中验证python进入交互式环境后输入import torch print(torch.__version__) print(torch.cuda.is_available())如果输出版本号并且torch.cuda.is_available()为False这是正常的因为 CPU 环境本来就不启用 CUDA。5.3 安装 GPU 版本 PyTorch退出当前 Python执行conda deactivate激活 GPU 环境conda activate torch-gpu然后根据显卡驱动支持的 CUDA 版本在 PyTorch 官网选择对应安装命令。例如驱动支持 CUDA 12.x 时官网会给出类似命令pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121这里cu121表示 CUDA 12.1 的预编译版本。不同时代官网会提供不同的 CUDA 版本例如 cu118、cu121、cu124 等。选择原则是不要超过驱动支持的最高版本。GPU 版安装包体积明显更大等待时间取决于网速。安装完成后同样进入 Python 验证import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0))如果torch.cuda.is_available()输出为True并且get_device_name能显示显卡型号说明 GPU 环境可用。5.4 双环境切换机制双版本的核心优势是切换成本几乎为零。运行日常训练前conda activate torch-gpu调试 CPU 代码或模型结构时conda activate torch-cpu切换后torch会对应不同环境的安装版本互不干扰。也可以通过 Anaconda Navigator 图形界面切换选中环境后点击“Open Terminal”会自动进入该环境。6. 编辑器配置与开发验证环境配好之后需要一个编辑器来写代码、跑脚本、看输出。这里给出 VS Code 和 PyCharm 两种常见配置方式二选一即可。6.1 VS Code 配置VS Code 安装 Python 扩展后按CtrlShiftP输入Python: Select Interpreter可以看到当前所有 conda 环境。选择torch-gpu作为当前项目的解释器。新建test.pyimport torch x torch.tensor([1.0, 2.0, 3.0]) y x * 2 print(y) print(fCUDA available: {torch.cuda.is_available()})在终端运行python test.py如果输出包含tensor([2., 4., 6.])说明解释器选择正确、PyTorch 可以正常使用。VS Code 的另一个优势是终端自动联动。打开 VS Code 内置终端时它会自动激活当前选择的 conda 环境省去手动conda activate的步骤。这个功能要在设置中确认“Python Terminal: Activate Environment”处于开启状态。6.2 PyCharm 配置PyCharm 中新建项目进入File - Settings - Project - Python Interpreter点击设置图标选择Add Interpreter - Conda Environment选择Existing environment并指定torch-gpu。也可以直接在 PyCharm 新建一个 conda 环境但既然我们已经创建好了两个环境建议直接复用。配置完成后右下角状态栏会显示当前解释器路径。运行同一个测试脚本看到torch输出即表示成功。6.3 编辑器选择建议VS Code 适合轻量编辑、快速跑脚本、配合 Jupyter Notebook 使用。PyCharm 适合大型项目、多人协作、断点调试。两者都不是必须的但配置好一个编辑器之后跑实验会顺畅很多。如果不习惯这两个编辑器也可以使用 Jupyter Notebook。在环境中执行conda activate torch-gpu pip install jupyter jupyter notebook它会在浏览器中打开交互式笔记本适合逐步调试代码。7. 功能测试与效果验证环境搭好后必须有验证环节。下面给出一套从“环境信息”到“真实计算”的测试流程照着做就能确认整条链路是否可用。7.1 环境信息检查运行以下脚本打印依赖版本和计算设备信息import platform import torch print(Python 版本:, platform.python_version()) print(PyTorch 版本:, torch.__version__) print(能否使用 CUDA:, torch.cuda.is_available()) if torch.cuda.is_available(): print(显卡名称:, torch.cuda.get_device_name(0)) print(显存总量:, torch.cuda.get_device_properties(0).total_memory / 1024**3, GB)输出中CPU 环境下能否使用 CUDA应为FalseGPU 环境下应为True。如果反了说明解释器选择错误或安装版本不对。7.2 GPU 计算验证在 GPU 环境中执行import torch x torch.randn(10000, 10000, devicecuda) y torch.matmul(x, x) print(GPU 矩阵乘法完成结果形状, y.shape)这个脚本会在 GPU 上创建 1 万个 10000×10000 的随机矩阵并进行乘法。能顺利执行且不报显存错误说明 CUDA 计算链路可用。显存占用观察方式取决于操作系统。Windows 可以使用任务管理器中的“性能”标签查看 GPU 专用显存使用情况也可以使用nvidia-smi命令观察进程占用的显存。显存占用受批次大小、输入尺寸影响具体数值以实际运行脚本为准。此时观察 GPU 的利用率如果从 0% 跳到较高值说明确实在调用显卡计算。7.3 简单模型训练测试验证完整训练流程可以写一个极简线性回归样例import torch import torch.nn as nn import torch.optim as optim model nn.Linear(10, 1) loss_fn nn.MSELoss() optimizer optim.SGD(model.parameters(), lr0.01) x torch.randn(64, 10) y torch.randn(64, 1) for step in range(100): optimizer.zero_grad() pred model(x) loss loss_fn(pred, y) loss.backward() optimizer.step() if step % 20 0: print(fstep {step}, loss: {loss.item():.6f})能看到 loss 数值且能持续打印说明“前向传播—反向传播—参数更新”这条链路没问题。7.4 批量任务验证思路实际训练时我们需要对大量数据分批处理。PyTorch 用DataLoader实现批量加载from torch.utils.data import TensorDataset, DataLoader dataset TensorDataset(torch.randn(1000, 10), torch.randn(1000, 1)) dataloader DataLoader(dataset, batch_size32, shuffleTrue) for batch_idx, (data, target) in enumerate(dataloader): print(fbatch {batch_idx}: data shape {data.shape}, target shape {target.shape})这段代码说明环境支持批量数据读取。后续接入自己的数据集时只需要把TensorDataset替换为自定义 Dataset。7.5 接口服务扩展深度学习环境本身是一套 Python 运行空间可以承载 Web 服务。比如使用 FastAPI 封装一个简单的推理接口from fastapi import FastAPI import torch app FastAPI() model torch.nn.Linear(10, 1) app.post(/predict) def predict(data: list[float]): tensor torch.tensor(data).reshape(1, -1) result model(tensor).item() return {prediction: result}这是一个示例体现“环境搭好之后可以继续接 API 服务”的思路。实际项目中需要加载训练好的权重文件并设计请求字段与异常处理。8. 资源占用与性能观察环境安装完毕后系统会产生多种资源占用。了解它们能帮助你判断问题出在哪一层。Anaconda 本身会常驻少量后台进程但它不会一直占用大量 CPU。真正占用资源的是 Python 解释器和 PyTorch 计算。CPU 环境跑模型时CPU 使用率会上升GPU 环境跑模型时显存和 GPU 利用率上升CPU 使用率相对不高。PyTorch 中影响性能的关键参数包括batch_size、num_workers、输入分辨率和训练步数。num_workers控制 DataLoader 使用的子进程数量加大它可以加快数据读取但也会提升内存占用。显存不足时优先降低batch_size而不是换显卡。CPU 与 GPU 的差异主要体现在大规模矩阵计算上。CPU 版适合小批量测试和代码逻辑验证GPU 版适合真正的训练任务。同一个模型在 GPU 上训练一轮的速度通常远快于 CPU但小模型、小数据量时差异不明显。优化建议设置torch.set_num_threads(4)限制 CPU 环境线程数避免资源争抢。在 GPU 环境中优先使用torch.cuda.amp混合精度训练。使用pin_memoryTrue与non_blockingTrue优化数据搬运。训练结束后及时调用del variable并回收显存必要时执行torch.cuda.empty_cache()。显存不够时也可以考虑使用 CPU 环境完成数据预处理再切换到 GPU 环境训练模型。9. 常见问题与排查方法下面是这套环境搭建中最容易踩的坑按“现象—原因—排查—解决”列出。问题现象可能原因排查方式解决方案conda命令无法识别安装时未加入 PATH在终端输入where conda使用 Anaconda Prompt 或手动加入环境变量安装包下载速度极慢官方源网络延迟高观察进度条卡住的位置配置清华镜像源conda create报 404 错误conda 镜像源配置问题频道不可用执行conda info查看 channel 配置重新执行conda config --remove-key channels并重新配置镜像源import torch提示找不到模块当前环境不是 PyTorch 所在环境执行which python或python -V确认 conda 环境激活或在编辑器中切换解释器CUDA 可用性为 False安装的是 CPU 版或 CUDA 版本与驱动不匹配执行nvidia-smi查看驱动版本在 GPU 环境重新安装匹配的 CUDA 版 PyTorch运行时报显存不足batch_size 过大或模型输入尺寸过大观察报错中的显存数字降低 batch_size缩小输入尺寸或使用混合精度VS Code 选了环境但仍报错终端未跟随解释器切换查看终端顶部环境名称手动执行conda activate torch-gpu或重启 VS Code端口被占用服务端口冲突查看报错端口号换端口启动如 Jupyter 增加--port8899同一个环境装了多个版本的 torchpip 与 conda 混装导致版本覆盖执行 pip listfindstr torch针对unavailableinvalidchannel: http 404 not found for channel anaconda/pkgs/msys这类问题直接删除引起异常的频道配置conda config --remove-key channels conda clean -i然后重新添加可靠的镜像地址。10. 最佳实践与使用建议这套环境配置要长期好用有几个工程化习惯建议尽早养成。第一环境名精确对应项目。创建环境时建议使用能够描述用途的名称比如torch-cpu、torch-gpu、nlp-transformers、cv-yolov8方便多个项目之间区分。不要所有项目共用一个环境否则依赖冲突迟早会出现。第二每次安装新包前先确认当前环境。在终端中输入conda env list可以快速看到当前激活的环境。也可以观察命令行的提示符环境名通常显示在最前面。不确认环境直接pip install很容易把包装到错误的 Python 空间里。第三项目文件按目录分离。建议将代码、数据、模型分别放在src、data、models目录中不要把所有文件都塞在环境目录下。环境目录是运行时组件不应该混入项目文档。第四批量任务要留日志。PyTorch 训练不会因为日志缺失而出错但排查问题时会非常困难。建议在训练脚本中加入 checkpoint 保存机制每 N 轮保存一次模型权重。如果训练中断可以从最近一次保存的权重继续。torch.save(model.state_dict(), fmodel_epoch_{step}.pth)第五接口服务要注意访问权限。将 FastAPI、Flask 等服务绑定到127.0.0.1而不是0.0.0.0可以避免局域网内其他设备直接访问。如果确需远程访问也要加上 token 或鉴权机制。第六注意合规授权。使用开源数据集时确认许可证类型使用人脸、声音、版权图像进行训练或生成时必须确保已获得相应授权。本地训练和推理应当在测试环境内验证效果发布或商用前需要做二次复核。最后第一次跑通时建议只跑一个最小示例。不要一上来就挂一个大规模模型训练任务先验证环境、验证数据加载、验证梯度能够正确传播再逐步放大任务规模。这样即使后面出问题也能快速定位是环境问题还是代码问题。这篇教程最值得留下的核心内容其实只有三句话用 Anaconda 创建独立环境CPU 环境和 GPU 环境分开安装编辑器选中对应解释器就能直接跑。剩下的事情无非是在这个基础上不断扩展项目。建议把上面这些命令保存下来下次重装系统或换电脑时能省下大量查资料的时间。