Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

分割模型使用PaddleSlim的Auto Compression Toolkit(ACT) 压缩后,导出了onnx模型,但是这个onnx模型无法转化到tensorRT模型 #3878

Open
1 task done
4399123 opened this issue Jan 9, 2025 · 8 comments
Assignees
Labels
question Further information is requested

Comments

@4399123
Copy link

4399123 commented Jan 9, 2025

问题确认 Search before asking

  • 我已经搜索过问题,但是没有找到解答。I have searched the question and found no related answer.

请提出你的问题 Please ask your question

我是用paddleseg 里的seaformer_base模型训练,将训练后的模型使用ACT工具压缩,并转化到了onnx模型,但是这个onnx模型无法转化到tensrrt模型,用于工程部署

@4399123 4399123 added the question Further information is requested label Jan 9, 2025
@4399123 4399123 changed the title 分割模型使用PaddleSlim的Auto Compression Toolkit(ACT) 后的模型,无法导出onnx模型 分割模型使用PaddleSlim的Auto Compression Toolkit(ACT) 压缩后,导出了onnx模型,但是这个onnx模型无法转化到tensorRT模型 Jan 9, 2025
@4399123
Copy link
Author

4399123 commented Jan 17, 2025

有没有人回答一下

@David-dotcom666
Copy link

有没有人回答一下

我转过liteseg,ocrnet还可以,你的seaformer_base转onnx后,onnx可以使用吗?如果onnx可以使用,转trt报什么错误?还是不报错,只是trt模型不能使用呢?

@David-dotcom666
Copy link

有没有人回答一下

有没有人回答一下

我转过liteseg,ocrnet还可以,你的seaformer_base转onnx后,onnx可以使用吗?如果onnx可以使用,转trt报什么错误?还是不报错,只是trt模型不能使用呢?

我刚试了下,我这边是可以转onnx再转trt进行正常预测的。转onnx我用的是paddle2onnx,tensorrt版本8.5.1.7,没有进行ACT压缩。

@4399123
Copy link
Author

4399123 commented Feb 5, 2025

有没有人回答一下

有没有人回答一下

我转过liteseg,ocrnet还可以,你的seaformer_base转onnx后,onnx可以使用吗?如果onnx可以使用,转trt报什么错误?还是不报错,只是trt模型不能使用呢?

我刚试了下,我这边是可以转onnx再转trt进行正常预测的。转onnx我用的是paddle2onnx,tensorrt版本8.5.1.7,没有进行ACT压缩。

我主要在测试ACT压缩,正常paddle->onxx->trt 我是跑通了的,paddle->ACT->onnx可以走通,但是onnx->trt没走通,我主要想知道ACT压缩后的模型部署到trt上要特定部署框架吗,没办法onnx->trt吗?如果是的话 那这个所谓的自动压缩算法就很鸡肋了,根本就是催牛逼用的,没实用价值

@4399123
Copy link
Author

4399123 commented Feb 12, 2025

???官方没有人出来回答一下吗

@owllight11
Copy link

???官方没有人出来回答一下吗

找到解决方法了吗?我试了官方的几个量化后的模型,都没法用trtexec转换

@0x3878f
Copy link

0x3878f commented Mar 4, 2025

???官方没有人出来回答一下吗

有报错日志吗?可以帮忙分析下是否是paddle2onnx的问题

@owllight11
Copy link

这个问题大概率是版本差异导致的,给需要将paddleslim 量化后的模型使用trtexec工具转换的参考:
具体流程为:

  1. paddle2onnx --model_dir model --model_filename model.pdmodel --params_filename model.pdiparams --save_file output.onnx --opset_version 16 --enable_onnx_checker True --deploy_backend tensorrt --save_calibration_file calibration.cache
  2. trtexec --onnx=output.onnx --saveEngine=output.engine --int8 --explicitBatch --verbose --calib=calibration.cache
    这里会遇到几个问题:
    (1) tensorrt 10.x 版本 使用trtexec可以导出fp16 32模型,导出int8加载calibration.cache会报错,但是不加载可以导出
    (2) 加载engine进行推理时如果遇到pycuda._driver.LogicError: cuMemcpyHtoDAsync failed: invalid argument,一个解决方法是在trtexec导出时设置输入尺寸如:--shapes=input:1x3x640x640。但是这样在trtexec导出前需要将onnx模型的输入名称从"x"改为"input",要同时修改节点和引用的名称
    (3) 我测试下来一个可以正常导出的版本是 TensorRT8.6 EA paddlepaddle-gpu==3.0.0b2 paddle2onnx==1.3.1 在我测试时使用paddle2onnx 2.x版本 以及TensorRT8.6 GA都会出现莫名其妙的报错

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants