【TensorRT】基本介绍

news2024/11/16 7:35:03

TensorRT用于高效实现已经训练好的深度学习的模型的推理过程的SDK,能使DL模型有更快的推理速度和更高的吞吐量。官方提供Python和C++两种接口,形式基本一致且相互对应。

1 ✨ TensorRT介绍

🍟1.1 TensorRT的工作

分为两个时期(构建期和运行期):

1-1 构建期工作
namedescription
模型解析/建立加载 Onnx等其他格式的模型/使用原生API搭建模型
计算图优化横向层融合(Conv),纵向层融合(Conv+add +ReLU)
节点消除去除无用层,节点变换(Pad,Slice,Concat,Shuffle)
多精度支持FP32/ FP16 / INT8 / TF32(可能插入reformat节点)
优选kernel/format硬件有关优化
导入plugin实现自定义操作
现存优化显存池复用
1-2 运行期工作
namedescription
运行时环境对象生命期管理,内存显存管理,异常处理
序列化/反序列化推理引擎保存为文件或从文件中加载

🌭1.2 TensorRT流程

在这里插入图片描述
构建期:

  1. 创建logger(日志记录器)
  2. 建立Builder(引擎构建器,包含计算图属性信息)和BuilderConfig(Builder相关选项)
  3. 创建Network(计算图具体内容),网络主体。
  4. 生成SerializedNetwork(网络的TRT内部表示)

运行期:
5. 建立Engine(模型计算核心)和Context(类比进行)
6. Buffer(数据内存、显存)相关准备(Host端+device端)
7. Buffer拷贝 Host to Device
8. 执行推理(Execute)
9. Buffer拷贝 Device to Host
10.善后工作
在这里插入图片描述

🍿1.3 模型转化(DL Network=>TRT Network)

在这里插入图片描述
三种方案:

  1. 使用框架自带的TRT接口。简单灵活,部署仍在原框架中,无需书写Plugin,但是牺牲了一定的性能。
  2. 使用Paser(推荐)。流程成熟,ONNX通用性好,方便网络调整,兼顾效率性能。
  3. 使用TensorRT原生API搭建网络。性能最优,精细网络控制,兼容性最好,但是应用性和开发效率较低。

✨ 2 API介绍

在这里插入图片描述

🧂2.1 logger(日志记录器)

"""
trt.Logger.VERBOSE:可选参数,产生不同等级的日志,由详细到简略分别为VERBOSE,INFO,WARNING,ERROR,INTERNAL_ERROR
"""
logger = trt.Logger(trt.Logger.VERBOSE)

通常使用VERBOSE和INFO两个,可获得网络优化过程和接口信息。

🥓 2.2 Builder(引擎构建器)以及BuilderConfig

Builder:

builder = trt.Builder(logger)

builder.max_batch_ size = 256,指定最大Batch Size(Static Shape模式下使用)

BuilderConfig:

config = builder.create_builder_config()

常用属性有:

namedescription

🥚2.3 Network(网络具体构造)

"""
param:`1 <<int(tensorrt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)`,使用Explicit Batch模式。
"""
network = builder.create_network()

常用方法:

namedescription
network.add_input( ‘oneTensor’ ,trt.float32,(3,4,5))标记网络输入张量
network.add_input( ‘oneTensor’ ,trt.float32,(3,4,5))添加layer
network.mark_output(convLayer.get_output(O))标记网络输出张量

🍿2.4 生成Engine

serializedNetwork = builder. build_serialized_network(network, config)  # SerializedNetwork(TRT内部表示)
engine = trt.Runtime(logger).deserialize_cuda_engine(serializedNetwork)

在这里插入图片描述

什么是binding:
在这里插入图片描述
可以用context.get_binding_shape(2)context.get_binding_shape(3)获取网络信息

🤣2.5 生成Context

context = engine.create_execution_context()

在这里插入图片描述

cuda异构计算:
在这里插入图片描述

