tensorrt的部署和问题

问题1
模型输入输出不支持字典,将pytorch首先转化为onnx,然后让TensorRT解析onnx从而构建TensorRT引擎。
让TensorRT直接加载引擎文件,也就是说,我们先把onnx转化为TensorRT的trt文件,然后让c++环境下的TensorRT直接加载trt文件,从而构建engine,所以需要将.pth模型文件转换为onnx,当onnx转换为trt时,报错:
ERROR: Failed to parse the ONNX file.
parser.get_error(error) In node 29 (convert_axis): UNSUPPORTED_NODE: Assertion failed: axis >= 0 && axis < nbDims
此处node 29定位问题的方法,需要将onnx模型可视化,直接调用netron库,即可显示
在这里插入图片描述
显示内容如下:
在这里插入图片描述
第29节点转换报错,第一节点为25,遂在第一节点基础上加29,查找54网络结构如下:
发现出现了并不支持的‘ Gather ’
在这里插入图片描述问题2
Loading ONNX file from path ep_200_res50_batchsize_1_input_output.onnx…
Beginning ONNX file parsing
Completed parsing of ONNX file
layers: 0
python3.6: …/builder/Network.cpp:863: virtual nvinfer1::ILayer* nvinfer1::Network::getLayer(int) const: Assertion `layerIndex >= 0’ failed.
已放弃 (核心已转储)
解决方法:使用管理员权限即可

问题3
TypeError: a bytes-like object is required, not ‘Tensor’**
Traceback (most recent call last):
File “compare_example.py”, line 132, in
img_leaf_evaluate(img)
File “compare_example.py”, line 115, in img_leaf_evaluate
inputs, outputs, bindings, stream = allocate_buffers(engine) # input, output: host # bindings
File “compare_example.py”, line 52, in allocate_buffers
stream = cuda.Stream()
pycuda._driver.LogicError: explicit_context_dependent failed: invalid device context - no currently active context?
原因:pycuda.driver没有初始化,导致无法得到context
解决方法: 需要在导入pycuda.driver后再导入pycuda.autoinit。

问题4
onnx2trt: error while loading shared libraries: libcublas.so.10.0: cannot open shared object file: No such file or directory**

解决方法:…export LD_LIBRARY_PATH= /usr/local/cuda/lib64$ {LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

问题5
Parsing model WARNING: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32. Successfully casted down to INT32. While parsing node number 146 [Gather -> “409”]: ERROR: /h**
解决方法:使用python第三方库简化onnx
python -m onnxsim retinate_hat_hair_beard.onnx retinate_hat_hair_beard_sim.onnx

问题6
[TensorRT] ERROR: Network must have at least one output
解决方法:
在with循环之外增加了两句代码
last_layer = network.get_layer(network.num_layers - 1)
network.mark_output(last_layer.get_output(0))

问题7[TensorRT] ERROR: INVALID_CONFIG: The engine plan file is generated on an incompatible device, expecting compute 5.3 got compute 7.5, please rebuild.
解决方法:用7.5计算力生成的trt文件,是不能用6.5的显卡来解析的,需要在目标显卡上生成trt

tips:
pytorch模型转化成的onnx本身就有问题。经常会出现,expand, Gather, reshape不支持等

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
TensorRT是NVIDIA推出的用于高性能推断的深度学习优化器和运行时引擎。它可以针对深度神经网络模型进行优化,从而加速模型的推理过程。在TensorRT中,部署ResNet网络可以按照以下步骤进行: 1. 生成ONNX文件:首先,将ResNet模型转换为ONNX格式。使用PyTorch官方提供的torch.onnx.export()函数可以将模型转换为ONNX文件。在转换过程中,需要指定输入的维度和模型的权重等信息。 2. 创建推理引擎:接下来,使用TensorRT的API来创建推理引擎。可以使用TensorRT的Builder和Network类来构建网络结构,并设置优化参数和推理选项。 3. 编译和优化:在创建网络结构后,需要使用TensorRT的Builder类将网络编译为可执行的推理引擎。在此过程中,TensorRT会对网络进行优化,包括融合卷积、批量归一化和激活函数等操作,以提高推理性能。 4. 推理:最后,使用生成的推理引擎对输入数据进行推理。可以将输入数据传递给推理引擎,并获取输出结果。 需要注意的是,部署TensorRT需要在系统中安装相应的软件和依赖库,如CUDA和TensorRT。在Windows 10系统上完成部署时,需要确保软件和依赖包的正确安装和配置。 总结来说,TensorRT部署ResNet网络的过程包括ONNX文件的生成、推理引擎的创建、编译和优化以及最后的推理过程。这样可以提高模型的推理性能,并加速图片分类项目的部署。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [tensorRT部署resnet网络Python、c++源码](https://download.csdn.net/download/matlab_xiaogen/86404017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [TensorRT部署总结(一)](https://blog.csdn.net/qq_23022733/article/details/124566752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值