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个下载。在这里插入图片描述
    1. cd到下载的目录那里,tar -zxvf 包名字
    2. 添加环境变量export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<TensorRT-${version}/lib>,,,,,,<TensorRT-${version}是解压包的名字,不要直接CV啊。
    3. 正式安装,Install the Python TensorRT wheel file (replace cp3x with the desired Python version, for example, cp310 for Python 3.10).(看句洋文,自己改下)
cd TensorRT-${version}/pythonpython3 -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}/uffpython3 -m pip install uff-0.6.9-py2.py3-none-any.whl
which convert-to-uff
  • 安装Python的graphsurgeon wheel文件
cd TensorRT-${version}/graphsurgeonpython3 -m pip install graphsurgeon-0.4.6-py2.py3-none-any.whl
  • 安装onnx-graphsurgeon文件
cd TensorRT-${version}/onnx_graphsurgeonpython3 -m pip install onnx_graphsurgeon-0.3.12-py2.py3-none-any.whl
  • python测试参考
  • C++测试

安装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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ENVI不同版本个人使用对比

ENVI不同版本个人使用对比 文章目录 ENVI不同版本个人使用对比前言对比5.3学习版5.6学习版6.0试用版 总结 前言 目前来看&#xff0c;流传较广的可供大家免费获取的ENVI版本主要是5.3学习版 5.6学习版 6.0学习版这三个版本&#xff0c;不同的版本有不同特色&#xff0c;在此做…

C#基础|StringBuilder字符串如何高效处理。

哈喽&#xff0c;你好&#xff0c;我是雷工。 字符串处理在C#程序开发中是使用频率比较高的&#xff0c;但常规的字符串处理方式对内存占用比较多&#xff0c;为了优化内存&#xff0c;减少不必要的内存浪费&#xff0c;引入了StringBuilder类。 下面学习下StringBuilder类的使…

PC-3000 Flash:NAND 闪存设备(包括一体式U盘)数据恢复的重量级工具(一)

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、前沿专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复公司&#xff0c;提供数据恢复实验室建设方案&#xff0c;包含 PC-3000 系列数…

LeetCode 热题 100 Day05

矩阵相关题型 Leetcode 73. 矩阵置零【中等】 题意理解&#xff1a; 将矩阵中0所在位置&#xff0c;行|列置换为全0 其中可以通过记录0元素所在的行、列号&#xff0c;来标记要置换的行|列 将对应位置置换为0 解题思路&#xff1a; 第一个思路&#xff1a; 可以…

React | classnames

classnames 这个库在我们的项目中有大量的使用到&#xff0c;它不仅很实用&#xff0c;还非常好用&#xff0c;但还有人不知道这个库&#xff0c;我真的是十分心痛。 通过 classnames&#xff0c;我们可以给组件设置多个 className&#xff0c;还可以根据需要动态设置 classNa…

模块四:前缀和——DP35 【模板】二维前缀和

文章目录 题目描述算法原理解法一&#xff1a;暴力模拟&#xff08;时间复杂度为O(n*m*q)&#xff09;解法二&#xff1a;二维前缀和&#xff08;时间复杂度为O(m*n)O(q)) 代码实现解法二&#xff1a;前缀和&#xff08;C)Java 题目描述 题目链接&#xff1a;DP35 【模板】二维…

三星电脑文件夹误删了怎么办?恢复方案在此

在使用三星电脑的过程中&#xff0c;我们可能会不小心删除了某个重要的文件夹&#xff0c;其中可能包含了工作文件、家庭照片、视频或其他珍贵的数据。面对这种突发情况&#xff0c;不必过于焦虑。本文将为您提供几种有效的恢复方案&#xff0c;希望能帮助您找回误删的文件夹及…

openEuler-22.03安装 mysql8.0.32

一、下载解压 下载地址&#xff1a; MySQL :: Download MySQL Community Server (Archived Versions) tar -xvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar -C /opt/mysql-8.0.32 二、安装 最开始安装一直报错 缺少 libcrypto.so.10库文件,安装openssl可以解决 wget http://…

Java客户端如何直接调用es的API

Java客户端如何直接调用es的API 一. 问题二. withJson 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一. 问题 今天做项目的时候&#xff0c;想要直接通过java客户端调用es的api…

揭秘工业大模型:从人工智能小白到技术先锋

