专栏算法工具链ptq和qat自己设置量化精度

ptq和qat自己设置量化精度

已解决
默认383362025-04-14
70
9

您好,想问一下在ptq量化中我看可以自己设置某些算子的量化精度为int8/int16,但如果只设置部分算子的话,模型量化后各个算子的数据精度不一致,其在给输入数据实际运行时是怎么处理的?另外qat量化方式中有什么方式可以设置量化精度吗?

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

    你好,对于PTQ,量化精度配置的输入的精度,工具链会尽量按照用户的配置进行量化,但是如果有不支持的情况,比如某个算子配置了int16的输入,但是如果上一个算子的输出只支持int8,工具链会选择自动回退配置到int8。QAT的量化精度是从全局到具体逐步细化的,配置可以根据阶段(calib还是qat)优先采用 qconfig 模板,然后再根据具体的case,调整不同层的qconfig。

    2025-04-14
    1
    8
    • 默认38336回复Huanghui:

      就如果靠前的某一个算子只能int8,后面的所有算子不管指定的是什么都只能int8了吧?因为数据没法从低精度再回到高精度

      2025-04-14
      0
    • 默认38336:

      ptq指定量化精度只能在yaml中 set_Add_InputType_int16 这样一个个算子指定么,有没有什么整体设置的方式

      2025-04-14
      0
    • Huanghui回复默认38336:

      不是的,你看算子支持列表,算子的输入输出类型可以是不一样的,即使靠前的某一个算子只能int8输入,但是如果支持int16输出并且后面的算子是支持int16的,也是可以在回到int16的哈

      2025-04-14
      0
    • Huanghui回复默认38336:

      yaml的精度配置是从大粒度到小粒度逐步细化的:

      2025-04-14
      0
    • 默认38336回复Huanghui:

      好的了解,那可以对模型整体指定量化精度而不是一个个算子指定么?然后目前量化完就是int8/int16吧?

      2025-04-14
      0
    • 默认38336回复Huanghui:

      还想问一下这个低精度能回到高精度的大概原理是啥?

      2025-04-14
      0
    • Huanghui回复默认38336:

      这个就值执行全int16,能支持int16的算子都会int16,编译后的具体类型可以查看编译日志打印。
      2025-04-14
      0
    • Huanghui回复默认38336:

      没啥原理,input和output的量化校准和设置本来就来分开的,int8输入计算后int16输出很正常

      2025-04-14
      0