python conda正确安装cuda版本的pytorch
通过python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 安装cuda版本的pytorch始终是cpu版本的: torch 2.12.0 torchaudio 2.11.0 torchvision 0.27.0上上述的这个问题非常典型。根本原因在于,使用的命令中虽然指定了正确的 CUDA 索引,但pip可能从其他配置(如镜像源)安装了 CPU 版本。
从上面的torch 2.12.0版本号来看,安装的极有可能是torch 2.5.1或2.4.0,而2.12.0是一个尚不存在的未来版本,这本身就表明安装过程可能出现了某种混乱。
🎯 核心问题:被“镜像源”干扰了
PyTorch 的官方 CUDA 版本托管在专用服务器上,而绝大多数国内镜像源(如清华、阿里云)默认只同步 CPU 版本。当你同时使用镜像源时,pip可能会优先从镜像源获取被标记为最新版本的 CPU 包,而忽略你指定的 CUDA 索引。
✅ 解决方案:彻底重装(三选一)
这里提供三种解决方案,强烈建议从方法一开始尝试,这是最干净且成功率最高的。
方法一:使用 Conda 安装(最推荐,成功率最高)
Conda 处理 CUDA 依赖的能力比 pip 强很多,能自动处理好版本匹配问题,几乎不会出现装成 CPU 版本的情况。
- 打开终端。
- (可选,但强烈推荐)创建新环境:
conda create-nyolov8_envpython=3.9-yconda activate yolov8_env - 运行官方安装命令(以 CUDA 12.1 为例):
condainstallpytorch torchvision torchaudio pytorch-cuda=12.1-cpytorch-cnvidia
方法二:纯净的 Pip 安装(需确保无镜像源干扰)
这个方法的关键在于,要确保你的pip配置文件里没有默认设置镜像源。
彻底卸载旧版本:
pip uninstall torch torchvision torchaudio-y查看并清除 pip 镜像源配置:
- 检查
pip config list,如果看到global.index-url指向某个镜像,暂时将其重命名或删除配置文件。 - 这是非常重要的一步,否则即使执行官方命令,也可能会从镜像源下载 CPU 版本。
- 检查
重新安装(不添加任何额外镜像源参数):
pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121注意:如果速度很慢,可以加上
--default-timeout=1000延长超时时间,或者直接使用下面的本地安装法。
方法三:本地 Wheel 文件安装(最稳妥,无网络问题)
如果上述两种方法都因为网络问题而速度极慢或失败,可以手动下载文件进行安装。
- 访问 PyTorch 官方 Wheel 库:打开 https://download.pytorch.org/whl/cu121
- 找到匹配你系统的文件:
- Python 版本:
cp39代表 Python 3.9,cp310代表 Python 3.10,以此类推。 - 操作系统:
win_amd64(Windows),linux_x86_64(Linux),macosx_...(Mac)。 - 你需要同时下载
torch、torchvision、torchaudio三个文件。
- Python 版本:
- 在下载目录打开终端,按顺序安装:
# 先安装 torch,再安装后两个pipinstalltorch-2.4.1+cu121-cp310-cp310-win_amd64.whl pipinstalltorchvision-0.19.1+cu121-cp310-cp310-win_amd64.whl pipinstalltorchaudio-2.4.1+cu121-cp310-cp310-win_amd64.whl
✅ 验证成功的标准
安装完成后,运行以下命令进行验证。只有当torch.cuda.is_available()返回True时,才表示安装成功。
importtorchprint(f"PyTorch 版本:{torch.__version__}")print(f"CUDA 是否可用:{torch.cuda.is_available()}")# 必须输出 Trueiftorch.cuda.is_available():print(f"CUDA 版本:{torch.version.cuda}")print(f"GPU 型号:{torch.cuda.get_device_name(0)}")