热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Tensorrt自定义算子实现步骤

Tensorrt自定义算子实现步骤目的这篇文章主要是用于记录tensorrt自定义算子的过程.这里采用的是torch2trt直接转换的方式.实验思路:造一个pytorch中

Tensorrt自定义算子实现步骤


目的

这篇文章主要是用于记录tensorrt自定义算子的过程.这里采用的是torch2trt直接转换的方式.


实验思路:

造一个pytorch中支持的操作,但是tensorrt中不支持的,也是说用torch2trt不能直接转换过去的算子,然后通过自定义一个插件实现跟torch中一样的功能,然后再用torch2trt接口就能转换成功了.


下面是具体步骤

在模型中造一个自定义的算子:

这里torch中的自定义算子为do_custom_op_shift,其功能是将输入参数增加一个偏移
在这里插入图片描述


定义一个模型,使用这个算子:

在这里插入图片描述


用minist数据集训练这个模型得到一个pytorch模型

在这里插入图片描述


用torch2trt接口转换模型,出现错误.

在这里插入图片描述
在这里插入图片描述
出现上面这种原因是因为在do_custom_op_shift这个函数中使用了tensorrt不支持的op,我们再看一下这个操作:
在这里插入图片描述
这个函数do_custom_op_shit在torch的模型中能够正常运行,但是不能转换成tensorrt的模型,现在需要做的就是给tensorrt增加一个自定义的算子,让他实现do_custom_op_shift的功能.


使用自定义算子解决问题


赖工程工程

https://github.com/grimoire/torch2trt_dynamic
https://github.com/grimoire/amirstan_plugin


修改torch2trt_dynamic工程,这里是用python接口层面上增加一个自定义算子

再converters文件夹中增加一个converter命名为custom_op_shift.py,并在converters/init.py中增加一行

from .custom_op_shift import *

custom_op_shift.py的代码如下,这个文件的作用就是写一个接口,让他替换do_custom_op_shift的操作,这里的操作需要能够被tensorrt支持:
在这里插入图片描述
在plugins文件夹下增加一个plugin命名为create_shifop_plugin.py,并再plugins/init.py中增加一行代码

from .create_shiftop_plugin import create_shiftop_plugin

create_shifop_plugin.py的代码如下所示:
在这里插入图片描述


修改amirstan_plugin工程,这里是用ShiftPluginDynamic算子的具体实现

在include文件夹下增加一个文件,shiftPlugin.h
在这里插入图片描述
在src文件加下增加一个文件夹,命名为shiftPlugin,这里创建跟shiftPlugin有关的操作.
在这里插入图片描述
修改src/plugin/CMakeList.txt文件,增加shiftPlugin
在这里插入图片描述
修改src/plugin/InferPlugin.cpp,增加一行
在这里插入图片描述
重新编译这个工程.
重新安装torch2trt,再使用torch2trt接口转换上面的那个模型,就能成功了.


推荐阅读
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
author-avatar
手机用户2502855967
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有