指定CUDA版本却安装PyTorch CPU版的原因及正确安装方法
问题描述
执行以下命令安装PyTorch:
conda install -y -c pytorch -c conda-forge cudatoolkit=11.1 pytorch torchvision torchaudio
但测试CUDA可用性时报错:
(base) brando9~ $ python -c "import torch; print(torch.__version__); print((torch.randn(2, 4).cuda() @ torch.randn(4, 1).cuda()))" 1.13.1 Traceback (most recent call last): File "<string>", line 1, in <module> File "/lfs/ampere4/0/brando9/miniconda/lib/python3.10/site-packages/torch/cuda/__init__.py", line 221, in _lazy_init raise AssertionError("Torch not compiled with CUDA enabled") AssertionError: Torch not compiled with CUDA enabled
查看conda list发现实际安装的是CPU版本的PyTorch:
pytorch 1.13.1 py3.10_cpu_0 pytorch pytorch-mutex 1.0 cpu pytorch torchaudio 0.13.1 py310_cpu pytorch torchvision 0.14.1 py310_cpu pytorch
原因分析
- 依赖解析优先级问题:仅指定
cudatoolkit=11.1时,conda可能因通道优先级、现有环境的依赖冲突,默认选择兼容性更强的CPU版本PyTorch,而非匹配CUDA 11.1的GPU版本。 - 未明确指定PyTorch的CUDA版本:PyTorch的conda包分为CPU和多个CUDA分支,若未通过build标签或关联包明确指定GPU版本,conda会优先选择CPU包。
正确安装方法
1. 清理现有CPU版本(可选但推荐)
先卸载已安装的CPU版PyTorch相关包:
conda remove -y pytorch torchvision torchaudio pytorch-mutex
2. 创建独立环境(避免环境冲突)
新建conda环境隔离依赖,防止与现有环境产生冲突:
conda create -n pytorch113_cuda111 python=3.10 -y conda activate pytorch113_cuda111
3. 安装指定版本的GPU版PyTorch
通过两种方式明确指定GPU版本:
方法一:指定build标签
直接匹配对应CUDA版本的包标签:
conda install -y -c pytorch -c conda-forge cudatoolkit=11.1 pytorch=1.13.1=cuda111* torchvision=0.14.1=cuda111* torchaudio=0.13.1=cuda111*
方法二:使用pytorch-cuda包关联
通过pytorch-cuda自动匹配对应CUDA版本的依赖:
conda install -y -c pytorch -c conda-forge pytorch=1.13.1 torchvision=0.14.1 torchaudio=0.13.1 pytorch-cuda=11.1
4. 验证安装
执行以下命令确认CUDA可用:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.randn(2,4).cuda() @ torch.randn(4,1).cuda())"
若输出True及GPU张量结果,则安装成功。
内容的提问来源于stack exchange,提问作者Charlie Parker
相关产品推荐
相关产品推荐

