我有一个新安装的Anaconda3(版本2020.02)环境,并且我已经通过命令
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
安装了Pytorch GPU版本。我已经验证我的 Pytorch 确实在 GPU 上运行良好。
但是,每当我通过
conda update --all
更新 Anaconda 时,总是会显示以下消息:
The following packages will be SUPERSEDED by a higher-priority channel:
pytorch pytorch::pytorch-1.5.0-py3.7_cuda102_~ --> pkgs/main::pytorch-1.5.0-cpu_py37h9f948e0_0
也就是说,它一直想把我的GPU版本Pytorch替换成CPU版本。我试过,如果继续更新,会安装CPU版本的Pytorch,而我之前在GPU上的Pytorch代码无法再运行。我也尝试过命令
conda update --all --no-channel-priority
但该消息仍然显示。
据我所知,我从未修改过 Anaconda 通道或添加自定义通道。我怎样才能摆脱这个消息?
就我而言,问题来自 conda 试图将
cudatoolkit
从 11.3 更新到 11.5(这些数字会根据您阅读本文的时间而有所不同)。
但是,如果您访问此处:https://pytorch.org/get-started/locally/,您将看到哪个 CUDA 版本与当前 PyTorch 版本兼容(现在 PyTorch 版本是
Stable (1.10.1)
)。从该链接看来,这个版本的 PyTorch 需要 CUDA 11.3
。
这一点已被建议的安装 PyTorch 的单行代码所证实,该单行代码将 cudatoolkit 的版本修复为 11.3:
# (this is not the solution - unless you're doing a fresh install)
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
mamba update --all
的解决方案:固定cudatookit
版本使用conda的
pinned
文件:https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-pkgs.html#preventing-packages-from-updating-pinning
vi /YOUR_PATH_TO/miniconda3/envs/YOUR_ENV_NAME/conda-meta/pinned
# And add a line to limit coodatookit version to 11.3
# (or higher, depending on when you read this - see above)
cudatoolkit<11.4
现在
mamba update --all
不会尝试更新 cudatookit,因此也不会尝试用 CPU PyTorch 替换 GPU PyTorch,因为满足了 cudatookit 11.3 的依赖关系。
我也遇到了类似的问题,优先通道设置也没有帮助我。 我终于发现我可以在修改后的 conda update --all 命令中使用 pytorch 安装参数,如下所示(对于最新版本的 cuda,但可以使用您在原始帖子中设置的参数进行修改来安装 pytorch):
conda更新--all pytorch-cuda=12.4 -c pytorch -c nvidia
对于上面的解决方案,我会尝试:
conda 更新 --all cudatoolkit=11.3 -c pytorch