TensorRT4.0开发手册(1)

TensorRT 4 开发者手册 中文版 Python接口使用(三-4) 原创作品,转载时请务必以超链接形式标明文章原始出处: http://www.dapalm.com/?p=199,作者:大数据,怕了么?   本手册为TensorRT 4.0.1.6 GA版英文手册翻译而来,博主英文水平一般般,主要作为备忘所用,分享出来以供更多开发者使用。TensorRT Developer Guide手册一共分为四个章节,主要内容在第二、三章,看懂这两章,写代码够用了。第一章为... 阅读详情

 

第一章 综述

NVIDIA的TensorRT是一个基于GPU高性能前向运算的C++库。TensorRT导入网络定义,通过合并tensors与layers,权值转换,选择高效中间数据类型,基于层参数与性能评估的选择,来进行网络优化。

TensorRT提供模型导入途径来帮助你对训练好的深度学习模型进行表示,同于TensorRT的优化与运行。这种优化工具自动进行图优化,层融合,并利用多样化的高度优化的计算核心寻找最快的模型实现方式。输出可以前向运算时可以运行这个网络的运行库。

TensorRT提供了一种基础能力,使得用户可以在Pascal与VoltaGPU上选择性进行快速多精度应用。TensorRT用gcc4.8进行编译。

1.1 TensorRTLayers

TensorRT直接支持以下类型的层:

Activation

激活层通过逐像素激活函数实现。支持的激活类型包括,RELU,tanh与sigmoid.

BatchGemm

批矩阵相乘层实现了批矩阵的乘法运算。在矩阵相乘前矩阵可以进行转置。当维度不匹配的时候会进行适当的矩阵扩展。

Concatenation

连接层在通道维度上将宽高相同的tensors进行连接。

Constant

Constant层是一个提供本层参数的tensor,使得常量在计算时可以方便使用。

Convolution

Convolution层计算3D卷积(通道,高,宽),可选择是否使用偏置。

Deconvolution

Deconvolution层实现了去卷积运算,可选择是否使用偏置。

ElementWise

ElementWise层也叫做Eltwise层,实现了逐像素操作。支持加法,乘法,最大,减法,除法,指数运算。

Flatten

Flatten层在保持batch_size的同时,将输入转成一个向量。假设第一个维度表示batch大小。Flatten只能在全连接层前使用。

FullConnected

全连接层实现了矩阵向量积运算,可选择是否使用偏置。

Gather

Gather层实现了聚集操作,将一个数据tensor,一个索引tensor,一个数据tensor axis作为输入,利用索引index将数据tensor重建索引。当前,只有TensorRT C++API支持。

LRN

LRN层实现跨通道局部响应归一化。

MartrixMultipy

矩阵乘法层实现了一系列的矩阵相乘运算。在乘法运算前可以选择是否将矩阵转置。当维度不匹配的时候会进行适当的矩阵扩展。

Padding

Padding层实现了tensors的空间0扩展。Padding可以是不同维度,不对称的,也可以是正的(tensor扩展结果),或者负的(均值结果)。

Plugin

Plugin层允许用户实现原生TensorRT不支持的层。

Pooling

Pooling层在通道维度实现池化操作。支持最大池化与均值池化。

Ragged SoftMax

Ragged SoftMax实现了包含不同长度序列tensor的跨通道的Softmax。序列的长度利用另外一个tensor输入。

Reduce

Reduce使用降维算法实现了tensors降维操作。降维运算支持像素相乘,最大,最小,平均。目前只有TensorRT的C++API支持这个层。

RNN

这个层在RNNV2层出现后已经弃用了,然而还是向下兼容。

RNNv2

RNNv2实现了类似递归神经网络,GRU,LSTM这样的递归层。当前支持RNN,GPU,LSTM。

Scale

Scale层实现了逐tensor,逐通道,逐权重的仿射变换,与或运算,以及常数幂运算。

Shuffle

Shuffle层用来实现tensors得重新排序,可以用来进行reshape或者数据转换。

SoftMax

SoftMax实现了跨通道的softmax。

Squeeze

Squeeze层将tensor中维度为1的shape。

TopK

TopK层在一个维度中寻找TopK元素,返回降维的tensor,与一个位置索引的tensor。

Unary