🥓2.6 Buffer

在这里插入图片描述

2.7 🎃 TRT文件保存

在这里插入图片描述

✨3 模式选择

为什么选择Explicit Batch模式,而不选择Implicit Batch模式:
在这里插入图片描述

✨ 4 精度

4.1 🍟 FP16

在这里插入图片描述
在这里插入图片描述

✨5 Parser

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

✨ 6 使用框架内的接口

在这里插入图片描述

1

X

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

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

相关文章

flask socket版本问题

1、版本问题 问题解决 根据官方给定的兼容版本&#xff0c;从socket.io官网CDN下载最新的4.4.1版本js文件&#xff0c;https://cdn.socket.io/。 python-engineio使用版本。需要更新的javascript.socketio包&#xff0c;具体可对照官方文档Requirements部分末尾 https://flask-…

红帽宣布为RHEL 7延长4年生命周期

早前一段时间&#xff0c;红帽原本计划在2024年7月1日结束支持&#xff0c;但是Red Hat表示由于部分IT企业需要更长的时间部署和升级&#xff0c;宣布为Red Hat Enterprise Linux 7(RHEL 7)增加4年的扩展生命支持(ELS)。 据了解&#xff0c;RHEL 7于2014年发布&#xff0c;支持…

uniapp解决跨域问题

配置&#xff1a; "proxy": {"/api": {"target": "https://s2.lakala.com","changeOrigin": true,"pathRewrite": {"^/api": "/api"}}} 目标路径 https://s2.lakala.com/api/v3/labs/relat…

7.1.4 【Linux】与目录树的关系

每个文件&#xff08;不管是一般文件还是目录文件&#xff09;都会占用一个 inode &#xff0c; 且可依据文件内容的大小来分配多个 block 给该文件使用。道目录的内容在记录文件名&#xff0c; 一般文件才是实际记录数据内容的地方。 目录 当我们在 Linux 下的文件系统创建一…

STM32 创建工程(库函数)

1.新建CORE ,FWLIB,OBJ,SYSTEM,USER五个文件夹 2.新建工程选择软件包 3.OBJ文件用来存放编译中间文件 4.FWLIB官方固件库包 src 存放的是固件库的.c 文件&#xff0c;inc 存放的是对应的.h 文件 直接从模板中粘贴进即可 5.CORE 6.USER文件夹需要复制的6个文件 7. 加入上面加入…

爱玩粥的有福了,带图形界面的明日方舟皮肤的员工管理系统,数据结构期末实训满分。

&#x1f4af; 博客内容&#xff1a;复习数据结构 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &#x1f496; 欢迎大家&#xff1a;这里是CS…

JavaEE学习的第三部分(重点在第四个知识点,SSM框架整合)

一、拦截器 Spring MVC的拦截器(Interceptor) 类似于Java Servlet的过滤器&#xff08;Filter&#xff09;。前面学习Java Web学过一点过滤器。 拦截器的作用 是拦截用户的请求&#xff0c;并做相应的处理 。例如在JSP提交表单数据给Controller&#xff0c;先是提交给拦截器的…

计算机毕业论文内容参考|基于Python的高校二手网络交易平台的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势3课题内容相关技术与方法介绍系统分析系统设计系统实现系统测试总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于Python的高校二手网络交易平台的设计与实现 摘要 本文设计并实现了一种基于Python的高校…

3、boostrap图片视频上传展示

boostrap图片视频上传展示 1、展示效果2、html代码 1、展示效果 项目目录结构 2、html代码 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--<link rel"st…

免费使用!国产品牌JoySSL为中国高校网站(edu.cn)提供专属SSL证书

去年9月份&#xff0c;西北工业大学遭受境外网络攻击&#xff0c;目标就是为了窃取重要隐私信息。高校校园信息安全非常重要&#xff0c;因为高校网站是学校的重要门户之一&#xff0c;也是学生、教职工、家长等与学校沟通交流的重要平台。如果高校网站存在安全问题&#xff0c…

