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. IIS7.5配置对PHP的支持

    以下环境是 Windows server2008R2 IIS7.5 一般情况下,windows server系统默认是仅支持IIS+asp 或 IIS+aspx 的 搭配的,但是有时候我们的网站程序是 ...

  2. 常见设备/CMS弱口令

    目录 tomcat Apache axis2 Apache ActiveMQ zabbix RabbitMQ zentao

  3. Docker配置阿里云镜像加速器及开启远程连接

    适用于CentOS-7版本 mkdir /etc/docker vim /etc/docker/deamon.json 添加以下内容配置镜像 { "registry-mirrors" ...

  4. layui中的多图上传

    效果展示: 1.html部分: 注:<input> 作为隐藏域,用于保存多图上传的资源数组,方便后期进行 form 表单的提交 <input type="hidden&qu ...

  5. window 10 删除文件夹需要管理员权限

    如果设了当前的账号有权限删除了, 还是显示删除里管理员则需要改: 按Win+R组合键,输入gpedit.msc点击确定: 在窗口边依次打开计算机配置--Windows设置--安全设置--本地策略--安 ...

  6. 一文读懂 SuperEdge 云边隧道

    作者 李腾飞,腾讯容器技术研发工程师,腾讯云TKE后台研发,SuperEdge核心开发成员. 杜杨浩,腾讯云高级工程师,热衷于开源.容器和Kubernetes.目前主要从事镜像仓库,Kubernete ...

  7. 了解常用数据库MySQL、Oracle、MongoDB

    本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net 注:转载文章 什么是数据库 简单的说,数据库(英文 Dtabase)就是一个存放数据的仓库,这个仓库是按照一定的数据结果( ...

  8. Java线程池的工作流程

    线程池刚被创建的时候,只是向系统里申请一个用于执行流程队列和管理线程池的线程资源.在调用execute()添加一个任务时,线程池会按照以下流程执行: 1.如果正在运行的线程数少于corePoolSiz ...

  9. [bug] SSM项目:Cannot load driver class: com.mysql.jdbc.Driver

    检查pom文件,mysql包部分为: <dependency> <groupId>mysql</groupId> <artifactId>mysql-c ...

  10. [刷题] 447 Number of Boomerangs

    要求 给出平面上n个点,寻找存在多少点构成的三元组(i j k),使得 i j 两点的距离等于 i k 两点的距离 n 最多为500,所有点坐标范围在[-10000, 10000]之间 示例 [[0, ...