apex是NVIDIA用于加速pytorch训练的库,这里记录我配置安装apex库所需的注意及遇到的问题。


基本依赖环境

       在安装apex之前,我们需要基本的python环境以及torch环境。

       python版本目前并没有遇到相关问题,主要问题在与pytotch的版本和cuda版本的问题,这里尤其需要注意的是pytorch的编译版本和计算机上安装的cuda版本要一致,否则就会报以下错误:

ERROR_of_Version

查看cuda版本可以使用指令:


  nvcc -V

根据cuda版本使用对应的cudnn版本:

cuda_cudnn0

cuda_cudnn1

根据cuda版本选择安装合适的pytorch版本:

cuda版本 可用torch版本
7.5 0.4.1, 0.3.0, 0.2.0, 0.1.12-0.1.6
8.0 1.1.0, 1.0.0, 0.4.1
9.0 1.1.0, 1.0.1, 1.0.0, 0.4.1
9.2 1.7.1, 1.7.0, 1.6.0, 1.5.1, 1.5.0, 1.4.0, 1.2.0, 0.4.1
10.0 1.4.0, 1.2.0, 1.1.0, 1.0.1, 1.0.0
10.1 1.7.1, 1.7.0, 1.6.0, 1.5.1, 1.5.0, 1.4.0, 1.3.0
10.2 1.7.1, 1.7.0, 1.6.0, 1.5.1, 1.5.0
11.0 1.7.1, 1.7.0
11.1 1.8.0

相对的,python对应的torch版本及torchvision版本:

torch版本 torchvision版本 python版本
master/nightly master/nightly >=3.6
1.5.0 0.6.0 >=3.5
1.4.0 0.5.0 >=2.7, >=3.5, <=3.8
1.3.1 0.4.2 >=2.7, >=3.5, <=3.7
1.3.0 0.4.1 >=2.7, >=3.5, <=3.7
1.2.0 0.4.0 >=2.7, >=3.5, <=3.7
1.1.0 0.3.0 >=2.7, >=3.5, <=3.7
<=1.0.1 0.2.2 >=2.7, >=3.5, <=3.7

       以上并不完全。使用命令行安装:


  pip install torch==1.7.1 torchvision==0.8.2

  或

  conda install pytorch=1.7.1 torchvision=0.8.2 cudatoolkit=10.1 -c pytorch

查看pytorch编译版本,使用如下代码:


  import torch
  torch.version.cuda


apex安装

使用git下载detectron2,github链接:https://github.com/NVIDIA/apex


  git clone https://github.com/NVIDIA/apex

进入到根目录下,使用下列代码可以进行安装:


  python setup.py install --cuda_ext --cpp_ext
  
  或者
  
  pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

若不想更改pyorch版本,可以有如下方法,进入到apex安装根目录下


  vim setup.py

将第97-105行代码(不一定是这个地方),RuntimError注释掉即可,就不会报torch和cuda编译版本不匹配的错误了

Pytorch1.4.0需要GCC5.0+,1.3.0需要GCC4.9+

如果最后运行的时候出现报错,可能是因为apex版本或者pytorch版本过高,修改apex/apex/amp/utils.py文件中的


  if cached_x.grad_fn.next_functions[1][0].variable is not x:
  
  
  
  if cached_x.grad_fn.next_functions[0][0].variable is not x:

重新安装即可