您好,我按照您提供的代码对量化、转换编译流程做了完整复现,现在看来实际上有两个问题:①internal error: max input left shift 6,量化图与最终编译图不一致。②unsupported layout conversion,检测头输出布局处理不正确。
我先用/0811test/model.hbir重新编译了一下,并没有出现left shift错误,而是出现了unsupported layout conversoin报错,为了继续定位我重新从QAT模型构建计算图,发现只要GCM3或前处理开启其一就会出现left shift报错。
train_qat_
swj.py中实际固定使用了use_gcm3=False和use_preprocessor=False,也就是说校准和QAT阶段生成的计算图没有真正执行GCM3和前处理分支,但在编译的时候两个模块又重新接入到了量化计算图。
从qat-lats.pt中的量化参数能看出来与GCM3和Preprocess相关的212个scale全为1.0。而开启GCM3再去执行prepare_fx之后计算图中出现了大量mul,add 等节点,但这些节点在原来的QAT checkpoint 中没有对应的fake-quant和observer状态。也就是说这个checkpoint本身不包含编译需要的量化统计信息。