TensorRT 7.2.1 开发概要(上)
TensorRT 7.2.1 开发概要(上)
这个TysRR7.2.1开发者指南演示了如何使用C++和Python API来实现最常用的深层学习层。它展示了如何使用深度学习框架构建现有模型,并使用该模型使用提供的解析器构建一个TensorRT引擎。开发指南还提供了常见用户任务的分步指令,例如创建TensorRT网络定义、调用TensorRT builder、序列化和反序列化,以及如何用数据给引擎提供数据并执行推理;同时使用C++或Python API。
有关先前发布的TensorRT开发人员文档,请参阅TensorRT归档文件。
NVIDIATensorRT的核心 是一个C++库,它有助于NVIDIA图形处理单元(GPU)的高性能推理。它旨在与TensorFlow、Caffe、Pythorch、MXNet等训练框架互补工作。它特别关注在GPU上快速高效地运行已经训练过的网络,以生成结果(一个在不同地方被称为评分、检测、回归的过程,或推断)。
一些训练框架,如TensorFlow,已经集成了TensorRT,因此它可以用来加速框架内的推理。或者,TensorRT可以用作用户应用程序中的库。它包括用于从CAFE、ONNX或TensorFlow导入现有模型的分析器,以及以编程方式构建模型的C++和Python API。
Figure 1. TensorRT is a high-performance neural network inference optimizer and runtime engine for production deployment.


TensorRT通过结合层和优化内核选择来优化网络,以提高延迟、吞吐量、能效和内存消耗。如果应用程序指定,它将额外优化网络,以较低的精度运行,进一步提高性能并减少内存需求。
下图显示了定义为部分高性能推理优化器和部分运行时引擎的TensorRT。它可以接收在这些流行框架上训练的神经网络,优化神经网络计算,生成一个轻量级的运行时引擎(这是您唯一需要部署到生产环境中的东西),然后它将最大限度地提高这些GPU平台上的吞吐量、延迟和性能。
Figure 2. TensorRT is a programmable inference accelerator.

