专栏算法工具链j6-e 混合异构量化模型的 cpu算子的quantize和dequantize 耗时比较大

j6-e 混合异构量化模型的 cpu算子的quantize和dequantize 耗时比较大

已解决
2025-05-12
134
6
borad: J6-E
scatternd 算子是在cpu上运行的,量化参数是以"all_node_type": "int16"进行。
"Node-10-quant::quantize-ScatterND_25_id_29_cpu_segment_10": {
"avg_time": 31.224700000000002,
"max_time": 31.399,
"min_time": 30.905
},

"Node-4-quant::dequantize-ScatterND_25_id_29_cpu_segment_4": {
"avg_time": 5.48812,
"max_time": 5.606,
"min_time": 5.178

},

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

    你好,如果 all_node_type类型改成int8呢?

    2025-05-12
    0
    3
    • 回复Huanghui:

      "Node-11-native::ScatterND-ScatterND_25_id_28_cpu_segment_11": { "avg_time": 20.686395, "max_time": 20.823, "min_time": 20.558 }, "Node-12-quant::quantize-ScatterND_25_id_28_cpu_segment_12": { "avg_time": 32.15829, "max_time": 32.492, "min_time": 31.949 },

      all_node_type改为int8后,耗时并没有减少,scatter 的输入是[40000,64],输出是[345600,64],和这个维度有关么,但是onnx不能以[64,40000]作为scatter的输入

      2025-05-12
      0
    • 回复Huanghui:

      还需要我提供什么log,可以定位到问题吗

      2025-05-13
      0
    • 回复Huanghui:


      你好,请问一下

      我应该只需要把这个cpu算子(scatter)以int8来实现,应该就没有这个量化和反量化的问题了,我要怎么达到这一步呢,有示例么

      2025-05-14
      0
  • Huanghui
    Lv.5

    ScatterND的消除:ScatterND 由 slice 之后 inplace 进行运算导致, 等价替换相关操作即可。

    下面给你参考

    至于 quantize和dequantize 运行在CPU上确实性能影响比较大,通过vpu进行处理,在yaml中model_parameters参数组下,增加enable_vpu: True。

    2025-05-14
    0
    1
    • 回复Huanghui:

      这个scatternd在cpu上一定要量化和反量化么,可以int8作为cpu算子的输入输出么

      2025-05-14
      0