专栏算法工具链J6E onnx算子支持

J6E onnx算子支持

已解决
eyehorus2024-10-25
206
16

1. 芯片型号:J6

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

3. 问题定位:模型算子

4. 问题具体描述:请问J6E是否支持以下几种在OE文档“ONNX算子BPU约束列表”章节中没有列出的算子:

pad isNaN ScatterElements Relu BatchNormalization ScatterND GatherElements

算法工具链
征程6
评论2
0/1000
  • Huanghui
    Lv.5

    你好,经内部沟通,这些算子是支持的,因为有些算子在模型转换t优化阶段会被折叠,所以之前做了屏蔽,为了避免类似的误解,内部已经做好同步,下次版本迭代时我们会更新。

    推荐你直接通过工具链的PTQ CHECK流程进行算子支持性检查。因为从文档查看一方面确实可能存在漏掉的说明,另一方面即使文档中写的支持也是有的存在部分约束的。

    2024-10-25
    0
    14
    • eyehorus回复Huanghui:

      收到,但是使用hb_compile检查模型时会报错:

      是不是代表不支持IsNaN算子?

      我们把onnx模型内的IsNaN算子删掉之后,又报错:

      麻烦再帮忙看一下,谢谢

      2024-10-25
      0
    • Huanghui回复eyehorus:

      这就对了,直接试试就出来了,从日志多看,算子是支持的,只是触发了一些约束限制,不支持的算子会打印说not supported的。

      我们先看看这个报错信息,稍后回复你哈

      2024-10-25
      1
    • Huanghui回复eyehorus:

      你好,日志中已经反馈出了报错原因了:

      ScatterElements算子节点["ScatterElements_1688"]的参数超出了维度限制,目前编译器支持的维度为 [0, 5),但是该节点的计算数据的shape:tensor, tensor, tensor) -> tensor' 都是5维数据。做个Squeeze搞成4维呢
      2024-10-25
      0
    • eyehorus回复Huanghui:

      好的, 我们加一层Squeeze试一下。另外上面给的isnan的报错是为什么呢?是触发了什么约束限制?

      2024-10-28
      0
    • Huanghui回复eyehorus:

      这个是真的不支持~

      2024-10-28
      0
    • 回复Huanghui:

      3.0.17版本编译器中linear/conv3d/add也仅支持四维 不知道3.0.22版本是否支持五维

      2024-10-28
      0
    • Huanghui回复:
      1. 目前从文档中没查看到这个约束信息;

      2. 不要猜,直接转换吧,就算从文档查到了是支持的,但是实际转换过程遇到问题还是要处理。以实际情况为准

      2024-10-28
      0
    • 回复Huanghui:

      文档中的确没有 我就是通过转换试出来的这几个算子的问题 最开始编译报错也是一头雾水 看到你上面回复的ScatterElements才决定试试也改改四维看行不行 结果确实改完后就都可以顺利编译了

      2024-10-28
      0
    • Huanghui回复:

      好的,那就是除了isnan其他的都是支持的,问题解了就好,感谢反馈!

      2024-10-28
      0
    • eyehorus回复Huanghui:

      不好意思,你前面回复的不是本帖的疑问。我们在ScatterElements层前面加入一个squeeze层减维至四维之后:

      跑出来还是有错误,是不是将数据类型si64也当成一维了?:

      2024-11-06
      0
    • Huanghui回复eyehorus:
      这里还有个约束问题:i64数据类型算子不支持!
      2024-11-06
      0
    • eyehorus回复Huanghui:

      好的,而且看起来这个算子要在cpu而不是bpu上面才能计算?我现在使用的OE版本J6_OE_3.0.22有没有什么工具能查看模型的每个算子是跑在bpu还是cpu?之前做J5时是可以看的,但是现在在J6的文档里没看到有什么工具能实现这个功能。

      2024-11-06
      0
    • Huanghui回复eyehorus:

      可以啊,你编译完不就看到了~

      2024-11-06
      0
    • eyehorus回复Huanghui:

      编译完之后会有一部分,但不是全部节点都会显示。另外显示NULL的节点代表在什么硬件上运行?

      2024-11-07
      0
  • Huanghui
    Lv.5

    收到

    2024-10-25
    0
    0