Unary支持元素级的一元操作。支持exp,log,sqrt,recip,abs与neg操作。

注:

BatchNormalization可以利用TensorRT的Scale层实现。

卷积层进行的操作实际上是相关操作。这样主要是考虑通过TensorRT API导入权重,而不是通过NVCaffe解析库。

1.2 关键概念

确保你对一下关键概念熟悉:

网络结果定义(Network definition)

网络定义有由一系列层与tensors集组成。

层(layer)

每个层根据一系列输入tensors计算输出的tensors。层具有一些参数,例如convolution size,stride,filter wights。

Tensor

Tensor既可以是网络的输入,也可以是输出。Tensors通过数据类型(data-type)来指定精确度,例如16-bit float或者32bit float。Tensors有三个维度,例如通道(channels),宽(weight),高(height)。输入tensors的维度由应用决定,输出的tensor维度由builder推理出来。支持的维度是N(P_1,P_2,P_3)CHW格式,其中P_1,P_2等是索引维。Tensors最多可以有Dims::MAX_DIMENSIONS维度,设为常量8。

Tensors在batch间可见。这样的tensor的batchsize维度(公式中为N)为1,不管网络在运行的时候batchsize多大。所以,当这个tensor是输入的时候,他会独立于batchsize。适当的时候使用的是标准的广播(broadcasting)规则。

输入tensor是否在batch间广播取决于网络定义,输出tensor则取决于builder。在确保build过程batch中每个元素数据的前提下,builder会将广播中间与输出tensors。所以batch间广播的操作往往会产生tensor在batch间广播的效果。例如,运算将在广播前进行,广播将推到运算链里。如果整个操作链都在没有广播的状态下实现,输出的tensor可能作为一个batch间广播的掩模,意味着是否在batch间广播取决于应用需求。

在读写batch间广播的tensor对应内存的时候,需要有些特别注意的问题。不管在运行是网络的batchsize是多少,数据都是按照batchsize等于1排列的。因此,batch间共享的tensors比由N个相同数据副本对应N各batch元素的tensors会更加节省内存。

每个层与tensor都有一个名字,这些名字在解析或者读取TensorRT生成日志的时候有用。

当使用NvCaffeParser时,tensor与layer的名字是根据NVCaffe的prototxt文件命名。

数据类型(DataType)

Tensors支持的有效数据类型是Kfloat,Khalf,Kint8与Kint32。对于网络输入来说,需要在设置网络输入时指定数据类型。其它的tensors类型可以通过tensor中的setType方式实现。输入与输出不能是kINT8类型。kINT32表示索引值,Kint8表示编码成8bit的浮点值。详见SampleINT8-Calibration 与8-bit Inference,取得更多有关8-bit整形的inference性能。

Broadcasting

Broadcasting当两个tensor间维度不匹配时起作用。当两个tensor同个索引的维度长度不等,并且其中一个tensors维度是1,这时broadcasting工作。假设两个tensor,一个为(N,1,H,W)一个为(1,C,H,W),第二个tensor在batch维度broadcastN次,第一个tensor在channel维度broadcastC次,得到(N,C,H,W)。不是所有层都支持Broadcasting。取得更多NumPy中broadcasting的意义,见Braodcasting。

1.3 TensorRT API’s

TensorRT API允许开发者导入,校验,生成与部署优化网络。网络可以直接通过NVCaffe或者其他支持UFF与ONNX格式的框架。也可以通过编程的方式,导入每层与相关参数与权重。

除了主要的C++接口外,TensorRT还带有python接口。TensorRT的python接口当前支持所有功能。接口通过NumPy格式引入层权重,通过PyCUDA引入输入输出数据。还提供了一系列公共函数来解决开发过程中可能会遇到的类似解析NVCaffe模型文件,从流中解析UFF模型,从UFF文件中读写PLAN文件这样的公共问题。这些功能都在tensorrt.utils中实现。

在tensorrt/examples/custom_layers中有python进行用户自实现层的例子。

注:

要使用户可以在python接口中使用自己的C++实现,还需要一些额外的依赖项,例如swig>=3.0,libnvinfer-dev。

 

1.3.1 Python Samples

Python接口支持之前只有C++接口支持的所有功能,包括:

NvCaffeParser

NvUffParser(TensorFlow)

NvONNXParser(Open Neural Network Exchange)

