专栏算法工具链qat咨询

qat咨询

解答中
浮浮浮2026-02-11
49
6

请问在qat训练中,我能否先用pytorch官方的qat方法来训练模型,然后再用地平线的qat工具量化导出hbir_qat_model模型。

也就是说在训练时,不用oe包中的训练脚本train.py,但从导出定点模型之后,都用oe包中的脚本。这个可行吗?
算法工具链
征程6
评论2
0/1000
  • Huanghui
    Lv.5
    可以不使用 OE 的 train.py,但不建议使用 PyTorch 官方 QAT 的 FakeQuant 体系直接训练后再接地平线 QAT 导出
    地平线 QAT 导出依赖的是自己的 horizon_plugin_pytorch/HAT 的量化语义与插桩方式,也有一些特殊的算子实现/替换逻辑,PyTorch 原生 QAT 导出的模型量化标记通常无法被工具链按同样语义识别,容易出现“导出可做但精度/编译不可控”的问题。
    推荐做法是:训练阶段使用地平线的 QAT 组件(可以自写训练脚本,不必用 OE 的 train.py),训练完成后用用地平线API导出 HBIR/编译 HBM
    2026-02-11
    1
    4
    • 浮浮浮回复Huanghui:

      能否提供一个cuda(11.4)、torch(1.10.1)、ubuntu(20.04)的qat,当前训练框架是在这个环境下搭建的,哪一个版本的oe可以覆盖

      2026-02-24
      0
    • Huanghui回复浮浮浮:

      你好,目前发布版本是Ubuntu2204,torch2.3的,很抱歉暂时不支持版本定制哈,这个需求的原因是啥呢,你的模型开发平台比较老?

      2026-02-24
      0
    • 浮浮浮回复Huanghui:

      是的,模型在这个平台开发训练的,防止会有不兼容问题

      2026-02-24
      0
    • Huanghui回复浮浮浮:

      明白,不过版本是平台发版同一管理了,单独发版本不太可能,也会导致管理混乱。这个目前的处理方式就是算法侧根据异常提示适配一下工具链的版本。如果docker不行,conda+whls也是OK的。当然,如果能docker,尽量docker哈,不管哪种,工具链换环境就位并验证OK了,就根据异常信息适配就OK了

      2026-02-24
      0
  • yy1234
    Lv.2
    ptq的话训练过程不依赖地平线框架工具,只要能导出onnx就可以使用地平线提供的工具完成后续的量化编译。但是qat的量化训练依赖horizon_plugin_pytorch这个包,这个是地平线自定义的,和官方的pytorch有差别,如果使用官方的进行量化训练,那后续编译阶段大概率会出问题,因为量化要插入一些节点的,pytorch官方的节点定义和地平线的很可能不一致。最好还是参考地平线oe包里面的qat示例,完成一次float calib qat compile流程,再把自己模型也在地平线框架中实现。如果是很简单的模型,比如2d 几乎纯卷积 不含transform等复杂操作的,ptq其实精度也差不多够用了,可以先ptq尝试
    2026-02-11
    0
    0