0%

yolox_env

YOLOX环境配置历程

主要过程参照这篇大佬博客,但是期间遇到了诸多问题,尝试配置并最终解决,呜呼。

硬件情况

  • rtx3080
  • cuda 11.2(nvidia-smi)
  • nvcc 10.1

其中nvcc -V所得的版本是运行时API,而驱动API是11.2的。

于是从创建虚拟环境开始

1
2
conda create -n yolox python=3.7
activate yolox

因为服务器git并没有配置好(可能是代理问题?),无法直接git clone到本地,因此从网上下载后解压缩,并且安装必须的包

1
2
3
4
5
unzip yolo
cd YOLOX
pip3 install -U pip
pip3 install -r requirements.txt
pip3 install -v -e

根据上篇博客所言,pytorch版本为1.8可能会出现无法将tensor加载到cuda上的问题,于是卸载pytorch,重装

1
2
pip uninstall pytorch
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge

经过检验,cudatoolkit=11.1版本可以满足11.2版本的需求,其实只是差了个补丁。好了,看到跑到这里,我还以为基本结束了,但是问题还很多…

NVIDIA混合精度库

然后安装nvidia混合精度库apex

1
2
3
git clone https://github.com/NVIDIA/apex
cd apex
pip3 install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

第一步其实并没有必要, 因为我下载的包中已经有apex文件夹。

第三步出现问题:

problem

这里提到cuda扩展和pytorch的cuda版本不一致,查阅后才发现,要和runtime cuda版本一致,即nvcc -V得出的一致,但是更改成10.2版本会导致无法将tensor load到cuda中,因此打算更新cuda

cuda更新

指路官网

按照所给提示

1
2
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run
sudo sh cuda_11.1.0_455.23.05_linux.run

第一步下载比较慢

第二部完成后,进入类图形化界面,选择continueaccept,并且叉掉驱动安装,最后选择install.

完成安装,会在/src/local下发现存在cuda-11.1文件夹

然后编辑bashrc,增加新版本cuda路径

1
sudo vim ~/.bashrc

增加下面三条

1
2
3
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.1/lib64
export PATH=$PATH:/usr/local/cuda-11.1/bin
export CUDA_HOME=/usr/local/cuda-11.1

并且增加环境变量

1
sudo vim /etc/environment

在第一行的最后添加

1
:/usr/local/cuda-11.1/bin

重新安装

重新运行

1
pip3 install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

出来一大堆信息,掠过,最后安装成功

pycocotools安装

先安装git

1
conda install git

再安装cython和pycocotools

1
pip3 install cython; pip3 install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'