Ubuntu24.04安装Nvidia驱动、CUDA、Cudnn,并配置Tensorrt模型加速Yolov8部署
本文仅介绍Nvidia驱动、CUDA、Cudnn以及TensorRT一般性通用的安装方法以及他们之间的版本兼容问题。如果要用TensorRT配置加速Yolov8目前开源库仅适配TensorRT 8.x版本该版本最高适配CUDA 11.8版本后续安装CUDA需要注意建议先把各个库之间的版本适配关系理清后再安装。1、安装Nvidia显卡驱动首先终端输入指令nvidia-smi如果没有出现类似下面这样的表则说明还未安装显卡驱动然后终端输入指令查看推荐的显卡驱动ubuntu-drivers devices后面出现recommended字样的这是推荐安装的版本然后直接安装sudo apt update sudo apt install nvidia-driver-580-open -y值得注意的是如果安装Ubuntu24.04系统时Secure Boot是关闭状态则没有什么影响如果是开启状态在安装过程中会出现类似界面表明系统引导的安全启动是打开的需要设置一个秘密重启后验证具体做法按Tab键选中OK回车然后设置密码设置密码后再Tab选中OK回车后再验证密码然后一直等待安装结束然后终端输入sudo reboot重启重启后会有类似界面依次选择Enroll MOK--Continue--Yes--输入刚才设置的密码--重启重启后终端再次输入nvidia-smi可以看到文章最开始的显卡驱动信息则表示驱动安装成功2、安装驱动对应的CUDA版本终端输入nvidia-smi可以查看或者进入官网页面https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html找到 2.2. CUDA Driver , 根据安装的显卡驱动版本号查找对应的CUDA版本比如作者的驱动版本是580.126.09选择CUDA对应的版本为13.0准备下载CUDA库文件。这里需要注意如果只是安装CUDA不安装Cudnn可以选择最新的适配版本即可。如果还要安装Cudnn加速则需要进入页面https://developer.nvidia.com/rdp/cudnn-archive可以看到最新的Cudnn才更新到8.9.7版本2023年12月适配CUDA 12版本。进入CUDA官网页面https://developer.nvidia.com/cuda-toolkit-archive选择对应的CUDA12.8.1版本点击链接后进入另一个界面依次选择对于第二个系统架构不清楚的可以终端输入uname -m或者arch进行查看然后在终端执行给出的指令安装过程中会出现一个Bash窗口需要手动选择首先是要你移除现有的驱动程序再继续我们不管直接continue然后会有一个证书协议直接输入accept接受即可最后是安装程序界面这里比较重要的是要取消选择驱动Driver然后在Install安装操作按键看最下面一行。最后会跳出安装成功的界面然后再添加环境变量sudo gedit ~/.bashrc # cuda-12.8 export PATH/usr/local/cuda-12.8/bin${PATH::${PATH}} export LD_LIBRARY_PATH/usr/local/cuda-12.8/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}} export CUDA_HOME/usr/local/cuda-12.8 # 保存后退出刷新 source ~/.bashrc然后终端输入nvcc -V显示则安装成功3、安装Cudnn下载Cudnn库文件进入官网https://developer.nvidia.com/rdp/cudnn-archive直接选择最新的8.9.7版本最高适配ubuntu20或者ubuntu22的CUDA12.x版本ubuntu24系统可以往后面看。先下载cuDNN Library for Linux_x86_64(Tar)压缩包然后解压tar -Jxvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz将cudnn的头文件和lib拷贝到cuda12.8的安装目录下cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive/ sudo cp include/cudnn*.h /usr/local/cuda/include/ sudo cp lib/libcudnn* /usr/local/cuda/lib64/ sudo chmod ar /usr/local/cuda/include/cudnn*.h sudo chmod ar /usr/local/cuda/lib64/libcudnn* # 查看版本 cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2对于ubuntu24进入官网https://developer.nvidia.com/cudnn-downloads根据自己的系统进行选择然后按照给出的指令进行安装即可注意默认的sudo apt-get -y install cudnn会安装CUDA13系统安装的是CUDA12需要根据另一条指令安装CUDA12的查看版本# 查找cudnn位置 find /usr -name cudnn_version.h 2/dev/null # 找到后查看 cat /usr/include/x86_64-linux-gnu/cudnn_version.h4、Yolov8部署使用C推理首先创建Yolov8的Conda环境conda create -n yolov8 python3.8 -y conda activate yolov8 pip install ultralytics8.0.200 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install onnx1.12.0 -i https://pypi.tuna.tsinghua.edu.cn/simple然后进入官网下载权重模型https://docs.ultralytics.com/zh/models/yolov8/#performance-metrics以实例分割模型yolov8n-seg.pt为例可以导出ONNX模型权重之后便可以用onnxruntime库进行推理调用。# 在安装的yolov8 conda环境下导出模型的onnx格式权重 yolo modeexport modelyolov8n-seg.pt formatonnx dynamicTrue对于Ubuntu20或者Ubuntu22系统或者在Ubuntu24.04系统上面降级CUDA到11.8及以下可以用另外一个tensorrt-alpha实现在CPU和GPU上面的c模型推理过程。因为这个库只适配了TensorRT 8.x下载安装TensorRT可以参照第5节。先下载实例分割模型推理库git clone https://github.com/FeiYull/tensorrt-alpha cd tensorrt-alpha # 设置前面安装的TensorRT_ROOT库路径,10版本并不适配 sudo gedit cmake/common.cmake set(TensorRT_ROOT /home/robot/ProgramFiles/TensorRT-10.10.0.31) cd data/yolov8 # 将转换文件复制到当前目录将下载的yolov8n-seg.pt权重文件也移动过来 cp $HOME/ProgramFiles/TensorRT-10.10.0.31/bin/trtexec . # 在安装的yolov8 conda环境下导出模型的onnx格式权重 yolo modeexport modelyolov8n-seg.pt formatonnx dynamicTrue # 使用trtexec导出trt权重模型直接使用c推理 # TensorRT8版本使用 ./trtexec \ --onnxyolov8n.onnx \ --saveEngineyolov8n.trt \ --buildOnly \ --minShapesimages:1x3x640x640 \ --optShapesimages:4x3x640x640 \ --maxShapesimages:8x3x640x640 # TensorRT10版本使用 ./trtexec \ --onnxyolov8n-seg.onnx \ --saveEngineyolov8n.trt \ --skipInference \ --minShapesimages:1x3x640x640 \ --optShapesimages:4x3x640x640 \ --maxShapesimages:8x3x640x640导出模型的trt权重后便可以编译tensorrt-alpha库进行模型推理了cd tensorrt-alpha/yolov8-seg mkdir build cd build cmake .. make -j12 # 推理使用 ./app_yolov8 --model../../data/yolov8/yolov8n.trt --size640 --batch_size1 --img../../data/6406407.jpg --show --savePath5、下载安装TensorRT进入官网https://developer.nvidia.com/tensorrt/download只有TensortRT10版本适配了Ubuntu24.04。进入后根据需要选择合适的版本如果要用TensorRT推理Yolov8只能安装TensortRT 8.x版本因为10版本有太多的不适配了安装8版本就需要降级CUDA到11.8以下对应的Cudnn也要相应的降级。下载完成后解压到指定安装目录tar -zxvf TensorRT-10.10.0.31.Linux.x86_64-gnu.cuda-12.9.tar.gz -C ~/ProgramFiles # 进入文件夹 cd ~/ProgramFiles/TensorRT-10.10.0.31 # 快速验证一下tensorrt是否安装正常 cd samples/sampleOnnxMNIST # 低版本可能是sampleMNIST目录 make -j12 cd ../../bin/ # 根据路径加入到环境变量中 echo export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/home/robot/ProgramFiles/TensorRT-10.10.0.31/lib ~/.bashrc source ~/.bashrc # 运行 ./sample_onnx_mnist运行程序后出现类似一个数字即安装成功。装了一天才发现10版本不适配害又不想重新降级装CUDA和Cudnn了后续有时间看能不能把那个开源库修改适配TensortRT 10.x 版本这样就可以不用降级CUDA也可以使用了。