Python Dataframe-B更新Dataframe-A

假设现在有两个dataframe&#xff0c;分别是A和B&#xff0c;它们有相同的列text和label。现在想使用B的label来更新A的label&#xff0c;基于它们共同的text。 数据示例 import pandas as pd# Sample DataFrames A and B data_A {text: [text1, text2, text3, text4], labe…

【Nacos 学习记录】

Nacos学习 笔记记录 1. 什么是配置中心&#xff1f;2. 什么是Nacos3. Nacos两大特点3.1 配置管理3.2 服务发现 4. 安装Nacos Server4.1 启动服务器4.2 Java SDK拉取配置4.2.1 添加配置4.2.2 拉取配置4.1.1 OPEN API配置管理API 4.2 post发布配置4.3 get获得配置 1. 什么是配置中…

【C语言】杨辉三角和练习

前言 &#x1f388;大家好&#xff0c;我是何小侠&#x1f388; &#x1f343;大家可以叫我小何或者小侠&#x1f343; &#x1f490;希望能通过写博客加深自己对于学习内容的理解&#x1f490; &#x1f338;也能帮助更多人理解和学习&#x1f338; 君子慎独&#xff0c;不欺…

Echarts区域面积areaStyle用图片进行纹理填充

React DOM结构代码&#xff1a; import fillImg from xx/fillImg.png; // 填充纹理图片...... {/* 趋势图填充纹理图片 */} <img id"fillImg" src{fillImg} style{{ width: 0 }} /> <div id"line" style{{ width: 100%, height: 300 }}></…

2023年5月 少儿编程 中国电子学会图形化编程等级考试Scratch编程一级真题解析(判断题)

2023年5月scratch编程等级考试一级真题 判断题(共10题,每题2分,共20分) 26、默认小猫角色,运行下列程序后,可以看到小猫面向右边,先向右转了30度,又向左转了30度 答案:错 考点分析:考查积木综合使用,由于电脑计算的速度非常快,所以上面的程序看不到右转效果,…

Linux--设置目录或文件的默认权限:umask权限掩码

目录起始权限是从777&#xff0c;普通文件起始权限从666 为何我们创建一个目录或文件&#xff0c;默认权限是你所看到的样子&#xff1f; 因为凡是在umask中出现的权限&#xff0c;都不应该在最终权限中出现&#xff01; 最终权限起始权限&&#xff08;~umask&#xff09…

中间件——统一白名单配置

目录 背景 方案设计 技术点 代码实现 1.切面 2.配置类 3.切面 测试 总结 背景 上线初期提供可配置的白名单用户进行访问验证&#xff0c;把控整体运行风险。 解决痛点&#xff1a; APOLLO企业控制也可以&#xff0c;多个业务功能&#xff0c;要配置多个apollo&…

linux docker安装及报错处理

一、Linux安装docker 1.1 前提 要求Linux内核&#xff08;kernel&#xff09; 版本大于等于3.8。&#xff08;kernel version >3.8&#xff09;。 查看当前系统内核版本 uname -a | awk {split($3,arr,"-");print arr[1]} 1.2 linux 安装docker Centos安装doc…

基于Python所写的火车票分析助手设计

点击以下链接获取源码资源&#xff1a; https://download.csdn.net/download/qq_64505944/87964234 《火车票分析助手》程序使用说明 在PyCharm中运行《火车票分析助手》即可进入如图1所示的系统主界面。 图1 系统主界面 具体的操作步骤如下&#xff1a; &#xff08;1&…

什么是KubeEdge?

什么是Kubernetes&#xff1f; Kubernetes&#xff08;K8s&#xff09;是一款由谷歌开源的容器集群管理系统。它基于容器技术&#xff0c;为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列功能。 什么是KubeEdge&#xff1f; KubeEdge做的是基于k8s构建&a…