【tensorrt】——PluginV2Layer must be V2Ext or V2IOExt or V2DynamicExt when there is no implicit batch d

本文主要是介绍【tensorrt】——PluginV2Layer must be V2Ext or V2IOExt or V2DynamicExt when there is no implicit batch d,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

tensorrt

1. tensorrt插件

  1. 用c++为tensorrt写了插件,继承自IPluginV2
  2. pybind11进行python注册
namespace torch2trt {PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {py::class_<InterpolatePlugin>(m, "InterpolatePlugin")               // 用 pybind11 封装一个 python 能调用的 c++.def(py::init<std::vector<int64_t>, std::string, bool>(), py::arg("size"), py::arg("mode"), py::arg("align_corners")).def(py::init<const std::string &>(), py::arg("data")).def("getSerializationSize", &InterpolatePlugin::getSerializationSize).def("deserializeFromString", &InterpolatePlugin::deserializeFromString).def("serializeToString", [](const InterpolatePlugin& plugin) {std::string data = plugin.serializeToString();return py::bytes(data);});py::class_<GroupNormPlugin>(m, "GroupNormPlugin").def(py::init<int64_t, at::Tensor, at::Tensor, double>(), py::arg("num_groups"), py::arg("weight"), py::arg("bias"), py::arg("eps")).def(py::init<const std::string &>(), py::arg("data")).def("getSerializationSize", &GroupNormPlugin::getSerializationSize).def("deserializeFromString", &GroupNormPlugin::deserializeFromString).def("serializeToString", [](const GroupNormPlugin& plugin) {std::string data = plugin.serializeToString();return py::bytes(data);});}
} // namespace torch2trt
  1. 在python中进行使用
from torch2trt.plugins import InterpolatePlugin
PLUGIN_NAME = 'interpolate'
registry = trt.get_plugin_registry()
for c in registry.plugin_creator_list:print("plugin name:", c.name, "plugin namespace:", c.plugin_namespace)if c.name == PLUGIN_NAME and c.plugin_namespace == 'torch2trt':creator = cbreak
torch2trt_plugin = InterpolatePlugin(size=size, mode=mode, align_corners=align_corners)             # python 封装的 c++ 类
intert = creator.deserialize_plugin(PLUGIN_NAME, torch2trt_plugin.serializeToString())                   # 这两应该是一样的,为啥要用后面的这个。。。

报错:
[TensorRT] ERROR: interprate: PluginV2Layer must be V2Ext or V2IOExt or V2DynamicExt when there is no implicit batch dimension.
[TensorRT] ERROR: interprate: PluginV2Layer must be V2Ext or V2IOExt or V2DynamicExt when there is no implicit batch dimension.
[TensorRT] ERROR: Layer interprate failed validation
[TensorRT] ERROR: Network validation failed.

解决方案
参考:https://forums.developer.nvidia.com/t/add-plugins-to-network-in-c-api-with-explicit-batch-dimension-in-tensorrt-7/110076/3

Hi,You would need to update the plugin.
The plugin that we ship is derived from IPluginV2, however, the OSS plugin is IPluginV2Ext, so you use TRT OSS plugin code instead.Thanks

应该是我的插件类继承自IPluginV2类的问题。后面再看怎么解决。

2. 验证

reference

  1. https://www.fatalerrors.org/a/0dpw0Do.html
  2. https://oldpan.me/archives/tensorrt-plugin-one-post-get-it

这篇关于【tensorrt】——PluginV2Layer must be V2Ext or V2IOExt or V2DynamicExt when there is no implicit batch d的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056756

相关文章

tensorrt 下载地址

tensorrt 下载地址 https://developer.nvidia.com/tensorrt refer: https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html

Error: label vector and instance matrix must be double的解决方法

在使用uci下载的数据时,建模时出现这个错误的解决方法 首先现在UCI上面下载数据 然后右键另存为就行了。这样我们就从UCI里面下载到了训练数据 在matlab 点 导入数据,数据类型要记得选第二个, 如果选择最后一个table就会出现这个问题 最后附上代码 %%之前先import wine.date IMPORTED DATA 设为Numeric Matrix (数值矩

简单的spring batch学习

前言 公司批量任务是数据库执行的,想修改成java执行批量任务,所以简单了解了下springbatch批量任务框架,此处是其学习笔记,具体学习视频地址为bilibili springbatch,以下为其学习笔记内容以及源码信息 一、课程目标 课程目标 系统了解Spring Batch批处理 项目中能熟练使用Spring Batch批处理 课程内容 前置知识 Java基础

yolov8-obb旋转目标检测onnxruntime和tensorrt推理

onnxruntime推理 导出onnx模型: from ultralytics import YOLOmodel = YOLO("yolov8n-obb.pt") model.export(format="onnx") onnx模型结构如下: python推理代码: import cv2import mathimport numpy as npimport onnxr

选取训练神经网络时的Batch size ,BatchNorm

BatchNorm 优点:对于隐藏层的每一层输入,因为经过激活函数的处理,可能会趋向于大的正值和负值,容易出现梯度下降和梯度消失。所以强行拉回到服从均值为0,方差为1的标准正态分布,避免过拟合 缺点:正是因为这种强行改变分布的手段,使得隐层输入和原始数据分布差异太大,如果数据量不大时,容易欠拟合。可能不用更好一些 https://www.zhihu.com/search?type=conte

CUDA与TensorRT学习三:TensorRT基础入门

文章目录 一、TensorRT概述二、TensorRT应用场景三、TensorRT模块四、导出并分析ONNX五、剖析ONNX架构并理解Protobuf六、ONNX注册算子的方法七、快速分析开源代码并导出ONNX八、使用trtexec九、trtexec log分析 一、TensorRT概述 二、TensorRT应用场景 三、TensorRT模块 四、导出并分析ONNX 五、

《Efficient Batch Processing for Multiple Keyword Queries on Graph Data》——论文笔记

ABSTRACT 目前的关键词查询只关注单个查询。对于查询系统来说,短时间内会接受大批量的关键词查询,往往不同查询包含相同的关键词。 因此本文研究图数据多关键词查询的批处理。为多查询和单个查询找到最优查询计划都是非常复杂的。我们首先提出两个启发式的方法使关键词的重叠最大并优先处理规模小的关键词。然后设计了一个同时考虑了数据统计信息和搜索语义的基于cardinality的成本估计模型。 1.

如何处理批次效应(batch effect)

1、如何处理批次效应(batch effect) https://www.plob.org/article/14410.html 2、基于多数据集分析ANLN在宫颈癌所起到的功能 https://www.omicsclass.com/article/769

神经网络训练不起来怎么办(五)| Batch Normalization

Ⅰ,领域背景 训练困境:当 input feature 在不同 dimension 上差距很大的时候,会产生一个非常崎岖的 error surface(误差平面)。这种崎岖多变的误差平面容易导致训练陷入以下的几个困境。 收敛困难:在崎岖的误差表面上,梯度下降等优化算法很容易陷入局部最小值或者鞍点,并且很难继续优化。这会导致模型无法收敛到全局最优解,训练过程变得非常困难。训练速度变慢:由于优化算

tensorrt plugin

自定义plugin 流程 首先明确要开发的算子,最好是 CUDA 实现;继承 IPluginV2DynamicExt / IPluginV2IOExt类实现一个Plugin 类,在这里调用前面实现的算子;继承 IPluginCreator 类实现一个 PluginCreator 类,用于创建插件实例,然后注册该 Creator 类;编译插件项目,生成动态链接库;在构造 engine 之前,