[环境配置]Ubuntu20.04安装Pytorch-Encoding

Ubuntu20.04安装Pytorch-Encoding

    • 1.踩坑记录
    • 2.安装过程
      • 2.1安装CUDA10.0和cudnn
      • 2.2安装Anaconda3
      • 2.3安装ninja
      • 2.4安装PyTorch1.4
      • 2.5安装Pytorch-Encoding
      • 2.6测试
    • 3.其他

网上的教程很少,基本都是2019年或之前的,而且很多坑,所以这里分享一个比较新的安装方法
参考链接:

  1. Pytorch-Encoding(官方Github)
  2. Pytorch-DANet编译历程(主要debug参考)
  3. CUDA安装
  4. Pytorch-Encoding安装

1.踩坑记录

我首先尝试在anaconda创建一个新的虚拟环境安装(安装顺序:CUDA10.0 -> Anaconda3 -> 创建新虚拟环境 -> 安装Pytorch-Encoding),但是最后发现这样会遇到很多bug,这些bug都导致import encoding失败,我把我遇到的但是最后都无法解决的bug列在这里:

  1. Subprocess.CalledProcessError:Command '['ninja','-v']' returned non-zero exit status 1.
    这个问题是我import encoding时遇到的第一个问题,在官方github的issue里也有很多类似问题,这个我的解决方法是找到报错文件将[‘ninja’,’-v’]改成[‘ninja’,’–version’]
  2. no module named 'enclib_cpu' 或者 no module named 'enclib_gpu'
    解决完上个问题,再import encoding就遇到这个问题, 这里参考的是参考链接2的解决方法,需要注意的是如果使用"pip install torch-encoding"在cpu和gpu文件夹下是没有setup.py的,必须从github克隆源文件安装才有。但是我尝试这个方法没有成功,最后在cpu文件夹下编译运行"python setup.py build"会报错

2.安装过程

上面的坑我尝试了好久都解决不了,期间尝试过更换CUDA版本,Python版本,PyTorch版本,都以失败告终,最后灵机一动,尝试在Anaconda默认的base环境里安装,竟然成功了(具体为啥base就可以,我就不深究了,可能还是版本问题,还请大神指点),环境依赖主要参考官方教程,下面把步骤分享给大家

2.1安装CUDA10.0和cudnn

这里参考参考链接3,我是新装的Ubuntu系统,所以之前没有装过CUDA,已经装过的请参考其他教程。要注意的是一定要在安装CUDA之前独立安装显卡驱动,这里我用的命令是sudo ubuntu-drivers autoinstall,否则会出现一些奇怪的问题,比如我直接安装CUDA,重启就会卡在登录界面。注意预先安装了驱动在安装CUDA时就不要再安装了

2.2安装Anaconda3

直接到Anaconda官网下载Python 3.7的64-Bit (x86)Installer (522 MB),我下载下来的文件名是Anaconda3-2020.02-Linux-x86_64.sh。之后安装最好不用root权限,直接bash Anaconda3-2020.02-Linux-x86_64.sh安装到非root用户下,安装时选择默认的选项

2.3安装ninja

参考官方教程
wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip
sudo unzip ninja-linux.zip -d /usr/local/bin/
sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force

2.4安装PyTorch1.4

参考官方教程,在base环境运行conda install pytorch torchvision cudatoolkit=10.0 -c pytorch,如果cudatoolkit选择的是10.0,安装的就是对应的PyTorch最新版本1.4

2.5安装Pytorch-Encoding

参考官方教程,这里注意不要加--pre,直接pip install torch-encoding,我安装后的版本是1.2.0

2.6测试

在base环境pythonimport encoding没有报错说明安装成功,最后把环境依赖的版本列在下面:

  1. gcc / g++ 7.5.0
  2. python 3.7.6
  3. cudatoolkit 10.0.130
  4. ninja 1.8.2
  5. torch 1.4.0 / torchvision 0.5.0
  6. torch-encoding 1.2.0

3.其他

就算按照上面的步骤安装,还是会有一些报错(也可能没有),但都是可以解决的,列在下面以供参考:

  1. subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.
    这个在我重新在普通用户安装Anaconda后出现了(原来安装在/root下,普通用户调用不太方便),重新按照3.3运行了一边就可以了
  2. subprocess.CalledProcessError: Command '['which', 'c++']' returned non-zero exit status 1,这个应该是c++的问题,在报错文件里把c++改成g++,或者在/usr/bin里创建软连接ln -s g++ c++

你可能感兴趣的:(环境配置,python,linux,ubuntu)