无法从environment.yml在Conda环境中安装启用GPU的Pytorch

JDR*_*no2 10 python conda pytorch

我在 Ubuntu 20.04 LTS 上安装了 CUDA 11.1(并且工作、使用PATHLD_LIBRARY_PATH配置正确),并且我正在尝试定义一个可重用的 conda 环境(即在文件中environment.yml),以成功安装具有 CUDA 支持的 PyTorch。

但是,当我使用环境文件时,我收到一条消息,指出 Torch 未使用 CUDA 支持进行编译:

Python 3.8.10 | packaged by conda-forge | (default, May 11 2021, 07:01:05)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> device = torch.device("cuda:0")
>>> t = torch.tensor(device=device, data=[0,1,2,3])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/jdr2160/anaconda3/envs/foo/lib/python3.8/site-packages/torch/cuda/__init__.py", line 166, in _lazy_init
    raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled
Run Code Online (Sandbox Code Playgroud)

我的environment.yml很简单:

name: foo
channels:
  - conda-forge
  - nvidia
  - pytorch
dependencies:
  - cudatoolkit=11.1
  - python=3.8
  - pytorch
Run Code Online (Sandbox Code Playgroud)

当我创建一个“空”python 3.8 环境并从命令行而不是从环境文件安装 Conda 包时,一切正常:

$ conda env create --name bar python=3.8
...
$ conda activate bar
$ conda install pytorch cudatoolkit=11.1 -c pytorch -c nvidia
...
$ python
Python 3.8.10 | packaged by conda-forge | (default, May 11 2021, 07:01:05)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> device = torch.device("cuda:0")
>>> t = torch.tensor(device=device, data=[0,1,2,3])
>>>
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这是怎么回事吗?从环境文件安装 PyTorch 时, Conda 似乎没有看到cudatoolkit=11.1依赖关系,但我不知道如何修复它。

JDR*_*no2 14

发布这个问题几分钟后,我就找到了解决方案。事实证明,这与优先考虑 Conda 通道有关。解决方案(Anaconda 没有详细记录)是为cudatoolkitpytorchin指定正确的通道environment.yml

name: foo
channels:
  - conda-forge
  - nvidia
  - pytorch
dependencies:
  - nvidia::cudatoolkit=11.1
  - python=3.8
  - pytorch::pytorch
Run Code Online (Sandbox Code Playgroud)

  • 或者重新排序通道,将“conda-forge”放在底部。 (6认同)