用于图定义的nvinfer API’s

用于建立高效前向引擎的builder

用于执行的前向运算引擎

用于注册自实现层的接口

 

用户可以在{PYTHON_PACKAGE_DIR}/tensorrt/examples中找到python示例。

TensorRT包自带一对示例应用实现。如果是TensorRT安装到系统中则可以找到。

Table1 应用例程位置

想了解更多用python将模型导入到TensorRT中,请参考NVCaffe Python Workflow,TensorFlow Python Workflow, and Converting A Model From An UnsupportedFramework To TensorRT With The TensorRT Python API。

 

1.3.2 Python Workflows

Python是一种流行并且通常再数据科学非常高效的语言并且再许多深度学习框架中都有使用。这里提供一下几种情况的使用用例

有一个ONNX格式的模型,TensorRT包含了ONNX解析器,使得我们可以直接将模型加载到tensorRT中。

有一个TensorFlow模型,使用者希望使用TensorRT调用。

将TensorFlow模型转为TensorRT格式

有一个NvCaffe模型,希望使用TensorRT调用。

将NVCaffe模型转为TensorRT格式。

开发者希望将TensorRT引擎作为像网站后端这样大规模的应用。

开发者希望TensorRT调用当前UFF不支持的训练框架训练的模型或者非NVCaffe训练出来的模型。

 

如需了解以上用例的详细步骤,请看NVCaffe Workflow,TensorFlow Workflow, andConverting A Model From An Unsupported Framework To TensorRT With The TensorRTPython API.


TensorRT 4 开发者手册 中文版 目录(三-1) # 原创作品,转载时请务必以超链接形式标明文章原始出处: http://www.dapalm.com/?p=191,作者:<a href="http://DaPalm.com" target="_blank">大数据,怕了么? 本手册为TensorRT 4.0.1.6 GA版英文手册翻译而来,博主英文水平一般般,主要作为备忘所用,分享出来以供更多开发者使用。TensorRT Deve... 阅读详情

相关推荐

TensorRT 4 开发者手册 中文版 C++接口使用(三-3)

本手册为TensorRT 4.0.1.6 GA版英文手册翻译而来,博主英文水平一般般,主要作为备忘所用,分享出来以供更多开发者使用。TensorRT Developer Guide手册一共分为四个章节,主要内容在第二、三章,看懂这两章,写代码够用了。第一章为TensorRT综述,就是自吹有多牛逼。第四章为示例,介绍demo的代码结构及功能。开篇是目录,前三章每章为两到三篇,最后第四章示例,会拆...

Mars_WH的专栏 5327

模型部署入门教程(八):如何添加 TensorRT 自定义算子

本篇教程我们主要讲述如何在 MMDeploy 代码库中添加一个自定义的 TensorRT 插件,整个过程不涉及太多更复杂的 CUDA 编程,相信小伙伴们学完可以自己实现想要的插件

qq_39967751的博客 4680

Ubuntu 22.04 英伟达开发环境 CUDA 12.4 | cuDNN 9.0.0 | TensorRT 10.1 版本安装指南

笔者近期重整服务器,计划重新安装操作系统并配置新的开发环境。笔者基于此配置和系统环境做出本篇文档的安装指南。安装完整的CUDAcuDNNTensorRT需要准备至少 30GB 的磁盘空间。安装开始前请确保安装了gcc和make。之后笔者采用并安装下面所示的显卡驱动。安装完显卡驱动之后,重启系统。

Kuang Da's Blog 7244

onnx转tensorrt中的问题记录

onnx转tensorrt

qq_44849479的博客 1625

TensorRT API开发手册

第一章 综述 1.1 TensorRTLayers 1.2 关键概念 1.3 TensorRT API’s 1.3.1 Python Samples 1.3.2 Python Workflows 第一章 综述 NVIDIA的TensorRT是一个基于GPU高性能前向运算的C++库。TensorRT导入网络定义,通过合并tensors与layers,权值转换,选择高效中间数据类型,基于...

爱破破爱科研 9508

TensorRT 4 开发者手册 中文版 概述 (三-2)

