【问题标题】:Can't install GPU-enabled Pytorch in Conda environment from environment.yml无法从 environment.yml 在 Conda 环境中安装支持 GPU 的 Pytorch
【发布时间】:2021-09-14 15:38:18
【问题描述】:

我在安装了 CUDA 11.1 的 Ubuntu 20.04 LTS 上(并且工作,PATH 和 LD_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

我的environment.yml 很简单:

name: foo
channels:
  - conda-forge
  - nvidia
  - pytorch
dependencies:
  - cudatoolkit=11.1
  - python=3.8
  - pytorch

当我创建一个“空”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])
>>>

谁能告诉这里发生了什么?从环境文件安装 PyTorch 时,Conda 似乎没有看到 cudatoolkit=11.1 依赖项,但我不知道如何修复它。

【问题讨论】:

    标签: python pytorch conda


    【解决方案1】:

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

    name: foo
    channels:
      - conda-forge
      - nvidia
      - pytorch
    dependencies:
      - nvidia::cudatoolkit=11.1
      - python=3.8
      - pytorch::pytorch
    

    【讨论】:

    • 或者重新排序频道,底部有conda-forge。
    【解决方案2】:

    对于conda 版本:4.10.3、4.11.0

    • conda --version 获取您的版本
    • conda update -n base -c defaults conda 更新你的 conda

    这个对我有用:

    在enviroment.yaml

    name: nlp
    
    channels:
      - pytorch
    
    dependencies:
      - python=3.9
      - numpy=1.21.5
      - pandas=1.3.5
      - spacy=3.2.1
      - tensorflow=2.6.0
      - pytorch=1.10.1
      - cudatoolkit=11.3
    

    在terminal

    conda env create --file environment.yaml
    conda activate nlp # use your env name from enviroment.yaml
    python main.py
    

    在main.py

    import numpy as np
    import pandas as pd
    import spacy
    import tensorflow as tf
    import torch
    
    print(f'np: {np.__version__}')
    print(f'pd: {pd.__version__}')
    print(f'spacy: {spacy.__version__}')
    print(f'tf: {tf.__version__}')
    print(f'torch: {torch.__version__}')
    
    print(f'cuda enable: {torch.cuda.is_available()}')
    print(f'current_device: {torch.cuda.current_device()}')
    print(f'device: {torch.cuda.device(0)}')
    print(f'device_count: {torch.cuda.device_count()}')
    print(f'get_device_name: {torch.cuda.get_device_name(0)}')
    
    

    output

    np: 1.21.5
    pd: 1.3.5
    spacy: 3.2.1
    tf: 2.6.0
    torch: 1.10.1
    cuda enable: True
    current_device: 0
    device: <torch.cuda.device object at 0x0000015156785EB0>
    device_count: 1
    get_device_name: NVIDIA GeForce GTX 1650 Ti
    

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 2020-02-19
      • 2018-07-04
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 2020-08-18
      相关资源
      最近更新 更多