ubuntu22.04安装TensorRT(过程记录)

重要说明:此贴经过多次修改。第一次安装的的为trt8.6.1版本。第二次安装的10.0.0.6版本。有些地方可能没改过来,比如链接向导,我懒得改了,但是流程是对的。

cuda和cudnn版本对应关系
tensorRT历史发行版本
CUDA历史发行版本
cudnn历史发行版本
NVIDIA驱动安装
CUDA对显卡驱动的要求

TensorRT快速上手

使用TensorRT部署

TensorRT开发者说明书

不要看这个博客:pth转onnx模型、onnx转tensorrt模型、python中使用tensorrt进行加速推理(全网最全,不信你打我)

1、选择TensorRT版本号

  • 因为CUDA为12.4版本的,2024年4月25日能支持这个CUDA的trt只有TensorRT10.0.0。所以我把cudnn改为了8.9.7版本
  • 查看cuda版本号,cuda12.4,cudnn8.9.7,pytorch2.0
  • google搜索tensorrt release notes 参考快速查找cudnn、tensorrt、cuda之间匹配对应的版本
  • 选择TensorRT版本,比如本机是CUDA12.4,选择TensorRT8.9.7
  • TensorRT10.0.0.6最高支持CUDA12.4,最低支持CUDA11.0,并且在cudnn8.9.7上进行过测试,就选这个。

2、安装TensorRT

  1. 找到自己的版本发行说明TensorRT历史版本发行
  2. 进去NVIDIA TensorRT Archived Documentation
  3. 进去NVIDIA TensorRT Installation Guide(如果安装本版一致的话,直接看这个也行)
  4. 文档第一步先确认: 如果您正在使用 TensorRT Python API,并且 CUDA-Python 尚未安装在您的系统上,请参考 NVIDIA CUDA-Python 安装指南进行安装。
    • conda环境下面,conda list查看有没有python-cuda这个包
  5. linux安装方式有:Debian或RPM软件包、Python wheel文件、tar文件或zip文件。windows只支持zip安装方式。

2.1、安装python索引

python 复制代码
python3 -m pip install --upgrade pip
python3 -m pip install wheel
python 复制代码
python3 -m pip install --pre --upgrade tensorrt
python 复制代码
python3 -m pip install --pre --upgrade tensorrt_lean
python3 -m pip install --pre --upgrade tensorrt_dispatch
  • 测试
python 复制代码
python3
>>> import tensorrt
>>> print(tensorrt.__version__)
>>> assert tensorrt.Builder(tensorrt.Logger())
python 复制代码
python3
>>> import tensorrt_lean as trt
>>> print(trt.__version__)
>>> assert trt.Runtime(trt.Logger())

python3
>>> import tensorrt_dispatch as trt
>>> print(trt.__version__)
>>> assert trt.Runtime(trt.Logger())

2.2、tar安装方式

  1. 下载页面,进去。
  2. 点击Download Now,下面图片是第一次安装8.6的截图,现在安装的是,10.0.0.6版本。所以下面图片仅供参考。
  3. 选择自己要的版本,这里我选第7个下载。
    4. cd到下载的目录那里,tar -zxvf 包名字
    5. 添加环境变量export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<TensorRT-${version}/lib>,,,,,,<TensorRT-${version}是解压包的名字,不要直接CV啊。
    6. 正式安装,Install the Python TensorRT wheel file (replace cp3x with the desired Python version, for example, cp310 for Python 3.10).(看句洋文,自己改下)
bash 复制代码
cd TensorRT-${version}/python

python3 -m pip install tensorrt-*-cp3x-none-linux_x86_64.whl
python3 -m pip install tensorrt_lean-*-cp3x-none-linux_x86_64.whl
python3 -m pip install tensorrt_dispatch-*-cp3x-none-linux_x86_64.whl
  • 如果用tensorflow,安装下
bash 复制代码
cd TensorRT-${version}/uff

python3 -m pip install uff-0.6.9-py2.py3-none-any.whl
which convert-to-uff
  • 安装Python的graphsurgeon wheel文件
bash 复制代码
cd TensorRT-${version}/graphsurgeon

python3 -m pip install graphsurgeon-0.4.6-py2.py3-none-any.whl
  • 安装onnx-graphsurgeon文件
bash 复制代码
cd TensorRT-${version}/onnx_graphsurgeon
	
python3 -m pip install onnx_graphsurgeon-0.3.12-py2.py3-none-any.whl

安装OVER!!!

3、将pytorch模型导出为onnx模型

python 复制代码
model = models.vgg16(num_classes=2)
    # 加载模型权重
    model.load_state_dict(torch.load(model_pth, map_location=device))
    model.eval()

    dummy_input = torch.randn(batch_size, 3, 224, 224)
    torch_out = model(dummy_input)
    torch.onnx.export(model,
                      dummy_input,
                      onnx_path,
                      opset_version=10,
                      do_constant_folding=True,
                      input_names=["input"],
                      output_names=["output"],
                      dynamic_axes={"input": {0: "batch_size"},
                                    "output": {0: "batch_size"}
                                    },
                      verbose=False
                      )

4、ONNX导出为.engine或者.trt(trt10.0.0)文件

python 复制代码
lzy@haha:~/TensorRT-10.0.0.6/bin$ 
# 输入
./trtexec --onnx=vgg16.onnx --saveEngine=vgg16.engine --fp16

记得开头那个博客吗???知道他怎么运行的吗??

python 复制代码
sudo ./trtexec --onnx=/home/photo-de/mm.onnx --saveEngine=m1.engine --fp16

我🍀你****************************************************************************************************************************************************************************************************************************************************************************************************************************

5、使用engine或者trt模型进行推理

具体怎么使用参考这个:Understanding TensorRT Runtimes

分类模型部署

直接copy这个代码,实例化这里面的类就能用。根据输出略微修改就行。

python 复制代码
from onnx_helper import ONNXClassifierWrapper
N_CLASSES = 1000 # Our ResNet-50 is trained on a 1000 class ImageNet task
trt_model = ONNXClassifierWrapper("resnet_engine.trt", [BATCH_SIZE, N_CLASSES], target_dtype = PRECISION)

BATCH_SIZE=32
dummy_input_batch = np.zeros((BATCH_SIZE, 224, 224, 3), dtype = PRECISION)

predictions = trt_model.predict(dummy_input_batch)
相关推荐
一点媛艺2 小时前
Kotlin函数由易到难
开发语言·python·kotlin
程序小旭2 小时前
机器视觉基础—双目相机
计算机视觉·双目相机
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
_.Switch3 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
AI极客菌3 小时前
Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。
人工智能·计算机视觉·ai作画·stable diffusion·aigc·flux·人工智能作画
阿_旭3 小时前
一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理
人工智能·深度学习·计算机视觉·cross-attention·self-attention
王哈哈^_^4 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
测开小菜鸟4 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
Power20246664 小时前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp
YRr YRr5 小时前
深度学习:循环神经网络(RNN)详解
人工智能·rnn·深度学习