服务器部署trt10

前言

客户现场有一台服务器需要基于tensorrtx 部署yolo11模型,因为engine文件需要基于服务器本地的cuda 进行编译,对此次安装做记录,方便下次安装。

模型部署相关的cuda、cudnn、tensorrt、tensorrtx 之间是存在版本依赖的,都跟cuda版本有关,做之前最好先看看版本依赖
以下是各个工具的作用

cuda:CUDA 是 NVIDIA 推出的通用并行计算框架,允许开发者通过 C/C++/Python 等语言直接调用 GPU 进行并行计算。
cudnn:基于 CUDA 的深度学习加速库,专门优化神经网络操作(如卷积、池化、RNN)。
tensorrt:NVIDIA 推出的高性能推理优化器,专注于将训练好的模型部署为高效推理服务。
tensorrtx:由开发者维护的开源项目,提供多种深度学习模型(如 YOLO、ResNet)的 TensorRT 部署示例。

总结如下

1、常用的pt格式的模型,是通用的推理模型,适用于pytorch框架。但是实际生产环境,需要基于现有GPU进行推理加速,理论上可以提高一个量级,基于yolo的单张图片的识别,可以提高到3ms一张图片
2、部署cuda、cudnn是希望本地有一套可以进行推理加速的工具,tensorrtx、tensorrt 就是为了将模型转换,进而可以适配这套加速工具

部署难点

部署过程中,存在的主要问题是版本适配问题
1、硬件版本适配,40系列、50系列显卡,基本就需要对应cuda12.0、12.2+。前者适配tensorrt8,后者适配tensorrt10
2、tensorrtx 版本适配,tensorrtx 现有两个大版本,tensorrtx master 可以适配yolo11、yolo10、yolo12;tensorrtx10 不适配yolo11

关键工具

1、c++相关工具

1、conda 虚拟环境安装

conda create -n aienv python=3.11
conda activate aienv 
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.1 -c pytorch -c nvidia 
conda install cudatoolkit=11.8.0 -c nvidia
conda install cuda-toolkit=12.1.0 -c nvidia

如果cudatoolkit 安装失败,使用如下命令选一个版本
conda search cudatoolkit


# 安装与CUDA 12.1兼容的cuDNN
conda install cudnn=8.9 -c nvidia -c conda-forge
# 安装opencv
conda install opencv -c conda-forge -y
#下载完整cmake 相关指令
conda install -c conda-forge compilers cmake make
conda install -c  conda-forge ultralytics

安装c++相关
conda search -c conda-forge gcc
conda install -c conda-forge gcc=12.3.0

2、模型转换

模型转换需要cudnn、tensorrt、tensorrtx

2.1、安装cudnn

本地cuda 环境为12.2

(base) root@hp-HP-Z2-Tower-G1i-Workstation-Desktop-PC:/usr/local/cuda-12.2# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Aug_15_22:02:13_PDT_2023
Cuda compilation tools, release 12.2, V12.2.140
Build cuda_12.2.r12.2/compiler.33191640_0
(base) root@hp-HP-Z2-Tower-G1i-Workstation-Desktop-PC:/usr/local/cuda-12.2# 

到英伟达官网下载cudnn,一般是免安装的,把相关文件移动到cuda 就行
https://developer.nvidia.com/rdp/cudnn-archive

在这里插入图片描述

解压下载后的tar包,并把include、lib 相关文件移动到本地cuda 目录下include、lib(lib64)

