专栏算法工具链算子节点用run_on_bpu后发现转模型依然在cpu上

算子节点用run_on_bpu后发现转模型依然在cpu上

已解决
driverli2024-11-12
131
7

1. 芯片型号:J3

2. 天工开物开发包 OpenExplorer 版本:horizon_xj3_open_explorer_v1.16.6

3. 问题定位:模型转换

4. 问题具体描述:在执行 sh 03_build.sh转yolov8分割模型时,用run_on_bpu指定在bpu上运行,发现这两个节点依然运行在cpu上。
注:在horizon_xj3_open_explorer_v1.16.2c上这么设置是生效的。升级到horizon_xj3_open_explorer_v1.16.6后不生效了。
算法工具链
技术深度解析
评论4
0/1000
  • Huanghui
    Lv.5

    收到

    2024-11-12
    0
    0
  • Huanghui
    Lv.5

    你好,分享一下你的模型呢,理论上不需要什么配置的,Relu本来就是BPU支持的,transpose是被动算子也不需要指定。

    2024-11-12
    0
    2
    • driverli回复Huanghui:
      链接: https://pan.baidu.com/s/1wD3NeKNtj70CPiOiKkSMjQ 提取码: 7miv 复制这段内容后打开百度网盘手机App,操作更方便哦
      用的yolov8分割模型,用80类的时候都是在BPU上的,我的模型只有一类的时候那两个节点就在cpu上
      2024-11-13
      0
    • driverli回复driverli:
      而且horizon_xj3_open_explorer_v1.16.2c是可以指定的,升级到horizon_xj3_open_explorer_v1.16.6就不行了
      2024-11-13
      0
  • Huanghui
    Lv.5

    你好,这边已经复现了你的问题,对了这个状况目前有两个考虑点:

    1. 不排除是工具链迭代中的bug,目前正在请求研发同事进行检查。

    2. 这个模型附带有后处理逻辑(relu)本身就不太合理,建议将其从模型中移除,同时在yaml中通过配置项remove_node_type: 'Quantize;Transpose;Dequantize;Cast;Reshape;Softmax'将这些操作从模型转入后处理逻辑中。以下为移除后的板端耗时评估:

    "processor_latency": {

    "BPU_inference_time_cost": {

    "avg_time": 67.95100500000001,

    "max_time": 79.247,

    "min_time": 65.126

    },

    "CPU_inference_time_cost": {

    "avg_time": 0.012414999999999999,

    "max_time": 0.046,

    "min_time": 0.011

    }

    },

    可以看出模型基本跑在BPU

    另外,从之前的历史版本中的optimized.onnx你可以看出,模型尾部的conv输出为int8,而新的版本本着精度考虑模型尾部的conv输出已经是int32,从而保证了模型的精度,新版本尾部的conv输出转为int32后,使用手册4.1.1.10.3部分的信息应该可以解释目前的问题。
    2024-11-13
    0
    0
  • Huanghui
    Lv.5

    你好,该问题的修复包如下,已验证通过,感谢你的等待与支持:

    链接: https://pan.baidu.com/s/1Mc_vE2TkzsjVC2evPzgMWQ?pwd=1ytn

    2024-11-22
    0
    1
    • driverli回复Huanghui:

      你好这个修复包链接能重新发一下嘛,后面我看到这个链接的时候已经失效了。最近又遇到了run_on_bpu 指定不生效的问题

      2025-04-30
      0