地平线ptq支持权重激活不同精度量化嘛
如果用的是地平线原版 PTQ,权重和激活分别设精度的问题建议到地平线社区确认哈,这边主要支持地瓜 RDK 相关问题
支持,权重和激活可以分开指定精度,粒度最小可到单个算子的某个输入。
编译期 PTQ(quant_config):支持 model_config / op_config / subgraph_config / node_config 四级,粒度越小优先级越高。node_config 里 qtype 指定节点的全部输入 dtype,input0 / input1 分别指定第 0/1 个输入且优先级高于 qtype;Conv/ConvTranspose 的权重走 input1,所以可以激活(input0)配 int16、权重(input1)配 int8。ec(error compensate)也是通过 input1 单独作用于 Conv 权重。校准参数同样分“激活校准”与“权重校准”两组配置。见 quant_config 说明。
Plugin 量化配置(prepare/校准阶段):QConfig 对象可分别设置 input / weight / output 三个 key,None 表示该位置不插入伪量化节点,官方场景示例中就有 “feature int16, weight int8”。见 QConfig 详解。该页是 Plugin 的用法,早期版本的 qconfig 定义将废弃,按页内推荐写法构造。
两个前提要留意:int16 配置会触发上下游算子的上下文检查和传播,算子不支持时转换会打 log 并回退 int8;Gemm、插值类、DPP/RPP 等还有合法化模板的固定规则,配了不一定生效。
要给可直接用的字段写法,说下板型(X5 / S100 / S600)和所用的 OE 工具链或 horizon_plugin_pytorch 版本,以及现在走的是 PTQ 编译还是 QAT/校准。