bmodel与tpu.mlir对比不过(5)

Viewed 186

问题表现:

在支持BM1686模型时碰到bmodel与tpu.mlir结果对比不通过的情况,并且tensor_compare.py发出overflow的RuntimeWarning.

错误日志如下(通过npz_compare.py打印了target与ref file的结果)

Image.png

1 Answers
  1. 观察模型输出后发现前半部分结果一致,后半部分数值为0或者过大(i.e., e+34),怀疑是哪个后端算子的数据排布有问题
  2. 关闭LayerGroup开关后问题不复现,把问题区间进一步定位到后端算子的local部分
  3. 通过裁剪final.mlir文件(裁剪方式可以参考bmodel与tpu.mlir对比不过(4)),最后将问题定位到某个GroupOp中的Active算子,进一步去检查active_local的后端实现,发现其中统一按照64 byte对齐方式,对于bm1684x, eu_bytes为64的情况下没有问题,但1686的eu_bytes为16(可以通过tpu-mlir/include/tpu_mlir/Backend/路径下各个芯片的头文件查看配置)此时就有可能会出现问题