DerryHub / BEVFormer_tensorrt

BEVFormer inference on TensorRT, including INT8 Quantization and Custom TensorRT Plugins (float/half/half2/int8).
Apache License 2.0
432 stars 71 forks source link

error in ms_deformable_im2cal_cuda : no kernel image is available for execution on the device #69

Closed CodeWorldChanged closed 1 year ago

CodeWorldChanged commented 1 year ago

GPU:A100

DerryHub commented 1 year ago

Did you build the custom TensorRT plugins on A100?

CodeWorldChanged commented 1 year ago

编译了的,您这个工程的后量化部分,我是可以复现的。量化训练就报这个错了; 生成了libtensorrt.ops.so文件。您这个cuda版本的要求吗

DerryHub commented 1 year ago

QAT不会用到trt插件,可以检查一下是不是mmcv的版本及编译问题

CodeWorldChanged commented 1 year ago

好的,我是按照dockerfile构建的环境,mmcv是1.5.0。另外,这个是调用mmcv中ms_deformer_attn_cuda.cu的实现吗,谢谢

DerryHub commented 1 year ago

不是,项目中的TensorRT算子不依赖于mmcv

CodeWorldChanged commented 1 year ago

ok,我重新编译了一下mmcv可以解决,应该是编译和使用的cuda版本不一致导致的。感谢你的代码工程,点赞

DerryHub commented 1 year ago

不客气~

CodeWorldChanged commented 1 year ago

另外,我还想问一下。量化训练后,转onnx使用pth2onnx.sh,还是pth2onnx_q?其次转trt使用onnx2trt_int8.sh,还是onnx2trt_qdp.sh。这个有什么规则吗。感谢

CodeWorldChanged commented 1 year ago

不好意思,上边写错了一点点。 其次转trt使用onnx2trt_int8.sh,还是onnx2trt_int8_qdp.sh。这个有什么规则吗。感谢

DerryHub commented 1 year ago

这是不同的量化方案,qdq是用的tensorrt的PyTorch端Q/DQ算子,需要在提前在校准,不带qdq的是tensorrt底层校准,在生成引擎时校准,两个都差不多,具体可以参考 https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#working-with-int8

CodeWorldChanged commented 1 year ago

了解,优秀的

CodeWorldChanged commented 1 year ago

你好。我想确认一下,量化训练后,转onnx使用pth2onnx_q,不是使用pth2onnx.sh。pth2onnx.sh不能识别量化qdq的结构

DerryHub commented 1 year ago

也可以用pth2onnx.sh的形式,但是加载模型时可能需要做一些更改

CodeWorldChanged commented 1 year ago

你好,我还想问一下,onnx转trt是必须要依赖工程中Tensorrt吧?开源的tensort库,编译不了模型中grid_sampler等算子

DerryHub commented 1 year ago

现在的tensorrt开源算子库可能有这个算子了,有可能可以

sunyuanrui commented 1 year ago

现在的tensorrt开源算子库可能有这个算子了,有可能可以

我现在部署环境是8.5的tensorrt,还是没有grid_sampler这个算子,请问怎么替换这个模型中的算子呢?

CodeWorldChanged commented 1 year ago

将mmcv中grid_sampler替换成线性插值算法

DerryHub commented 1 year ago

可以参考https://github.com/DerryHub/BEVFormer_tensorrt/tree/main/TensorRT#readme 以及https://github.com/DerryHub/BEVFormer_tensorrt/blob/main/det2trt/models/functions/grid_sampler.py

CodeWorldChanged commented 1 year ago

你好,我想问一下,量化训练后转trt引擎是使用onnx2trt_int8_qdq.sh吗?另外,转trt还需要校验集吗?

CodeWorldChanged commented 1 year ago

我只做了backbone+neck部分的量化训练.在onnx转trt阶段,也是直接设置int8参数吗?

CodeWorldChanged commented 1 year ago

你好,我还想问一下,量化训练模型的保存是直接save model,还是要用jit的保存方法。你那边量化训练的模型能不能给我提供一个,感谢