我在环境中安装了以下内容:
cudatoolkit=11.3
pytorch=1.11.0
torchvision=0.12.0
但是当我询问 torch/cuda 版本时,我得到了这个:
$ python3 -c "import torch; print(torch.__version__)"
1.12.1+cu102
这不是我想要的(1.12.1 就可以了,但是 cu102 太旧了)。再进一步看,我看到了这个:
$ conda list torch
# packages in environment at /home/ml/anaconda3/envs/ldm:
#
# Name Version Build Channel
pytorch 1.11.0 py3.8_cuda11.3_cudnn8.2.0_0 pytorch
pytorch-lightning 1.4.2 pypi_0 pypi
pytorch-mutex 1.0 cuda pytorch
torch 1.12.1 pypi_0 pypi
torch-fidelity 0.3.0 pypi_0 pypi
torchdiffeq 0.2.3 pypi_0 pypi
torchmetrics 0.6.0 pypi_0 pypi
torchvision 0.12.0 py38_cu113 pytorchcode
所以“pytorch”有我想要的版本(带有cuda11.3),但“torch”是1.12.1。为什么?此外,“torch”似乎不是 conda 包(尝试安装时出现 PackagesNotFoundError),这令人惊讶,因为它出现在“conda list”中。
显然我对 conda / pytorch 有一些不明白的地方。有人可以解释一下吗?
所以最后那个“torch”假(?)包是我之前安装的pytorch和cuda(带有pip)。 conda 安装实际上使 pip 不再工作(“导入火炬”在环境之外无法工作)。这更奇怪,因为我对虚拟环境的理解是它至少应该不影响外面的东西。
解决办法是用pip(环境外)重新安装pytorch。之后,“导入火炬”在环境内部起作用。这又很奇怪,因为 conda 安装了他自己版本的 pytorch,显然最终没有使用它。
我认为这是一个“答案”,因为它解决了我遇到的问题,但我仍然不明白为什么 conda 会这样。
据我所知,
torch
包使用LuaRocks包管理器。如果你主要在 python 中使用它,你应该瞄准“PyTorch”,conda 只处理它。
对于您的情况,我强烈建议您创建一个新环境并从头开始重新安装 PyTorch 及其组件。阅读此兼容性矩阵并尝试根据这些表进行安装。
有类似的问题,希望了解conda的人可以回答这个问题。