OpenPPL / ppq

PPL Quantization Tool (PPQ) is a powerful offline neural network quantization tool.
Apache License 2.0
1.56k stars 236 forks source link

关于VIT量化 #491

Closed Nusselder9 closed 1 year ago

Nusselder9 commented 1 year ago

志佬,我在qq交流群内看到您对VIT模型量化的建议:“vit模型最好用tensorrt自己的量化工具,它能生成速度最快的模型,ppq导出来的比fp16还慢”。

请问这是为什么?我理解trt自己的量化工具和ppq在做量化时都是计算calib,然后build_engine这个过程都是由trt来完成的。在我的理解里两者只有计算的calib的不同,为什么会出现ppq比trt慢的情况呢?

感谢!

ZhangZhiPku commented 1 year ago

VIT这个模型是transformer结构的,目前PPQ只能够读取onnx的模型,但onnx标准对transformer模型支持的比较糟糕,你会导出大量的细碎算子。在这种情况下完成量化是很困难的,量化必须发生在图融合之后,如果你的计算图中包含大量细碎算子,其量化结果是不会正确的(也即量化 Q-DQ 节点的插入位置会有问题)。

TensorRT针对 Transformer 结构做了大量优化,特别是执行了大量图融合操作;这将导致由 PPQ 导出的模型与 TensorRT 的图融合策略不吻合,届时 TensorRT 可能必须放弃大部分图融合来兼容 PPQ 的量化参数,其性能也将受到很大影响。

Nusselder9 commented 1 year ago

Thanks!