最近在复现yolo v8的程序,特记录一下过程
环境:ubuntu18.04+ros melodic
小知识:GPU并行计算能力高于CPU—B站UP主说的
Ubuntu可以安装多个版本的CUDA。如果某个程序的Pyorch需要不同版本的CUDA,不必删除之前的CUDA,可以实现多版本的CUDA切换
一、查看当前PyTorch使用的CUDA版本:
python -c "import torch; print(torch.version.cuda)"
注意:sudo ln -sf libcudnn.so.8.0.5 libcudnn.so.8
1.需要进入conda环境
2.进入conda环境命令:
conda activate ****
3.查看conda环境命令:
conda env list
4.卸载指定conda环境:
conda remove -n 需要删除的环境名 --all
5.创建conda环境:
conda create -n [your_env_name] python=[X.X](2.7、3.6等)
#eg:conda create -n django_env python=3.6
二、假设ubuntu系统已经安装了CUDA,此时需要重新安装另外一个版本(如果你是第一次安装CUDA也没关系,重复下面步骤两次,选择不同的CUDA版本即可)。进入cuda官网,选择需要的版本。
原因:为什么如此麻烦下载多个版本的CUDA呢?因此我们在复现别人代码时,都会看到类似的要求:
Pip install the ultralytics package including all requirements in a Python>=3.8 environment with PyTorch>=1.8.
不同程序需要不同版本的python和pytorch,而pytorch和CUDA之间有一定的对应关系,如果不按要求安装,会造成后续报错,无法复现他人的程序。pytorch和CUDA的对应关系网站:
https://pytorch.org/get-started/previous-versions/
CUDA官网下载:https://developer.nvidia.com/cuda-toolkit
注意:官网页面显示的是最新版本的cuda,点击Resources中的Archive of Previous CUDA Releases,选择之前的版本,例如我这里选择的是CUDA Toolkit 11.1.1 (October 2020), Versioned Online Documentation
点击CUDA Toolkit 11.1.1即可
按照下图进行选择Linux—x86_64—Ubuntu—18.04—runfile(local)
下载方法可以参考我另外一篇博客:ubuntu系统配置CUDA和cuDNN
大致流程如下
安装:复制https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run
到另外一个网页进行下载。
使用如下命令安装
sudo sh cuda_11.1.1_455.32.00_linux.run
后面的步骤为:
1. Q:Existing package manager installation of the driver found. It is strongly │
│ recommended that you remove this before continuing. │
│ Abort │
│ Continue
A:Continu
2. Q:Do you accept the previously read EULA?(accept/decline/quit):
A:accept # 接受协议
3.Q:
│ CUDA Installer │
│ - [X] Driver │
│ [X] 455.32.00 │
│ + [X] CUDA Toolkit 11.1 │
│ [X] CUDA Samples 11.1 │
│ [X] CUDA Demo Suite 11.1 │
│ [X] CUDA Documentation 11.1 │
│ Options │
│ Install
A:
#注意根据提示:[ ]中没有X的即不选择,[X] 表示选择安装,因为已经提前安装了显卡驱动,所以把显卡驱动的安装选项取消掉:
#只有CUDA Toolkit 11.0是必选项,其他可选可不选
# Install进入下一步
4.Q: A symlink already exists at /usr/local/cuda. Update to this installation? │
│ Yes │
│ No
A:N0,选择no,否则会创建一个软连接覆盖之前那个/usr/local/cuda
至此CUDA11.1安装成功
cuda版本切换和环境变量设置
1、在 ~/.bashrc 文件中设置cuda的环境变量内容如下,这样是可以做到cuda版本切换的,通过更换软连接方式:
gedit ~/.bashrc
添加环境变量,在~/.bashrc的最后添加以下内容
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda
保存文件,然后运行命令:
source ~/.bashrc
安装后,在/usr/local路径下,通过ls命令查看是否存在新安装的CUDA目录:
可以看到有之前安装的cuda-11.0和新安装的cuda-11.1
三、安装对应的cuDNN
安装新的版本的CUDA后,还要安装对应的cuDNN。
1、首先下载对应版本的cuDNN
百度搜索cuDNN官网,下载CUDA对应版本的cuDNN
https://developer.nvidia.cn/rdp/cudnn-archive
我下载的是Download cuDNN v8.0.5 (November 9th, 2020), for CUDA 11.1
此处下载:
cuDNN Library for Linux (x86_64)
2、cd到cudnn压缩包所在的文件夹下进行解压等操作:
tar -zxvf cudnn-11.1-linux-x64-v8.0.5.39.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-11.1/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.1/lib64/
sudo chmod a+r /usr/local/cuda-11.1/include/cudnn.h /usr/local/cuda-11.1/lib64/libcudnn*
cd /usr/local/cuda-11.1/lib64/
sudo ln -sf libcudnn.so.8.0.5 libcudnn.so.8
注意:这里cuda-后面的数字根据自己的版本号进行个修改,不知道的话可以Tab补全
四、CUDA版本的切换
1、删除原版本的cuda软连接
sudo rm -rf /usr/local/cuda
2、建立新的指向cuda-11.1的软连接
sudo ln -s /usr/local/cuda-11.1 /usr/local/cuda
3、重新查看当前CUDA版本
cd /usr/local/
stat cuda
五、安装yolo v8所需的pytorch
前几步已经安装好了cuda和cudnn,这里下载对应的pytorch==1.8.0
cuda和pytorch版本关系网址:https://pytorch.org/get-started/previous-versions/
a.创建yolov8的conda环境
conda create -n yolov8 python=3.8
b.进入yolov8的conda环境
conda activate yolov8
c.下载pytorch及对应的torchvision、torchaudio、cudatoolkit等
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
注意:此时报错
/ WARNING conda.core.envs_manager:register_env(50): Unable to register enviroment. Path not writable or missing.
解决办法:这是一个conda新建虚拟环境的权限问题,给予主目录下anaconda3文件权限即可(在主目录下打开终端),执行以下命令。
sudo chown -R dlut anaconda3
其中:dlut是我电脑的名字,根据实际情况修改。
回到之前的终端,重新执行
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
此时,显示了yolov8的conda环境已经成功配置,执行以下命令即可查询到pytorch对应的cuda版本。
python -c "import torch; print(torch.version.cuda)"
显示的是CUDA 11.1。
终于搞定了,完结撒花~~ 接下来正式安装及运行yolov8