1.芯片型号:J6P
3. openexplorer/ai_toolchain_ubuntu_22_j6_gpu:v3.5.0
4.问题定位:板端部署(模型量化)
5.在对模型进行QAT量化后,查看静态报告(advice.csv),发现Scatter算子量化失败(原因是期望按照bf16,fp32跑在bpu上),所以这里在量化的时候需要指明类型为非int8是吗?需要在qconfig中配置(常规是采用fp16还是fp32更妥当呢?)
1.芯片型号:J6P
3. openexplorer/ai_toolchain_ubuntu_22_j6_gpu:v3.5.0
4.问题定位:板端部署(模型量化)
5.在对模型进行QAT量化后,查看静态报告(advice.csv),发现Scatter算子量化失败(原因是期望按照bf16,fp32跑在bpu上),所以这里在量化的时候需要指明类型为非int8是吗?需要在qconfig中配置(常规是采用fp16还是fp32更妥当呢?)


你好,
1)你这里的的 scatter具体是那个呀,ONNX 里一般是 ScatterElements 或 ScatterND,你可以通过Netron 看看确认 一下op_type。
2)J6P 对 Scatter 的约束里,常见失败点是 updates 输入不是 float16 或 data/updates dtype 不一致。建议通过 node_config 将 Scatter 节点(以及必要时其直接上游节点)配置为 float16,从而保证 updates 路径满足约束;不建议把 Scatter 强行指定为 int8/int16 来解决该问题。
3)工具链的 quant_config 可以配置“节点输入数据类型”(qtype/input0/input1),节点名以 optimized_float_model.onnx 中的为准;由于 float16 不会对上下文自动广播更新,若仅配置 Scatter 仍无法满足约束,可能需要同时将其直接上游节点也配置为 float16,以保证该子图的 dtype 一致。