TensorRT 7.2.1 开发概要(上)

Abstract

这个TysRR7.2.1开发者指南演示了如何使用C++和Python API来实现最常用的深层学习层。它展示了如何使用深度学习框架构建现有模型,并使用该模型使用提供的解析器构建一个TensorRT引擎。开发指南还提供了常见用户任务的分步指令,例如创建TensorRT网络定义、调用TensorRT builder、序列化和反序列化,以及如何用数据给引擎提供数据并执行推理;同时使用C++或Python API。

有关先前发布的TensorRT开发人员文档,请参阅TensorRT归档文件。

1. What Is 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不支持的。

1.1. Benefits Of 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 开发概要(上)的更多相关文章

  1. TensorRT 7.2.1 开发概要(下)

    TensorRT 7.2.1 开发概要(下) 1.2. Where Does TensorRT Fit? 一般来说,开发和部署深度学习模型的工作流要经过三个阶段. Phase 1 is trainin ...

  2. TensorRT 7.2.1开发初步

    TensorRT 7.2.1开发初步 TensorRT 7.2.1开发人员指南演示了如何使用C ++和Python API来实现最常见的深度学习层.它显示了如何采用深度学习框架构建现有模型,并使用该模 ...

  3. TensorRT 基于Yolov3的开发

    TensorRT 基于Yolov3的开发 Models Desc tensorRT for Yolov3 https://github.com/lewes6369/TensorRT-Yolov3 Te ...

  4. easycwmp在开发板上的配置

    原创作品,转载请注明出处 copyright:weishusheng   2015.3.18 email:642613208@qq.com 平台: Linux version 2.6.32-279.e ...

  5. FS210开发板上Qt4.7.0移植过程

    作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...

  6. 开发板上使用core文件调试

    转载:http://www.nginx.cn/1521.html 如果开发板的操作系统也是linux,core调试方法依然适用.如果开发板上不支持gdb,可将开发板的环境(依赖库).可执行文件和cor ...

  7. [转载]在iTOP-4412开发板上调试helloworld应用

    本文转自迅为论坛:http://www.topeetboard.com 1.安装ADB驱动 在开发板上调试 Android 应用,首先要安装 ADB 驱动. 通过“SDK Manager.exe”来安 ...

  8. iOS 自定义控件开发(上)

    工作需要,最近在进行iOS方面的图表工作.找了很多第三方库都无法实现效果,所以决定自己写一个控件. <iOS 自定义控件开发(上)> <iOS 自定义控件开发(中)> #0 目 ...

  9. DE1-SOC开发板上搭建NIOS II处理器运行UCOS II

    DE1-SOC开发板上搭建NIOS II处理器运行UCOS II   今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...

随机推荐

  1. POJ2553 强连通出度为0的应用

    题意:       给你一个有向图,然后问你有多少个满足要求的点,要求是: 这个点能走到的所有点都能走回这个点,找到所有的这样的点,然后排序输出. 思路:       可以直接一遍强连通缩点,所点之后 ...

  2. c#-全局键盘钩子

    using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using ...

  3. Portswigger web security academy:OAth authentication vulnerable

    Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...

  4. WPF之事件绑定命令

    目录 事件绑定意义 无参数的事件绑定 带EventArgs参数的事件绑定 使用事件绑定 扩展:基于InvokeCommandAction源码的实现(推荐) 参考资料 事件绑定意义 一般事件的处理程序都 ...

  5. 基于queue的python多进程日志管理

    在我们的异常检测应用中,需要对每组IoT设备分别训练一个模型,每个模型对一组设备的指标数据进行实时异常检测.方案采用master-worker+消息队列的方式实现模型对外服务,但是每个worker的日 ...

  6. @shiro.hasPermission 使用

    在页面上加上@shiro.hasPermission 如下用.ftl为例子: 当加上shiro标签后,会与后台代码结合使用: 需要继承AuthorizingRealm  下的 protected Au ...

  7. JAVA并发(1)-AQS(亿点细节)

    AQS(AbstractQueuedSynchronizer), 可以说的夸张点,并发包中的几乎所有类都是基于AQS的. 一起揭开AQS的面纱 1. 介绍 为依赖 FIFO阻塞队列 的阻塞锁和相关同步 ...

  8. 山东浪潮超越3B4000申泰RM5120-L

    龙芯解决方案 首页 > 龙芯业务 > 龙芯解决方案和产品生态 > 整机产品 > 服务器 > 详情 超越申泰RM5120-L 服务器 超越申泰RM5120-L 服务器 20 ...

  9. [刷题] 279 Perfect Squares

    要求 给出一个正整数n,寻找最少的完全平方数,使他们的和为n 示例 n = 12 12 = 4 + 4 + 4 输出:3 边界 是否可能无解 思路 贪心:12=9+1+1+1,无法得到最优解 图论:从 ...

  10. Linux系统(控制节点)部署环境

    环境部署 重点说明:安装ansible时去控制Windows机器,由于需要在Linux系统上安装pywinrm插件,而使用yum安装锝ansible是无法调用pywinrm插件,所以整体使用pip工具 ...