TensorRT 4 开发者手册 中文版 自定义层/混合精度校准/部署(三-5)

本文档是TensorRT 4开发者手册的第二章摘要,重点介绍了如何通过C++ API添加自定义层,实现混合精度工作模式,以及如何部署优化模型。自定义层扩展了TensorRT的功能,支持多种数据格式。混合精度支持FP16和INT8,以减少内存使用并提高计算性能。最后,探讨了TensorRT模型在云和嵌入式系统的部署策略。
摘要由CSDN通过智能技术生成

原创作品,转载时请务必以超链接形式标明文章原始出处: http://www.dapalm.com/?p=206,作者:大数据,怕了么?

  本手册为TensorRT 4.0.1.6 GA版英文手册翻译而来,博主英文水平一般般,主要作为备忘所用,分享出来以供更多开发者使用。TensorRT Developer Guide手册一共分为四个章节,主要内容在第二、三章,看懂这两章,写代码够用了。第一章为TensorRT综述,就是自吹有多牛逼。第四章为示例,介绍demo的代码结构及功能。开篇是目录,前三章每章为两到三篇,最后第四章示例,会拆分几个关键示例进行详细说明。
  这是第二章最后一部分内容,关于自定义层、混合精度校准、部署。前两个非常重要需要通过具体编程来体会。尤其是自定义层一个新的模型是否能够部署,现阶段一定要保证常见层是支持int8量化的,不然对性能影响很大。

第二章 TensorRT任务

2.14 通过自定义层拓展TensorRT

  TensorRT支持多种类型的层,其功能不断扩展; 但是,可能存在支持的层不满足模型的特定需求。 在这种情况下,用户可以通过使用C ++ API实现自定义层来扩展TensorRT功能。 自定义层(通常称为插件)由应用程序实现和实例化,它们必须跨越TensorRT引擎的生命周期。

2.14.1 使用C++API添加自定义层

  通过扩展IPluginExt类来实现自定义层。 尽管用户在4.0.1.6版本之前的TensorRT中使用IPlugin类,但现在建议用户扩展IPluginExt类,它包括版本控制(以便在未来的TensorRT版本中保持插件的可移植性),并支持除NCHW和单精度之外支持其他数据格式的自定义层。 本节的其余部分是关于IPluginExt类型插件的使用,它除了支持多数据格式外,其他与IPlugin类型插件基本相同。
  注:IPlugin类型插件只支持单精度NCHW张量。
  插件层使用addPluginExt成员函数(请参考TensorRT API)添加到TensorRT网络中,该方法创建并向网络添加层,然后将层绑定到给定插件。 该方法还返回一个指向图层(IPluginLayerExt类型)的指针,该指针可用于访问层或插件本身(通过getPluginExt)。
要将插件层正确连接到相邻图层,并设置输入和输出数据结构,构建器会调用插件成员函数来检查输出的数量及其维度:

getNbOutputs

  用于指定输出张量的数量。

getOutputDimensions

  用于指定输出维度作为相邻下一层的输入维度的函数。
  此外,在构建阶段中,网络被构造和分析去生成引擎,并且该插件检查支持格式:

supportsFormat

  用于检查插件是否支持给定的数据格式。
  插件层可以支持四种数据格式和布局,分别是单精度NCHW、半精度NCHW、半精度NC/2HW2和半精度NHWC8张量。这些格式由PluginFormatType枚举。
  除了输入和输出张量之外,插件层不进行原位计算(in-place),这需要通过getWorkspaceSize成员函数来指定额外内存空间的要求,以便构建器调用该成员函数来确定和预分配临时空间。
  在构建和推理期间,插件层可能被多次配置和执行。在构建时,为了发现最佳配置,该插件层被配置,初始化,执

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值