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,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...
随机推荐
- hdu4282 x^z+y^z+x*y*z=k 解的个数
题意: x^z + y^z + x*y*z = k; (x < y ,z > 1),给你一个k问有多少组解. 思路: 暴力枚举z,y,然后二分查找x.注意一点最好用 ...
- 从苏宁电器到卡巴斯基第29篇:难忘的三年硕士时光 VII
我们可能无家可归 那天晚上和导师道别后,我们几个还聚在一起开了一个小会.当时大家觉得最坏的情况就是学院不肯让步,不能满足我们导师提出的条件.那么这样的话,我们几个只能够重新找导师了.而我们数媒专业里面 ...
- IDS入侵检测系统
目录 IDS入侵检测系统 入侵检测系统的作用 入侵检测系统功能 入侵检测系统的分类 入侵检测系统的架构 入侵检测工作过程 数据检测技术 误用检测 异常检测 IDS的部署 基于网络的IDS 基于主机的I ...
- Windows核心编程笔记之内核对象
0x01 子进程继承父进程内核对象句柄 父进程 #include <Windows.h> #include <iostream> #include <strsafe.h& ...
- Windows PE导出表编程4(重构导出表实现私有函数导出)
本次是尝试调用DLL里面的私有函数. 一: 之前先探索一下,首先可以考虑用偏移量来调用,就是如果知道了某个私有函数和某个导出的公共函数的相对便宜的话,直接加载dll获取公共函数地址,然后自己手动去偏移 ...
- 在网页添加 Live2D 看板娘
只需要将以下代码粘贴到 标签中即可 <!--看板娘--> <script src="https://cdn.jsdelivr.net/npm/jquery/dist/jqu ...
- BUA软件工程个人博客作业
写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 个人博客作业 课程目标 培养软件开发能力 本作业对实现目标的具体作用 阅读教材,了解软件工程,并比较各 ...
- spring-第三章-jdbc
一,回顾 aop:面向切面编程,就是将一些和主业务流程没有关系的公共代码,提取封装到切面类,通过切入点规则,可以对目标方法进行功能增强;也就是可以再目标方法执行的前后添加一段额外逻辑代码; 二,Jdb ...
- Swagger简明教程
一.什么是swagger Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法, ...
- [刷题] 437 Paths Sum III
要求 给出一棵二叉树及一个数字sum,判断这棵二叉树上存在多少条路径,其路径上的所有节点和为sum 路径不一定始于根节点,终止于叶子节点 路径要一直向下 思路 分情况讨论:根节点在路径上(8) / 根 ...