TensorRT 安装笔记

本文记录了在安装TensorRT时遇到的错误及解决过程,包括使用错误的命令和从NVIDIA NGC库安装。此外,还讲述了在ONNX模型转换为TRT模型时遇到的'AttributeError: axes'问题,通过使用onnx-simplifier工具成功解决了模型转换问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是按照官方的安装手册执行的安装 链接如下
https://developer.nvidia.com/tensorrt-getting-started
具体怎么安装的的请一定要参考官方英文原文, 虽然是英文的, 但是咱们有翻译工具, 基本上看懂不难.

遇到的问题1安装TensorRT的时候报错, 命令如下.

python3 -m pip install --upgrade nvidia-tensorrt

报错, 查看了一下后面

If you receive an error message in the form of a Python exception similar to the error message below, then either the nvidia-pyindex package was not set up properly, or you might be using a Python version other than 3.6 to 3.9.
##################################################################
The package you are trying to install is only a placeholder project on PyPI.org repository.
This package is hosted on NVIDIA Python Package Index.

This package can be installed as:

$ pip install nvidia-pyindex
$ pip install nvidia-tensorrt

##################################################################

后来改了命令. 这条命令的意思, 也到https://pypi.ngc.nvidia.com库去找nvidia-tensorrt类库

python3 -m pip install --upgrade nvidia-tensorrt --extra-index-url https://pypi.ngc.nvidia.com

结果仍然报错. 后来我猜了,应该是项目名字变了. (别问我怎么知道的,我安装的镜像系统, 其实已经装好了.)
我把nvidia-tensorrt 改成了tensorrt就成功了

python3 -m pip install --upgrade  tensorrt --extra-index-url https://pypi.ngc.nvidia.com

.(此方案仅供参考, 我也没有深入探究是否是同一个包, 只要能正常使用就算是OK的. 出现其它问题本人不负责哈.)

下面就是验证一下TensorRT是否安装成功

test.py

import tensorrt
print(tensorrt.__version__)
assert tensorrt.Builder(tensorrt.Logger())

执行命令

python3 test.py

结果输出 7.1.3.0

其实我没装, 都是镜像自带的. 真心觉得镜像是个好东西. 省了太多太多事情了.

onnx 转trt 模型 报错 what():Attribute not found:axes
在转换命令上加了个参数 --verbose=true 能够输出是在那个节点出问题的.
在这里插入图片描述
结果如图. (抱歉没有办法截图. 不够清晰. )
结果跟下文说的是同一个问题,
https://blog.youkuaiyun.com/ChuiGeDaQiQiu/article/details/119821974
我的应该是unsqueeze缺少参数了.
可是怎么修正呢?
网上一顿搜索, 发现https://blog.youkuaiyun.com/u014183936/article/details/119940962
这个方法比较靠谱.

解决方法:
https://github.com/daquexian/onnx-simplifier
安装就行
pip3 install onnx-simplifier
转换:
python -m onnxsim yolov5s.onnx yolov5s.simp.onnx
这个解决方法是把onnx中的一些多余操作给合并了. 去掉了无用的操作. 先不管了,
先试了再说. 结果是OK的.
成功转成simp.onnx , 然后把简化版的onnx复制到jetson nano中, 用命令转成 trt模型

我们可以按如下方式运行此转换:

/usr/src/tensorrt/bin/trtexec --onnx=yolov5.simp.onnx --saveEngine=yolov5.simp.trt  --explicitBatch --verbose

将yolov5.simp.onnx 转换到一个名为的 yolov5.simp.trt 的 TensorRT模型

### 关于TensorRT在Ubuntu上的学习资料 #### 1. TensorRT简介 TensorRT 是 NVIDIA 提供的一个高性能深度学习推理库,能够优化神经网络模型并将其部署到生产环境中[^1]。它通过减少计算量和内存使用来提高推理速度。 #### 2. 开发环境搭建 为了在 Ubuntu 上使用 TensorRT 进行开发,通常需要完成以下几个步骤: - 安装 CUDA 和 cuDNN:这是 TensorRT 的基础依赖项。 - 下载并安装 TensorRT 库及其相关工具。 - 配置 Python 或 C++ 环境以便调用 TensorRT API。 具体操作可以参考官方文档中的说明。 #### 3. ONNX 转 Engine 流程 当从其他框架(如 PyTorch 或 TensorFlow)转换模型至 TensorRT 时,常用的方法是先将模型导出为 ONNX 格式,再利用 TensorRT 工具链生成 engine 文件。以下是基本流程概述: 创建日志记录器实例用于捕获构建过程中的消息输出;初始化 builder 对象负责管理整个引擎创建周期;定义显存分配策略以及指定目标平台架构参数等设置均在此阶段完成[^2]。 ```python import tensorrt as trt def build_engine(onnx_file_path, logger): with trt.Builder(logger) as builder: network_flags = 1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH) with builder.create_network(network_flags) as network,\ builder.create_builder_config() as config,\ trt.OnnxParser(network, logger) as parser: with open(onnx_file_path, 'rb') as model: if not parser.parse(model.read()): for error in range(parser.num_errors): print(parser.get_error(error)) return None config.max_workspace_size = 1 << 30 # 设置最大工作空间大小 return builder.build_serialized_network(network, config) log = trt.Logger() serialized_engine = build_engine("/path/to/model.onnx", log) with open("/path/to/engine.trt", "wb") as f: f.write(serialized_engine) ``` 上述脚本展示了如何加载 ONNX 模型并通过 TensorRT 构建序列化后的 engine 文件。 #### 4. 学习资源推荐 对于希望深入理解 TensorRT 并应用于实际项目的开发者来说,《Deep Learning Inference with TensorRT》是一份非常有价值的指南材料。此外,在线社区论坛和技术博客也提供了大量实践经验分享,比如针对特定版本更新带来的新特性和最佳实践案例分析等内容值得查阅。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值