news 2026/9/3 15:56:53

用Anaconda搭建PyTorch CPU与GPU双环境:从安装到验证

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用Anaconda搭建PyTorch CPU与GPU双环境:从安装到验证

很多刚开始接触 PyTorch 的同学,最先遇到的其实不是模型跑不通,而是环境装不上。打开教程,第一步让你装 Anaconda,第二步让你建虚拟环境,第三步装 CUDA 版 PyTorch,然后命令行报错一个接一个,最后连import torch这句代码长什么样都没见到。

这次我们直接把这个过程走完。目标是让一台电脑里同时存在两套 PyTorch 环境:一套 CPU 版,负责日常跑通代码、写实验、做调试;一套 GPU 版,负责真正的模型训练和推理。两者通过 Anaconda 的虚拟环境随时切换,互不干扰。再配合一个顺手能用的编辑器,把“装环境—写代码—跑训练—看结果”这条链路一次性拉通。

文章只讲能落地的事。每一条命令都能直接复制,每个步骤都给判断标准,装完哪一步、看到什么输出算成功,失败又该去哪里排查。不想在配环境上反复折腾的话,这篇可以直接收藏。

1. 核心能力速览

先给一张总表,搞清楚这套组合能做什么。

能力项说明
核心工具Anaconda(Python 环境与包管理)、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 activate,Linux 同样支持,但部分终端需要先执行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

新环境不必追求最新 Python,PyTorch 对高版本 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.cn

5. PyTorch 双版本环境搭建

这一节是核心。目标很明确:创建两个 conda 环境,一个装 CPU 版 PyTorch,一个装 GPU 版 PyTorch。

5.1 创建两个虚拟环境

打开 Anaconda Prompt 或系统终端,输入:

conda create -n torch-cpu python=3.10

这里torch-cpu是环境名,python=3.10指定 Python 版本。等待 conda 分析依赖并下载基础包,输入y确认安装。

同理创建 GPU 环境:

conda create -n torch-gpu python=3.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 扩展后,按Ctrl+Shift+P,输入Python: Select Interpreter,可以看到当前所有 conda 环境。选择torch-gpu作为当前项目的解释器。

新建test.py

import torch x = torch.tensor([1.0, 2.0, 3.0]) y = x * 2 print(y) print(f"CUDA 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应为False,GPU 环境下应为True。如果反了,说明解释器选择错误或安装版本不对。

7.2 GPU 计算验证

在 GPU 环境中执行:

import torch x = torch.randn(10000, 10000, device="cuda") 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(), lr=0.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(f"step {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_size=32, shuffle=True) for batch_idx, (data, target) in enumerate(dataloader): print(f"batch {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_sizenum_workers、输入分辨率和训练步数。num_workers控制 DataLoader 使用的子进程数量,加大它可以加快数据读取,但也会提升内存占用。显存不足时优先降低batch_size,而不是换显卡。

CPU 与 GPU 的差异主要体现在大规模矩阵计算上。CPU 版适合小批量测试和代码逻辑验证,GPU 版适合真正的训练任务。同一个模型,在 GPU 上训练一轮的速度通常远快于 CPU,但小模型、小数据量时差异不明显。

优化建议:

  • 设置torch.set_num_threads(4)限制 CPU 环境线程数,避免资源争抢。
  • 在 GPU 环境中,优先使用torch.cuda.amp混合精度训练。
  • 使用pin_memory=Truenon_blocking=True优化数据搬运。
  • 训练结束后及时调用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 pythonpython -V确认 conda 环境激活,或在编辑器中切换解释器
CUDA 可用性为 False安装的是 CPU 版,或 CUDA 版本与驱动不匹配执行nvidia-smi查看驱动版本在 GPU 环境重新安装匹配的 CUDA 版 PyTorch
运行时报显存不足batch_size 过大或模型输入尺寸过大观察报错中的显存数字降低 batch_size,缩小输入尺寸或使用混合精度
VS Code 选了环境但仍报错终端未跟随解释器切换查看终端顶部环境名称手动执行conda activate torch-gpu,或重启 VS Code
端口被占用服务端口冲突查看报错端口号换端口启动,如 Jupyter 增加--port=8899
同一个环境装了多个版本的 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-cputorch-gpunlp-transformerscv-yolov8,方便多个项目之间区分。不要所有项目共用一个环境,否则依赖冲突迟早会出现。

第二,每次安装新包前先确认当前环境。在终端中输入:

conda env list

可以快速看到当前激活的环境。也可以观察命令行的提示符,环境名通常显示在最前面。不确认环境直接pip install,很容易把包装到错误的 Python 空间里。

第三,项目文件按目录分离。建议将代码、数据、模型分别放在srcdatamodels目录中,不要把所有文件都塞在环境目录下。环境目录是运行时组件,不应该混入项目文档。

第四,批量任务要留日志。PyTorch 训练不会因为日志缺失而出错,但排查问题时会非常困难。建议在训练脚本中加入 checkpoint 保存机制,每 N 轮保存一次模型权重。如果训练中断,可以从最近一次保存的权重继续。

torch.save(model.state_dict(), f"model_epoch_{step}.pth")

第五,接口服务要注意访问权限。将 FastAPI、Flask 等服务绑定到127.0.0.1而不是0.0.0.0,可以避免局域网内其他设备直接访问。如果确需远程访问,也要加上 token 或鉴权机制。

第六,注意合规授权。使用开源数据集时确认许可证类型;使用人脸、声音、版权图像进行训练或生成时,必须确保已获得相应授权。本地训练和推理应当在测试环境内验证效果,发布或商用前需要做二次复核。

最后,第一次跑通时建议只跑一个最小示例。不要一上来就挂一个大规模模型训练任务,先验证环境、验证数据加载、验证梯度能够正确传播,再逐步放大任务规模。这样即使后面出问题,也能快速定位是环境问题还是代码问题。

这篇教程最值得留下的核心内容其实只有三句话:用 Anaconda 创建独立环境,CPU 环境和 GPU 环境分开安装,编辑器选中对应解释器就能直接跑。剩下的事情,无非是在这个基础上不断扩展项目。建议把上面这些命令保存下来,下次重装系统或换电脑时,能省下大量查资料的时间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 15:56:51

JFET放大电路波形削底?夹断电压离散性分析与稳健设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 15:55:16

.NET 10 API 部署 Ubuntu 服务器实战:从发布到 systemd 托管与 Nginx 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 15:54:01

Windows Server 2012 R2 系统安装详细步骤

一.下载镜像文件二.具体步骤选择第二个,带图形化界面自定义小太阳图标-新建默认应用即可下一步设置密码安装VMtools

作者头像 李华
网站建设 2026/9/3 15:53:29

Rust项目如何制定LLM代码贡献政策:平衡效率与质量

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 15:50:47

微通风系统窗技术全解析:原理、选购与安装实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 15:50:10

mcpack安装失败原因:源码包构建原理与正确安装路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华