(base) root@hp-HP-Z2-Tower-G1i-Workstation-Desktop-PC:/mnt/aifile# tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz 
(base) root@hp-HP-Z2-Tower-G1i-Workstation-Desktop-PC:/mnt/aifile# cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive/
(base) root@hp-HP-Z2-Tower-G1i-Workstation-Desktop-PC:/mnt/aifile/cudnn-linux-x86_64-8.9.7.29_cuda12-archive# which nvcc
/usr/local/cuda-12.2/bin/nvcc
(base) root@hp-HP-Z2-Tower-G1i-Workstation-Desktop-PC:/mnt/aifile/cudnn-linux-x86_64-8.9.7.29_cuda12-archive# cp include/* /usr/local/cuda-12.2/include
(base) root@hp-HP-Z2-Tower-G1i-Workstation-Desktop-PC:/mnt/aifile/cudnn-linux-x86_64-8.9.7.29_cuda12-archive# cp lib/* /usr/local/cuda-12.2/lib64/
(base) root@hp-HP-Z2-Tower-G1i-Workstation-Desktop-PC:/mnt/aifile/cudnn-linux-x86_64-8.9.7.29_cuda12-archive# 

2.2、tensorrtx、tensorrt

tensorrt、tensorrtx 都是独立项目,不需要在虚拟环境中安装,直接下载项目到服务器。前者为英伟达提供的推理框架,后者为开源的模型转换工具

1、当前cuda 版本是12.9,考虑安装tensorrt10
tensorrt10,下载10.13.2 GA 适配 cuda12.0到 12.9
https://developer.nvidia.com/tensorrt/download
2、文件直接放到服务器,并使用 tar 命令解压

在这里插入图片描述

tensorrtx10 下载链接如下
下载trt10,适配tensorrt10,当前trt10 不支持yolo11,所以还要注意yolo版本

https://github.com/wang-xinyu/tensorrtx/tree/trt10
在这里插入图片描述

2.3 tensorrtx 项目构建

tensorrtx项目是基于python+c++
当前yolo版本为yolo10,对于yolo的版本需要确定到小版本号,比如yolo10s yolo10m,s、m也是模型转换的参数
项目构建需要修改tensorrtx/yolo10/CMakeLists.txt 文件然后才能构建,需要指定几个路径 nvcc、cuda、tensorrt10
具体步骤如下

1、切换到tensorrtx10/yolo10目录,修改CMakeLists.tx
2、修改CmakeLists.txt 需要指定nvcc、cuda、tensorrt 路径,cuda 路径可以指定本地路径,也可以做使用虚拟环境路径。本次cudnn相关安装都在本地,就使用本地环境,最后生成的CmakeLists.txt 如下

修改CmakeLists.txt 文件主要还是靠ai,遇见的问题整理如下

1、cudnn未安装或安装方式不对。本地环境下cudnn是面安装的,只需要吧cudnn include、lib文件夹下的文件移动到 cuda 的 include、lib(lib64) 文件夹下
2、cuda、tensorrt 、opencv路径需要设置正确
3、Cmakelist 里面有个依赖叫做nvinfer,这个文件在trt10里面叫做 nvinfer_10

在这里插入图片描述

2.3.1 c++工程构建

切换到trtx10的yolo10的目录下,进行c++工程构建
cmake命令构建工程的时候报错,提示需要opencv

sudo apt install libopencv-dev

1、查找aienv 路径
(aienv) [root@localhost mnt]# find / -name aienv
/root/miniconda3/envs/aienv

2、切换到 aienv 路径,然后查看lib、include路径下 是否有cudnn相关,这个可以定位到cuda、cudnn安装是否正常
(aienv) [root@localhost mnt]# cd /root/miniconda3/envs/aienv

3、查找aienv 路径下 opencv 是否安装

(aienv) [root@localhost aienv]# find ./ -name “opencv” -type f 2>/dev/null | head -10
./conda-meta/opencv-4.12.0-py311hc7c50f1_0.json
./bin/opencv_annotation
./bin/opencv_interactive-calibration
./bin/opencv_model_diagnostics
./bin/opencv_version
./bin/opencv_visualisation
./bin/opencv_waldboost_detector
./bin/setup_vars_opencv4.sh
./lib/pkgconfig/opencv4.pc
./lib/opencv4/3rdparty/libopencv.sfm.correspondence.a
(aienv) [root@localhost aienv]#


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值