apex是NVIDIA用于加速pytorch训练的库,这里记录我配置安装apex库所需的注意及遇到的问题。
基本依赖环境
在安装apex之前,我们需要基本的python环境以及torch环境。
python版本目前并没有遇到相关问题,主要问题在与pytotch的版本和cuda版本的问题,这里尤其需要注意的是pytorch的编译版本和计算机上安装的cuda版本要一致,否则就会报以下错误:

查看cuda版本可以使用指令:
nvcc -V
根据cuda版本使用对应的cudnn版本:


根据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:
重新安装即可