专栏算法工具链J6 Hbm推理与bc模型推理结果对不齐

J6 Hbm推理与bc模型推理结果对不齐

爱学习的班马2026-03-30
38
27

J6M

OE:3.7.0

hbm文件模型推理结果与bc文件模型推理结果对不上,附件有代码截图和模型输出的相关信息,请问,我那么读取模型结果转换为三维向量的方法有什么问题?

附件:
算法工具链
技术深度解析征程6
评论3
0/1000
  • Huanghui
    Lv.5

    收到,先看看哈~

    17小时前
    0
    3
    • 爱学习的班马回复Huanghui:
      17小时前
      0
    • 爱学习的班马回复Huanghui:

      我在将C++板端的模型图片输入输入到.bc推理模型中,结果是对的,所以数据读取这块应该是对的,然后我把C++后处理那块通过.bc文件的推理结果去验证,可视化也是对的,就是模型推理与.bc的推理结果数值对不上,是我在进行编译的时候,哪里做的不对吗?

      17小时前
      0
    • 爱学习的班马回复Huanghui:

      所用到的模型就是J6 OE包3.7.0版本中的bev_sparse_henet_tinym_nuscenes.py中的模型

      17小时前
      0
  • Huanghui
    Lv.5
    1. C++对图像的处理逻辑这块,你通过bc模型已经验证了,这块没有问题。

    2. BC的output你用c++的后处理验证了OK,这块儿证明了C++的后处理与BC的推理结果是配套的,但不能说明C++后处理与hbm的output是配套的。BC的output 和 hbm的output是不一样的。这块可疑先通过配置项中不remove节点并且加上no_padding验证一下,这种情况下应该就是对齐的了。

    3. 有两个地方要特别注意:

      1. bc的output中对齐的浮点,带有反量化的节点,并且没有padding的数据。

      2. hbm的output中根据配置可能移除了反量化的节点,并且有padding数据。

    16小时前
    0
    21
    • Huanghui回复Huanghui:

      补充一点:数据的推理逻辑可以通过hrt_model_exec infer保存出来跟BC的推理进行相似度对比排除个人代码的问题;通过hb_verifer工具对比bc和hbm的一致性排除个人前后处理的问题,确认模型一致减少模型本身不一致的变量之后再进一步调试c++代码问题

      16小时前
      1
    • 爱学习的班马回复Huanghui:
      我是直接用的OE包中的代码进行的,这个不进行remove节点是把self.remove_quant_dequant(self.model)这段去掉吗?
      这个no_padding在哪里进行设置呀?
      15小时前
      0
    • 爱学习的班马回复Huanghui:

      我用的是QAT的转换方法,不是用的PTQ方法

      15小时前
      0
    • Huanghui回复爱学习的班马:
      remove节点就是把self.remove_quant_dequant(self.model)去掉。
      no_padding的设置数据编辑接口compile的参数,你check一下就OK。
      14小时前
      0
    • Huanghui回复爱学习的班马:

      你编译hbm之前的bc应该保存了吧,你看看你这个bc的output跟hbm的output是不是shape以及dtype都是一样的,如果事一样的再进行对比

      14小时前
      1
    • 爱学习的班马回复Huanghui:

      好哒,我去处理一下

      14小时前
      0
    • 爱学习的班马回复Huanghui:
      在没有remove节点时,通过infer_hbir.py脚本推理.bc文件时,模型输出的shape是可以对上的,但是dtype对不上,bc推理的dtype分别为float32,float32,float32,float32;但是hbm得推理输出dtype分别为HB_DNN_TENSOR_TYPE_S32,HB_DNN_TENSOR_TYPE_S16,HB_DNN_TENSOR_TYPE_S32,HB_DNN_TENSOR_TYPE_S8
      14小时前
      0
    • Huanghui回复爱学习的班马:
      不对,hbm得推理输出dtype分别为HB_DNN_TENSOR_TYPE_S32,HB_DNN_TENSOR_TYPE_S16,HB_DNN_TENSOR_TYPE_S32,HB_DNN_TENSOR_TYPE_S8这些结果明显是remove了反量化之后的节点,你可以把这些节点的数据乘以scale后与.bc的结果对比看是不是一致,不过你说的shape是可以对上的这个要注意是hbm的valid_shape跟bc对的上,还是aliged_shape与bc对的上,如果valid_shape跟bc对的上,aliged_shape与bc对不上就得把c++得padding先去除了在跟BC对比
      13小时前
      0
    • 爱学习的班马回复Huanghui:
      是valid_shape对得上,aliged_shape怎么计算判断?我看python版本推理的结果没有这个shape信息呀
      12小时前
      0
    • 爱学习的班马回复Huanghui:

      我就是把节点数据乘以scale后与.bc的结果进行对比的

      12小时前
      0
    • Huanghui回复爱学习的班马:
      对的,python端本来就没有,hbm推理才有的。aliged_shape这个是根据stride信息推算出来,就拿你的output[0]来说:valid_shape是1x512x10,但是模型实际推理输出的shape是aliged_shape,更具stride算出来时1x512x16,也就是说hbm的结果中最后一个维度有用的是10个S32,但是ouput的内存确实分到16个,你需要offset 6个才能对齐。

      你这样用hrt_model_exec infer --model_file xxx.hbm --input_file 1.bin,2.bin --remove_padding_process --dequantize_process --enable_dump --dump_format npy --dump_path . 这些参数得到npy,再跟bc的推理结果对比一下呢

      12小时前
      0
    • 爱学习的班马回复Huanghui:
      --input_file="/userdata/ws/J6M/data/0/cam0_input_Y.npy,/userdata/ws/J6M/data/0/cam0_input_UV.npy,/userdata/ws/J6M/data/1/cam1_input_Y.npy,/userdata/ws/J6M/data/1/cam1_input_UV.npy,/userdata/ws/J6M/data/2/cam2_input_Y.npy,/userdata/ws/J6M/data/2/cam2_input_UV.npy,/userdata/ws/J6M/data/3/cam3_input_Y.npy,/userdata/ws/J6M/data/3/cam3_input_UV.npy,/userdata/ws/J6M/data/4/cam4_input_Y.npy,/userdata/ws/J6M/data/4/cam4_input_UV.npy,/userdata/ws/J6M/data/5/cam5_input_Y.npy,/userdata/ws/J6M/data/5/cam5_input_UV.npy,/userdata/ws/J6M/sparse4D/npy/lidar2img.npy,/userdata/ws/J6M/sparse4D/bin/cached_anchor.bin,/userdata/ws/J6M/sparse4D/bin/cached_feature.bin" \
      这是我hrt_model_exec的input_file输入设置
      11小时前
      0
    • 爱学习的班马回复Huanghui:

      我下面那么设置有啥问题吗?为什么在docker中运行sh run_hrt_model_exec.sh脚本报错呢

      11小时前
      0
    • 爱学习的班马回复爱学习的班马:
      11小时前
      0
    • 爱学习的班马回复Huanghui:
      10小时前
      0
    • 爱学习的班马回复爱学习的班马:

      为什么去掉节点后,在板子推理的时候出现这种问题呢?

      10小时前
      0
    • Huanghui回复爱学习的班马:
      10小时前
      0
    • 爱学习的班马回复Huanghui:

      你说的这个反量化与padding我都考虑了

      10小时前
      0
    • 爱学习的班马回复Huanghui:

      好,我再试试

      10小时前
      0
    • Huanghui回复爱学习的班马:

      命令根据提示调整调整就OK ,目前看这个是npy文件解析失败了

      9小时前
      0
    • 爱学习的班马回复Huanghui:
      9小时前
      0
  • Huanghui
    Lv.5

    你把qat.bc 的编译分享一个份出来把,我们也编译一下生成quantized.bc 和 hbm 也验证一下。其实这个过程就用hb_verifer 或 hrt_model_exec infer就可以验证的。

    9小时前
    0
    0