Natsu-Akatsuki / RangeNetTrt8

tensorrt8 && cuda && libtorch implementation of rangenet++
MIT License
44 stars 9 forks source link

关于RTX4060Laptop、CUDA11.3、cudnn8.6.0、Tensorrt8.4.15、libtorch1.13从onnx到处trt文件报错terminate called after throwing an instance of 'std::runtime_error' #17

Closed NirvanaDragon closed 6 months ago

Natsu-Akatsuki commented 6 months ago

请提供完整的报错信息日志,而非单纯的结果

NirvanaDragon commented 6 months ago

当我按照CUDA11.3、cudnn8.6.0、Tensorrt8.4.15环境在ubuntu20.04运行后,发现用onnx生成trt文件会报如下错误 图片 网上说是由于Tensorrt的版本较低导致的,于是我更换到最新版Tensorrt8.6.1.6,出现如下错误的推理结果 图片 图片 您能帮忙看看吗

Natsu-Akatsuki commented 6 months ago
  1. 关于更高版本TensorRT的预测异常问题。TensorRT8.6还没进行测试。不同 TensorRT版本有不同的权值溢出处理方案。可参考https://github.com/Natsu-Akatsuki/RangeNetTrt8/blob/main/src/network/netTensorRT.cpp#L283修改层数。
  2. 关于40系列显卡中的模型转换异常问题。感谢测试,后续有时间,我这边将进行复现和测试。
NirvanaDragon commented 6 months ago

这个看来和cuda版本无关,刚刚用cuda11.7运行,结果和11.3一致,请问我该将int start = 235;往更小值尝试吗

  1. 关于更高版本的预测异常问题。TensorRT8.6还没进行测试。不同 TensorRT版本有不同的权值溢出处理方案。可参考https://github.com/Natsu-Akatsuki/RangeNetTrt8/blob/main/src/network/netTensorRT.cpp#L283修改层数。

    1. 关于40系列显卡中的模型转换异常问题。感谢测试,后续有时间,我这边将进行复现和测试。
Natsu-Akatsuki commented 6 months ago

NirvanaDragon commented 6 months ago

您好,我将int start调整到233,并将FP16改成config->setFlag(nvinfer1::BuilderFlag::kTF32);得到如下结果 图片 当我将其应用到其他点云文件中,发现效果很差,如下所示 图片 这代表rangenet的问题还是我导出模型的问题呢

Natsu-Akatsuki commented 6 months ago

你这个点云文件是否满足模型的输入要求:进行强度归一化了吗,点云是否是64线?

Natsu-Akatsuki commented 6 months ago
  1. 40系列显卡,使用 TensorRT 8.4.1.5(i.e., 8.4 GA)和 8.4.2.4(i.e., 8.4 Update GA 1) 可复现如下报错,报错原因即字面意思。

    [02/22/2024-22:31:03] [E] 1: [caskBuilderUtils.cpp::trtSmToCaskCCV::548] Error Code 1: Internal Error (Unsupported SM: 0x809) [02/22/2024-22:31:03] [E] 2: [builder.cpp::buildSerializedNetwork::636] Error Code 2: Internal Error (Assertion engine != nullptr failed. ) terminate called after throwing an instance of 'std::runtime_error' what(): failed to build tensorrt engine

  2. 根据 TensorRT 的官方文档 Support Matrix 说明,只有 8.5.1+的版本才开始支持 89架构(即40系列显卡),但实测 8.4.3.1 (i.e., 8.4 Update GA 2)也可以正常运行。但建议还是使用官方推荐的 TensorRT 8.5+版本,或有专门针对89架构的优化。
Natsu-Akatsuki commented 6 months ago

您好,我将int start调整到233,并将FP16改成config->setFlag(nvinfer1::BuilderFlag::kTF32);得到如下结果 图片 当我将其应用到其他点云文件中,发现效果很差,如下所示 图片 这代表rangenet的问题还是我导出模型的问题呢

提一嘴,你这边最终起作用的是 config->setFlag(nvinfer1::BuilderFlag::kTF32); 调 start 是配合 FP16 的

NirvanaDragon commented 6 months ago

您好,我将int start调整到233,并将FP16改成config->setFlag(nvinfer1::BuilderFlag::kTF32);得到如下结果 图片 当我将其应用到其他点云文件中,发现效果很差,如下所示 图片 这代表rangenet的问题还是我导出模型的问题呢

提一嘴,你这边最终起作用的是 config->setFlag(nvinfer1::BuilderFlag::kTF32); 调 start 是配合 FP16 的

嗯嗯。谢谢指导