专栏算法工具链自定义算子问题

自定义算子问题

已解决
Vegeta2024-06-28
97
4

1. 芯片型号:J5

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

3. 问题定位:自定义算子

4. 问题具体描述:地平线工具链中提供的标准的自定义算子流程是这样的1 自定义onnx算子
  • 1将含有自定义算子的pytorch模型导出ONNX

  • 2 算子实现

  • 3 含自定义算子的模型转换

  • 4 含自定义算子的模型推理

但是问题是,假如我有一个onnx算子是opset中支持的,但是地平线不支持怎么办,而且我没有pytorch结构,只有一个onnx模型,例如我图片中的unique算子,这个算子是onnx能直接支持的,不需要我在生成onnx的时候自定义,这该怎么去自定义才能转bin模型呢?

附件:
算法工具链
征程5
评论3
0/1000
  • Huanghui
    Lv.5

    你好,很高兴通过论坛反馈你遇到的问题,这个问题很典型,也很现实。

    J5目前对ONNX的算子支持的情况为OPSET10/11,你首先需要做两件事:1)通过checker检查不支持的算子是哪些。2) 可以在导出onnx时进行限制,DL框架一般会根据你选定的opset version 选用不同的算子组合表达你的模型的。

    对于在OPSET10/11内但工具链依然无法支持的算子,目前的处理策略是需要你修改模型,通过已经支持的算子序列等效替换不支持的部分。 当然,你可以根据自己的理解来通过自定义算子的形式对OPSET11之后的算子进行处理达到支持的目的。

    需要注意的一点是:在J5工具链的可支持算子列表中,并不是所有都是BPU加速了,因为BPU加速器件的一些约束,部分算子会通过CPU执行,但无论执行期间是BPU还是CPU,可支持算子列表中的算子都是可以被编译到结果(bin模型文件/hbm模型文件)中的。

    2024-06-28
    0
    1
    • Vegeta回复Huanghui:

      好的,了解了


      2024-06-29
      0
  • kotei左文亮
    Lv.3

    问题已经收到,我们先分析一下

    2024-06-28
    0
    0
  • kotei左文亮
    Lv.3

    您的意思是转onnx的时候是没有问题的,地平线工具链不支持指的是不支持BPU运算,unique这个算子是可以在CPU上进行运算的;然后自定义的算子也都是在cpu上进行计算的; 在进行模型检查时的log有没有啊?

    2024-06-28
    0
    0