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索引

python3 -m pip install --upgrade pip
python3 -m pip install wheel
python3 -m pip install --pre --upgrade tensorrt
python3 -m pip install --pre --upgrade tensorrt_lean
python3 -m pip install --pre --upgrade tensorrt_dispatch
  • 测试
python3
>>> import tensorrt
>>> print(tensorrt.__version__)
>>> assert tensorrt.Builder(tensorrt.Logger())
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).(看句洋文,自己改下)
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,安装下
cd TensorRT-${version}/uff

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

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

安装OVER!!!

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

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)文件

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

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

sudo ./trtexec --onnx=/home/photo-de/mm.onnx --saveEngine=m1.engine --fp16

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

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

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

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

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)
  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值