专栏算法工具链[J6E] scatter算子可以用什么替代

[J6E] scatter算子可以用什么替代

已解决
eyehorus2024-12-25
159
16

1、芯片型号:J6E

2、算法工具链:3.0.22

3、问题定位:模型量化

4、问题具体描述:pytorch中使用scatter方法进行计算,导出模型后无法通过量化前的检测。翻阅以前的帖子,有遇到过类似问题(https://developer.horizon.auto/forum/11879),因为pytorch中规定scatter的index必须是INT64,但是J6E BPU不支持INT64输入,所以导致量化失败。另外在帖子(https://developer.horizon.auto/blog/10006)中也有提到目前还不支持scatter算子在BPU上运行,请问有什么方法可以代替scatter方法完成PTQ量化?

附件:
算法工具链
征程6
评论4
0/1000
  • Huanghui
    Lv.5
    支持的,升级一个工具链版本到3.0.27吧
    2024-12-25
    1
    11
    • eyehorus回复Huanghui:

      收到,我们要一下最新的版本,再来试试。多谢。

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

      升级到3.0.27之后依然不支持scatter的转换,报错如下:

      2024-12-26 02:37:50,660 INFO Start hb_compile...
      2024-12-26 02:37:50,660 INFO hbdk version: 4.1.13
      2024-12-26 02:37:50,660 INFO hmct version: 2.1.2
      2024-12-26 02:37:50,661 INFO hb_compile version: 3.3.8
      2024-12-26 02:37:51,205 INFO check template yaml load success

      loc(fused>["ScatterElements_1605"]): error: 'hbir.scatter_elements' op given dim out of range [0, 5). notes: ['see current operation: %1042 = "hbir.scatter_elements"(%1040, %1039, %1041) }> : (tensor, tensor, tensor) -> tensor'] MLIR Python Diagnostic handler raised exception: Exception: error detected

      在之前的帖子(https://developer.horizon.auto/forum/10134)里,您提过尝试减维,减维之后依然报错,是否因为INT64的问题:

      loc(fused>["ScatterElements_1286"]): error: 'hbir.scatter_elements' op given dim out of range [0, 4). notes: ['see current operation: %1032 = "hbir.scatter_elements"(%1030, %1029, %1031) }> : (tensor, tensor, tensor) -> tensor'] MLIR Python Diagnostic handler raised exception: Exception: error detected

      2024-12-26
      0
    • Huanghui回复eyehorus:

      收到,我确认一下哈

      2024-12-26
      0
    • Huanghui回复eyehorus:

      把模型发我一份,我在新的补丁上看看

      2024-12-26
      0
    • Huanghui回复eyehorus:

      error: 'hbir.scatter_elements' op given dim out of range [0, 4).

      ScatterElements_1286这个算子的 dim 是多少?

      2024-12-26
      0
    • eyehorus回复Huanghui:

      我们的模型无法提供,不过我做了一个含有scatter算子的简易模型,可以试试。

      另外onnx格式的文件是不支持上传吗?我试了传不上去

      2024-12-26
      0
    • Huanghui回复eyehorus:

      找百度网盘上传,然后分享个地址给我。另外,从错误提示看,算子 ScatterElements_1286 参数的dim超出的约束,你需要去看看,啥情况,错误就在这里:

      error: 'hbir.scatter_elements' op given dim out of range [0, 4).

      2024-12-26
      0
    • eyehorus回复Huanghui:

      改成txt格式能上传了,下载后删掉后缀.txt就行。

      这个dim的问题我试过了,不管是5还是4还是3,都是一样的报错,所以应该和维度没关系。

      2024-12-26
      0
    • Huanghui回复eyehorus:

      OK,那我就复现看看吧

      2024-12-26
      0
    • eyehorus回复Huanghui:

      好的, 谢谢,我把模型的源码也传到附件了,方便修改

      2024-12-26
      0
    • eyehorus回复Huanghui:

      请问有什么进展吗?

      2024-12-31
      0
  • Huanghui
    Lv.5

    scatter算子 是支持的呀,为啥要替换!

    2024-12-25
    0
    0
  • tomyc
    Lv.1

    j6e应该不支持scatter吧。可以考虑cpu实现下,或者拆下模型

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

    问题复现了,解决方法如下:

    2024-12-31
    0
    1
    • eyehorus回复Huanghui:

      谢谢 这个方法OK的

      2025-01-02
      0