原创作品,转载时请务必以超链接形式标明文章原始出处: http://www.dapalm.com/?p=193,作者:大数据,怕了么? 本手册为TensorRT 4.0.1.6 GA版英文手册翻译而来,博主英文水平一般般,主要作为备忘所用,分享出来以供更多开发者使用。TensorRT Developer Guide手册一共分为四个章节,主要内容在第二、三章,看懂这两章,写代码够用了。第一章为Te...

Mars_WH的专栏 2649

ubuntu18.04+cuda11.0+tensorrt8.4.2配置安装

无

qq_17364791的博客 2465

TensorRT 5 开发者手册 中文版 使用深度学习框架(三-6)

原创作品,转载时请务必以超链接形式标明文章原始出处: http://www.dapalm.com/?p=206,作者:大数据,怕了么?   本手册为TensorRT 4.0.1.6 GA版英文手册翻译而来,主要作为备忘所用,分享出来以供更多开发者使用。TensorRT Developer Guide手册一共分为四个章节,主要内容在第二、三章,看懂这两章,写代码够用了。第一章为TensorRT综述,...

Mars_WH的专栏 9653

tensorRT教程——tensor RT OP理解(实现自定义层,搭建网络)

首先如果你的自定义操作可以通过一些矩阵操作来实现,那么你大可不必自己去通过plug in的方式实现,可以使用tensor RT 的OP来组合实现。 他的OP极其类似tensor flow的操作,如果看到不理解,那就去谷歌tensor flow的操作,触类旁通即可,但仍有一些文档描述错误。 一些我使用过典型的OP备注如下,并附上一个测试OP的脚本,按需修改即可: 1、reduce层的理解: reduce主要是在各个轴上进行对应的操作。 axes...

TigerZ*的博客 3074

【TensorRT】tensorRT 7.0的安装配置

前几天老黄发布了tensorRT 7.0, 对于模型服务器部署来说,tensorRT是真的香啊。先放官网链接,https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html。 先介绍一下TensorRT TensorRT的核心就是一个深度学习的高性能C++的推理库, 基本适配主流的训练框架,如Tensorfl...

Shwan_ma的博客 2万+

Oracle EBS MRP 模块测试记录