TensorRT API包括最常见的深度学习层的实现。有关层的详细信息,请参见TensorRT层。您还可以使用C++插件API或Python插件API来提供不经常使用或更创新的层的实现,这些层是TensorRT不支持的。
在训练神经网络之后,TensorRT可以将网络压缩、优化和部署为一个运行时,而不需要框架的开销。
TensorRT结合层,优化内核选择,并根据指定的精度(FP32、FP16或INT8)执行标准化和转换到优化的矩阵数学,以提高延迟、吞吐量和效率。
对于深度学习推理,有5个关键因素用于衡量软件:
吞吐量
一定时期内的产量。每台服务器的吞吐量通常以推断/秒或采样数/秒来衡量,这对于数据中心的经济高效扩展至关重要。
效率
每单位功率传输的吞吐量,通常用性能/瓦表示。效率是经济高效的数据中心扩展的另一个关键因素,因为服务器、服务器机架和整个数据中心必须在固定的电源预算内运行。
延迟
执行推理的时间,通常以毫秒为单位。低延迟对于提供快速增长的、基于实时推理的服务至关重要。
准确度
经过训练的神经网络传递正确答案的能力。对于基于图像分类的用法,关键指标表示为前5个或前1个百分比。
内存使用
在网络上进行推理所需保留的主机和设备内存取决于所使用的算法。这限制了在给定的推理平台上可以运行哪些网络和哪些网络组合。这对于需要多个网络且内存资源有限的系统尤其重要,例如用于智能视频分析的级联多类检测网络和多摄像头、多网络自动驾驶系统。
Alternatives to using TensorRT include:
- Using the training framework itself to perform inference.
- Writing a custom application that is designed specifically to execute the network using low-level libraries and math operations.
使用训练框架来执行推理是很容易的,但是在给定的GPU上往往会导致比使用像TensorRT这样的优化解决方案可能要低得多的性能。训练框架倾向于实现更通用的代码,强调通用性,当它们被优化时,优化往往集中在有效的训练上。
只需编写一个自定义应用程序来执行一个神经网络可以获得更高的效率,但是,它可能是相当劳动密集的,并且需要相当多的专业知识才能在现代GPU上达到高水平的性能。此外,在一个GPU上工作的优化可能无法完全转化为同一系列中的其他GPU,并且每一代GPU都可能引入新功能,这些功能只能通过编写新代码来利用。
TensorRT通过将抽象出特定硬件细节的高级API和优化推理以实现高吞吐量、低延迟和低设备内存占用的实现来解决这些问题。
1.1.1. Who Can Benefit From TensorRT
TensorRT供工程师使用,这些工程师负责根据新的或现有的深度学习模型构建特性和应用程序,或者将模型部署到生产环境中。这些部署可以部署到数据中心或云中的服务器、嵌入式设备、机器人或车辆中,或运行在工作站上的应用软件中。
TensorRT已成功应用于多种情况,包括:
机器人
公司销售的机器人使用TensorRT运行各种计算机视觉模型,在动态环境中自动引导无人驾驶系统飞行。
自动驾驶汽车
TensorRT用于NVIDIA驱动器产品中的计算机视觉。
科学技术计算
一个流行的技术计算包嵌入了TensorRT,以实现神经网络模型的高吞吐量执行。
深度学习训练和部署框架
TensorRT学习框架包括TensorRT和一些流行的MXNet流框架。有关TensorFlow和MXNet容器发行说明,请参阅TensorFlow发行说明和MXNet发行说明。
视频分析
TensorRT被用于NVIDIA的DeepStream产品中,为复杂的视频分析解决方案提供强大的支持,无论是在1-16个摄像头的边缘,还是在数据中心,数百甚至数千个视频源可能会聚集在一起。
自动语音识别
TensorRT用于小型桌面/桌面设备上的语音识别。在云端提供了更大词汇量的语音识别系统,该设备支持有限的词汇量。
TensorRT 7.2.1 开发概要(上)的更多相关文章
- TensorRT 7.2.1 开发概要(下)
TensorRT 7.2.1 开发概要(下) 1.2. Where Does TensorRT Fit? 一般来说,开发和部署深度学习模型的工作流要经过三个阶段. Phase 1 is trainin ...
- TensorRT 7.2.1开发初步
TensorRT 7.2.1开发初步 TensorRT 7.2.1开发人员指南演示了如何使用C ++和Python API来实现最常见的深度学习层.它显示了如何采用深度学习框架构建现有模型,并使用该模 ...
- TensorRT 基于Yolov3的开发
TensorRT 基于Yolov3的开发 Models Desc tensorRT for Yolov3 https://github.com/lewes6369/TensorRT-Yolov3 Te ...
- easycwmp在开发板上的配置
原创作品,转载请注明出处 copyright:weishusheng 2015.3.18 email:642613208@qq.com 平台: Linux version 2.6.32-279.e ...
- FS210开发板上Qt4.7.0移植过程
作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...
- 开发板上使用core文件调试
转载:http://www.nginx.cn/1521.html 如果开发板的操作系统也是linux,core调试方法依然适用.如果开发板上不支持gdb,可将开发板的环境(依赖库).可执行文件和cor ...
- [转载]在iTOP-4412开发板上调试helloworld应用
本文转自迅为论坛:http://www.topeetboard.com 1.安装ADB驱动 在开发板上调试 Android 应用,首先要安装 ADB 驱动. 通过“SDK Manager.exe”来安 ...
- iOS 自定义控件开发(上)
工作需要,最近在进行iOS方面的图表工作.找了很多第三方库都无法实现效果,所以决定自己写一个控件. <iOS 自定义控件开发(上)> <iOS 自定义控件开发(中)> #0 目 ...
- DE1-SOC开发板上搭建NIOS II处理器运行UCOS II
DE1-SOC开发板上搭建NIOS II处理器运行UCOS II 今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...
随机推荐
- hdu3746 KMP的next数组应用,求项链首尾项链循环
题意: 给你一个项链,问你最少加多少个珠子能满足整个项链是一个循环的项链(首尾相连) 思路: KMP的简单应用只要了解next数组的意义就好说了,下面总结下 next在循环方面 ...
- VRRP中的上层回的路由
如图,PC1和PC2处于不同网段,他们到AR3都有两条路可以选,现在要让他们到达AR3负载均衡,并且当AR1和 AR2的其中一个路由器挂了之后,他们仍然可以正常到达AR3. 他们去往AR3的VRRP的 ...
- POJ 3613 快速幂+Floyd变形(求限制k条路径的最短路)
题意: 给你一个无向图,然后给了一个起点s和终点e,然后问从s到e的最短路是多少,中途有一个限制,那就是必须走k条边,路径可以反复走. 思路: 感觉很赞的一个题目,据说证明是什 ...
- Windows PE第九章 线程局部存储
线程局部存储(TLS) 这个东西并不陌生了,之前写过了一个关于这个的应用,利用静态TLS姿势实现代码段静态加密免杀或者所谓的加壳思路.地址在这:http://blog.csdn.net/u013761 ...
- node-mongo-服务器封装
分为三个文件 mongo.js基本的封装了下mongo数据库操作 workmongo.js 里面有路由和解析操作(可以根据具体业务进行扩充) mainmongo.js 服务器相关 调用例子: 查询数据 ...
- 使用C#实现一个PPT遥控器
说明 本项目参考了 https://github.com/yangzhongke/PhoneAsPrompter 项目来完成实现,并对其进行了一些修改完善. 完整代码可以到 https://githu ...
- 从0开始fastjson漏洞分析
关于fastjson漏洞利用参考:https://www.cnblogs.com/piaomiaohongchen/p/10799466.html fastjson这个漏洞出来了很久,一直没时间分析, ...
- 【Matlab】BFSK的调制与解调仿真
写在前面 本篇是[Matlab]BASK的调制与解调仿真的下篇,考虑到阅读体验,故另开一篇分享将BFSK的调制与解调仿真. 索引 写在前面 一.BFSK的调制 1.1 异频载波生成 1.2 信号合并 ...
- (原创)高DPI适配经验系列:(四)高DPI适配示例
一.前言 光说不练假把式. 原理说再多,也不如一个例子直观明了.所以本篇文章就来通过一个例子演示一下高DPI适配的流程. 相信看完的你,一定会有所收获! 本文地址:https://www.cnblog ...
- Flutter 2.2 更新详解
Flutter 2.2 版已正式发布!要获取新版本,您只需切换到 stable 渠道并更新目前安装的 Flutter,或前往 flutter.cn/docs/get-started 从头开始安装. 虽 ...