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,一经查实,立即删除!

相关文章

electron退出时添加一个包含“不再提示”选项的确认对话框

在 Electron 中添加一个包含“不再提示”选项的确认对话框可以通过 checkboxLabel 和 checkboxChecked 属性在 dialog.showMessageBox 函数中实现。这两个属性分别用于设置复选框的标签和初始状态。您可以根据用户的选择来决定是否在将来再显示此对话框。 以下是一个更新的示例…

13 内核开发-任务调度-Work queues工作队列

13 内核开发-任务调度-Work queues工作队列 目录 13 内核开发-任务调度-Work queues工作队列 1.定义 2.内涵 3.使用示例 4.具体代码使用实践 5.注意事项 6.最佳实践 7.总结 9.比较 workqueue_struct 与 tasklet 课程简介&#xff1a; Linux内核开发入门是一门旨在帮助…

ENVI不同版本个人使用对比

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

关于面向对象与面向过程的基本概念

什么是面向对象与面向过程编程 面向对象编程&#xff08;OOP&#xff09;和面向过程编程&#xff08;POP&#xff09;是两种主要的编程范式&#xff0c;它们在解决问题的方法和组织代码的方式上有所不同。C#和Java都是支持这两种编程范式的语言&#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://…

kafka 线上消费积压问题

背景 线上kafka 流量大&#xff0c;消费小于生产&#xff0c;如何处理&#xff1f; 方案 增加consumer数量 可以增加consumer的消费者&#xff0c;不过这个只能在一定程序上缓解&#xff0c;如果consumer 数量超过partition 数&#xff0c;那有的就会空转&#xff0c;解决不…

rabbitmq报错

文章目录 Applying plugin configuration to rabbitDESKTOP-C3HQ9BK... Plugin configuration unchanged.rabbitmq-service.bat start和rabbitmq-plugins enable rabbitmq_management这两个命令在RabbitMQ中具有不同的功能和用途。以下是两者之间的主要区别&#xff1a; Applyi…

国家开放大学2024春学期《社会调查研究与方法-邮政学院》形成性考核一参考答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 某市城区有 18 个社区&#xff0c;常住居民 10000 户&a…

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;…

Java基础知识总结(78)

/** * 线程加锁 */ public class SynchronizedDemo2 { //静态成员变量 在主内存中 static int i; //静态成员方法 public static void add(){ synchronized (SynchronizedDemo2.class){ i; } } public static void main(String[] args) throws InterruptedException { Thread t…

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

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

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

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