专栏算法工具链J6平台sparse4d算法量化精度损失

J6平台sparse4d算法量化精度损失

已解决
秋野.2026-03-02
133
12
  1. 芯片型号:J6M

  2. openexplorer版本:horizon j6_open_explorer_v3.2.0-py310_20250616

  3. 问题定位:模型转换精度下降。

  4. 问题描述:模型结构及参数基本与参考配置一致,只是dataset不一样

参考配置:samples/ai_toolchain/horizon_model_train_sample/scripts/configs/bev/bev_sparse_henet_tinym_nuscenes.py
按照官方配置训练float模型,模型精度NDS 0.4625,mAP 0.1928
按照官方配置转calibration模型,模型精度NDS 0.4024,mAP 0.0778

按照官方配置进行qat训练,模型精度NDS: 0.4102, mAP 0.0948

附件:
算法工具链
技术深度解析征程6
评论2
0/1000
  • HuangHui
    Lv.5
    收到, 模型结构及参数基本与参考配置一致,只是dataset不一样,dataset改了啥呀?
    2026-03-02
    0
    0
  • HuangHui
    Lv.5
    这两天把SPARSE做了比较细的排查:
    OE 3.2.0 / 3.7.0 配置、HAT代码、客户现有配置和 instance_bank 改动 全部逐项对比过,也结合了你们当前数据特点做了归因,先同步下结论:
    1. 你们当前链路本质上还是偏 3.2 思路,建议尽量迁到 3.7 的量化方案(QconfigSetter + 敏感层模板)统一管理,避免配置“前面设置、后面被覆盖”的情况。
    2. 根据你们的反馈,instance_bank 改成相对速度这个动作本身是合理的(你们数据语义确实是相对速度),符合你们的数据集。
    3. 监控范围和 nuScenes 都是前后左右约 60m,这块物理边界理论上是对齐的。

    4. anchor 你们已经按自有数据重新 kmeans,这个方向也是对的。

    5. 目前最像的问题是:某些模块量化敏感,导致 calibration/QAT 掉点明显,而不是 float 主流程有问题。

    建议下一步按这个顺序做(效率最高):

    • 先跑 quant_analysis,拿到具体敏感层;
    • 同时按图里这种方式(GlobalFakeQuantSwitch)做模块级 量化敏感排查(先看 head、deformable、instance_bank 路径),确定量化损失的大方向。
    • 定位到模块后,再定向调 qconfig(dtype/threshold/freeze)。

    2026-03-05
    0
    10
    • 秋野.回复HuangHui:

      好的 感谢! 我这边尝试下

      2026-03-05
      0
    • HuangHui回复秋野.:
      根据问题调查,新的排查项
      1. setter的int16上限制测试
      2. HistogramObserver校准测试
      3. fix_scale自统计测试。
      4. pt敏感度设置测试
      5. 相对/绝对速度测试
      2026-03-05
      0
    • 秋野.回复HuangHui:

      感谢大佬,用OE3.7工具链量化+敏感层配置,效果比OE3.2提升了很多。

      2026-03-11
      0
    • 秋野.回复HuangHui:
      监控范围和 nuScenes 都是前后左右约 60m,这块物理边界理论上是对齐的。
      您好,我现在想把范围设置为前后左右100m 需要修改哪些配置参数 对齐物理边界

      2026-03-18
      0
    • HuangHui回复秋野.:
      监控范围要从前后左右约 60m 扩到 100m,对这类 SparseBEVOE 模型来说,不能只改一个范围变量,需要同步关注下面几项:
      1. anchor_file 需要重新生成
        • 模型是 sparse anchor/query 驱动,anchor 是目标先验分布。

        • 监控范围扩大后,原来基于 60m 场景聚类出来的 anchor 已经不能很好覆盖 100m 场景。

        • 建议基于 100m 范围下的数据重新做聚类。

      2. 相关的 fixed scale 阈值要同步更新,监控范围从 60m 扩到 100m,这些量的动态范围会明显变大,原来的固定阈值 60 往往不再合适,下面这些layer需要同步修改 fixed scale :
        • point_cat
          point_cat 处理的是关键点的 3D 坐标 [x,y,z] 拼齐次坐标后的量,这些关键点本质上是 anchor中心 + 网络预测偏移,单位时米,属于米制空间量。
        • head.instance_bank.anchor_quant_stub
          anchor_quant_stub 量化的是 anchor,本身也包含位置等米制物理量。

      另外:业务上需要注意

      1. 对num_anchors / temp_anchors 建议重新评估
      • 监控面积扩大后,anchor 数量不变,就意味着单位面积的先验密度下降。

      • 对 sparse 模型来说,这可能影响远距目标覆盖和召回。

      1. 数据、标注、评测链路里的范围定义要同步检查

      • 不只是模型配置,数据导出、样本生成、评测范围如果仍然停留在 60m,也会导致训练和评测不一致。

      2026-03-18
      0
    • 秋野.回复HuangHui:

      好的 感谢

      2026-03-19
      0
    • 秋野.回复HuangHui:

      增加2倍数据量后重新训练,训练的时候加载了之前的权重,中途loss会崩 变成nan。请问大佬有什么建议 应该调整什么参数呢?

      2026-03-25
      0
    • HuangHui回复秋野.:
      loss会崩这个坑能需要分几个方面看一下了:
      1. 计算loss的过程,nan的产生不是极大值就是极小值,需要回溯一下数据来源。
      2. 训练参数,试着调小一个数量级lr看看呢。
      3. 数据本身有问题,数据量可以加大,但是时序模型一定要保证数据的时间连续性,对于跨越时间较大的场景数据,需要对切换场景有对应的处理。
      2026-04-01
      0
    • 秋野.回复HuangHui:

      您好,大佬。之前把amp混合精度关了之后,loss能够正常收敛。但是校准阶段,map精度下降了15%,是不是跟这个有关系?

      13小时前
      0
    • HuangHui回复秋野.:
      你好,为了跟踪方便,把问题解耦吧,这个帖子集中处理第一阶段的参考算法场景适配。
      添加数据集后崩溃训练崩溃及由此进行的AMP调整,calibration精度问题进行单独跟踪。
      5小时前
      0