YOLOX环境配置历程
主要过程参照这篇大佬博客,但是期间遇到了诸多问题,尝试配置并最终解决,呜呼。
硬件情况
- rtx3080
- cuda 11.2(nvidia-smi)
- nvcc 10.1
其中nvcc -V
所得的版本是运行时API,而驱动API是11.2的。
于是从创建虚拟环境开始
1 | conda create -n yolox python=3.7 |
因为服务器git并没有配置好(可能是代理问题?),无法直接git clone
到本地,因此从网上下载后解压缩,并且安装必须的包
1 | unzip yolo |
根据上篇博客所言,pytorch版本为1.8可能会出现无法将tensor加载到cuda上的问题,于是卸载pytorch,重装
1 | pip uninstall pytorch |
经过检验,cudatoolkit=11.1
版本可以满足11.2版本的需求,其实只是差了个补丁。好了,看到跑到这里,我还以为基本结束了,但是问题还很多…
NVIDIA混合精度库
然后安装nvidia混合精度库apex
1 | git clone https://github.com/NVIDIA/apex |
第一步其实并没有必要, 因为我下载的包中已经有apex文件夹。
第三步出现问题:
这里提到cuda扩展和pytorch的cuda版本不一致,查阅后才发现,要和runtime cuda版本一致,即nvcc -V
得出的一致,但是更改成10.2版本会导致无法将tensor load到cuda中,因此打算更新cuda
cuda更新
指路官网
按照所给提示
1 | wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run |
第一步下载比较慢
第二部完成后,进入类图形化界面,选择continue
,accept
,并且叉掉驱动安装,最后选择install
.
完成安装,会在/src/local
下发现存在cuda-11.1
文件夹
然后编辑bashrc,增加新版本cuda路径
1 | sudo vim ~/.bashrc |
增加下面三条
1 | export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.1/lib64 |
并且增加环境变量
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' |