工业大模型的五个基本问题 信息化时代&#xff0c;数字化转型成为企业提升营运效率、应对经营风险和提升核心竞争力的重要途径。在此过程中&#xff0c;数据作为一种客观存在的资源&#xff0c;所产生的价值日益凸显。党的十九届四中全会从国家治理体系和治理能力现代化的高度将…

【万字长文】看完这篇yolov4详解,那算是真会了

前言 目标检测作为计算机视觉领域的一个核心任务&#xff0c;其目的是识别出图像中所有感兴趣的目标&#xff0c;并给出它们的类别和位置。YOLO&#xff08;You Only Look Once&#xff09;系列模型因其检测速度快、性能优异而成为该领域的明星。随着YOLOv4的推出&#xff0c;…

双塔模型在召回和粗排的区别

答案参考&#xff1a;推荐系统中&#xff0c;双塔模型用于粗排和用于召回的区别有哪些? - 知乎 召回和粗排在不同阶段面临样本不一样&#xff0c;对双塔来说样本分布差异会使召回和粗排采取不一样的方式。召回打分空间是全部item空间&#xff0c;曝光只有很少一部分&#xff0…

【机器学习】集成学习---Bagging之随机森林(RF)

【机器学习】集成学习---Bagging之随机森林&#xff08;RF&#xff09; 一、引言1. 简要介绍集成学习的概念及其在机器学习领域的重要性。2. 引出随机森林作为Bagging算法的一个典型应用。 二、随机森林原理1. Bagging算法的基本思想2. 随机森林的构造3. 随机森林的工作机制 三…

ClickHouse 如何实现数据一致性

文章目录 ReplacingMegreTree 引擎数据一致性实现方式1.ReplacingMegreTree 引擎2.ReplacingMegreTree 引擎 手动合并3.ReplacingMegreTree 引擎 FINAL 查询4.ReplacingMegreTree 引擎 标记 GroupBy5.允许偏差 前言&#xff1a;在大数据中&#xff0c;基本上所有组件都要求…

Docker创建镜像之--------------基于Dockerfile创建

目录 一、在编写 Dockerfile 时&#xff0c;有严格的格式需要遵循 二、Dockerfile 操作常用的指令 2.1ENTRYPOINT和CMD共存的情形 2.2ENTRYPOINT和CMD的区别 2.3ADD 与COPY的区别 三、Dockerfile案例 3.1构建apache镜像 3.1.1 创建镜像目录方便管理 3.1.2创建编写dock…

函数递归与迭代

目录 1.递归 1.1递归的思想 1.2递归的限制条件 2.递归与迭代 1.递归 函数递归是什么&#xff1f; 递归是学习C语⾔函数绕不开的⼀个话题&#xff0c;那什么是递归呢? 递归其实是⼀种解决问题的⽅法&#xff0c;在C语⾔中&#xff0c;递归就是函数⾃⼰调⽤⾃⼰。 写⼀个史…

大模型对数字营销的驱动赋能

一、大模型驱动的营销数智化个信未来发展趋势 1.模型算法能力全面升级 大模型凭借智能化的用户洞察&#xff0c;个性化的需求预测、系统化的数据分析、效率化的营销决策以及实实化的全域检测支持&#xff0c;为营销行业更加准确地把握市场动态和消费者需求提供了强大支持。可以…

Spring Boot 如何实现缓存预热

Spring Boot 实现缓存预热 1、使用启动监听事件实现缓存预热。2、使用 PostConstruct 注解实现缓存预热。3、使用 CommandLineRunner 或 ApplicationRunner 实现缓存预热。4、通过实现 InitializingBean 接口&#xff0c;并重写 afterPropertiesSet 方法实现缓存预热。 1、使用…

数据结构和算法:贪心

贪心算法 贪心算法是一种常见的解决优化问题的算法&#xff0c;其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期获得全局最优解。 贪心算法和动态规划都常用于解决优化问题。它们之间存在一…

TCP/IP协议族中的TCP(二):解析其关键特性与机制

⭐小白苦学IT的博客主页⭐ ⭐初学者必看&#xff1a;Linux操作系统入门⭐ ⭐代码仓库&#xff1a;Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统 滑动窗口 在前面我们讨论了确认应答策略, 对每一个发送的数据段, 都要给一个ACK确认应答. 收到ACK后再发送下一个数据段.这样…