当前位置: 首页 > news >正文

MMDeploy模型转换与TensorRT推理遇到问题及解决方案

        最近使用MMDeploy对MMSegmentation训练好的模型进行转换,在Jeton上进行TensorRT推理。踩过了一些坑,分享一下。

        我使用的硬件与基础环境:Jeton Orin NX 16GB,JatPack 5.1.1 (Cuda 11.4.315, cuDNN 8.6.0.166, TensorRT 8.5.2.2)

        在配置MMDeploy环境、模型转换、TRT推理遇到的主要问题与解决方案如下:

        1. 版本兼容性。由于涉及的库、包非常多。尤其是pytorch、mmcv、numpy等容易因为版本兼容性不佳导致运行出现各种报错。我最终配成功后,主要的包、库的版本如下:

        Python(3.8.20)、Pytoch(1.11.0)、Torchvision( 0.12.0)、MMCV(2.0.0rc4)、ONNX(1.10.0)、ONNXruntime(1.10.0)、MMDeploy(1.3.1)、MMSegmentation(1.2.0)

        2. 转trt_int8模型时,有个--calib-dataset-cfg参数,需要传入标定数据集的配置文件,用于量化过程的标定。官方教程里没有给出详细的该配置文件的便些说明。能找到一个MMDetection模型int8量化的标定数据配置文件示例。

TensorRT Support — mmdeploy 1.3.1 文档https://mmdeploy.readthedocs.io/zh-cn/latest/05-supported-backends/tensorrt.html?highlight=calib%20dataset%20cfg

        但这个是用户自定义数据集的示例。还需要进行注册之类的。实际最简单的方法就是,不填该参数,会自动使用模型配置文件中给出的验证集数据做标定。但要注意的是,配置文件中的数据集路径往往是模型在服务器训练时的存放位置,因此,需要把模型配置文件中数据集的路径按照Jetson上实际存放路径进行修改。

        3. 在模型转换好后,运行推理时,遇到报错:TypeError: __init__() got an unexpected keyword argument 'test_out_dir'

        这应该也是因为库的版本不匹配造成的。但我实在不想再去调整库的版本,因为调整完可能又有新的问题。所以我就顺腾摸瓜,根据报错信息定位到报错的位置,将“mmdeploy/mmdeploy/codebase/base/task.py”文件211行注释掉,问题解决了。

        4. 解决上面的问题后,运行推理又出了新的报错:TypeError: FormatCode() got an unexpected keyword argument 'verify'

        应该也是因为版本不匹配造成的。依然是根据报错信息定位出错位置,修改“mmengine-for-jetson-main/mmengine-0.8.4/mmengine/config.py”文件1476行,将verify=true去掉。

        至此,模型转换、推理均能成功运行了。

http://www.dtcms.com/a/293073.html

相关文章:

  • GRU模型
  • Trae安装指定版本的插件
  • Clickhouse源码分析-副本数据同步
  • 网络编程---TCP协议
  • Spring AI 系列之十九 - Ollama集成Deepseek
  • 配置https ssl证书生成
  • 数字护网:一次深刻的企业安全体系灵魂演练
  • 接口测试用例选择及效能优化策略
  • vcs门级仿真(后仿真)指南
  • 如何处理各行业的DDOS问题?
  • VUE2 学习笔记3 v-on、事件修饰符、键盘事件
  • JAVA后端面试笔记
  • 前端性能优化:从“龟速“到“闪电“的终极加速指南
  • c++day05(ASCII)
  • Git GitHub精通:前端协作开发的“瑞士军刀“!
  • 字符串相关函数
  • visual studio 性能调试
  • 大数据之Hive:Hive中week相关的几个函数
  • 【Java】SVN 版本控制软件的快速安装(可视化)
  • Qt中的栅格布局的核心机制与栅格布局中的元素隐藏后重新排列布局解决方案解析
  • 基于CH32V203F8P6 interface_debug_print支持浮点格式输出
  • 模型优化-------模型压缩
  • Python之格式化Conda中生成的requirements.txt
  • timesFM安装记录
  • JavaWeb学习打卡10(HttpServletRequest详解应用、获取参数,请求转发实例)
  • PyTorch常用工具
  • 我的第一个开源项目 -- 实时语音识别工具
  • C++中的list(2)简单复现list中的关键逻辑
  • 水电站自动化升级:Modbus TCP与DeviceNet的跨协议协同应用
  • CMake实践:CMake3.30版本之前和之后链接boost的方式差异