MRP 模块测试记录        构思:创建Shirt成品物料,它由Cloth和Button组成。1*Shirt=1*Cloth+8*Button。        首先创建这三个物料(复制模板创建),并分配给T02。        创建BOM,将这三个物料关联起来。        分别创建资源(人工和设备)制造Cloth和Button。        分别创建两个部门(HumanDep和Mach

NetSuite 张老师 8166

[模型部署] ONNX模型转TRT模型部分要点

ONNX模型转TRT模型时的部分要点。

LaineGates的专栏 1312

MIT Bevfusion环境安装 Docker方式,nuscenes数据处理

Bevfusion环境安装,数据生成报错解决module 'numpy' has no attribute 'long';most likely due to a circular import。bevfusion docker环境

Jack_Man_N的博客 1144

在Jetson TX2开发套件上使用TensorRT7.1.0加速YOLOv4

目录前言 前言

hlld__的博客 5536

WebUI自动化测试框架搭建(python+pytest+selenium+allure)

将鼠标移动到要定位的元素上面>右键>点击“检查”>在元素代码上右键>复制>复制XPath。

m0_63729339的博客 1281

【UV打印机】RYPC打印软件教程(二)-软件界面概述

下图是控制软件的主操作界面.将喷绘机的操作规纳为四块,分别为参数设置,任务选择,打印控制,系统维护,对于日常打印而言,只需操作任务选择,打印控制。从而使汲及的操作相对较少,使得系统对普通用户而言简单易用.

Print World的专栏 3601

【TensorRT】Ubuntu+18.04TensorRT5.1.5.0+ONNX1.4.0+onnx_tensorrt 5.1环境安装 很详细

为了将pytorch模型转换为onnx,并用tensorrt加速,安装了TensorRT5.1.5+ONNX1.4.0+onnx_tensorrt 5.1 1.TensorRT功能说明 TensorRT是NVIDIA 推出的一款基于CUDA和cudnn的神经网络推断加速引擎,相比于一般的深度学习框架,在CPU或者GPU模式下其可提供10X乃至100X的加速,极大提高了深度学习模型在边缘设备上的推断速度。将TensorRT应用在NVIDIA 的TX1或者TX2上,可实现深度学习网络的实时推理,且不需在内存较少

旺仔小姐的博客 1678

从零到一:AVL Cruise与Matlab联合仿真DLL配置的避坑指南

本文详细介绍了AVL Cruise与Matlab联合仿真DLL配置的全流程,包括编译器选择、环境变量设置、DLL编译与模型导出等关键步骤。针对常见问题如版本匹配、路径错误等提供了实用解决方案,帮助工程师高效实现控制策略与整车性能仿真的无缝对接。

weixin_29054399的博客 567

win10+cuda11.4+cudnn8.4+TensorRT-8.4.1.5环境配置

win10+cuda11.4+cudnn8.4+TensorRT-8.4.1.5环境配置

weixin_42408280的博客 6549

GDSFactory环境配置实战:Python、KLayout与PDK协同指南

GDSFactory是面向光子集成电路(PIC)设计的Python参数化建模框架,其核心价值在于将版图生成从手动绘图升维为可编程、可复现、可集成CI/CD的工程实践。它依赖Python科学计算生态(如NumPy)、EDA可视化工具KLayout的深度Python绑定,以及工艺厂PDK的标准化接入,三者构成‘计算-几何-工艺’技术闭环。典型应用场景包括教学级SiEPIC PDK快速原型、工业级AIM Photonics流片准备,以及自动化DRC与光学仿真流水线构建。本文聚焦GDSFactory落地中最关键也最

weixin_30983353的博客 369

CloudCompare 二次开发(36)——非均匀体素降采样

使用CloudCompare与PCL编程实现的非均匀体素降采样。

点云侠的博客 746

VS2019+CUDA10.2+tensorRT7.0+opencv4.12环境配置yolo-tensorrt

为了在windows上运行yolo-tensorrt项目进行了VS2019+CUDA10.2+tensorRT7.0+opencv4.12的环境配置 1.1 首先安装VS2019 进入VS官网下载社区版2019 1.2 安装CUDA和CUDNN 注意:我之前为了配置python的深度学习环境,安装过CUDA,但是精简安装,最好还是重新安装。版本CUDA10.2+cuDNN v7.6.5 进入官网下载CUDA2019 安装CUDA和CUDNN参考这个链接的1.2和1.3节 1.3安装opencv4.1.2 参

free_luojing的博客 5223

气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解

本文详细介绍了基于大模型的光伏功率预测方法,涵盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1周)预测。文章首先讨论了数据准备与预处理,包括历史功率、气象、天文和电站特性数据的收集与特征工程。随后,针对不同预测需求,提出了多种深度学习模型:超短期预测采用1DCNN-LSTM混合模型,短期预测使用Transformer模型,中长期预测则通过多尺度特征提取模型和概率预测方法处理不确定性。文章还提供了模型训练、评估、部署和优化的完整流程,并开源了代码实现。未来研究方向包括结合数值天气预报、开发时

专注AI大模型,软件混淆,授权 1580

从0到1配置TensorRT环境

配置TensorRT环境

qq_45893319的博客 1680

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Ubuntu 22.04 深度学习环境搭建:NVIDIA驱动、CUDA 12.4、cuDNN 9.0.0与TensorRT 10.1一站式配置手册

本文提供了一份在Ubuntu 22.04系统上搭建深度学习环境的详细配置手册。内容涵盖从系统准备、NVIDIA显卡驱动安装,到CUDA 12.4、cuDNN 9.0.0及TensorRT 10.1的一站式部署与验证步骤。通过清晰的命令行操作和关键配置说明,旨在帮助用户高效、稳定地构建支持主流AI框架(如PyTorch、TensorFlow)的GPU计算平台。

z5a6b的博客 828

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

第一步:ubuntu18.04装TensorRT8.0.0.3 + onnx1.8.0 + onnx_tensorrt

一、环境说明 Ubuntu18.04 + cuda10.0 + python3.7.6 + pytorch170 我是直接在镜像里配置所有环境,所以默认root权限。如果在本地配置环境时报权限不足的错误,请自行在语句前加上 sudo。 二、安装TensorRT7.0.0.11 下载安装包 tar包官网下载 解压 tar xzvf TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6.tar.gz 配置环境变量 vim ~/.ba

yx903520的博客 3582
上一篇: 人群密度分析算法调研
下一篇: TensorRT4.0开发手册(2)
abrams90
博客等级 码龄16年 43粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值