在对要量化的模型进行定义时,需要实现模型 set_qconfig 方法对量化方式进行配置。
当前设置QConfig接口由 hat.utils.qconfig_manager 提供,set_qconfig 中调用 hat.utils.qconfig_manager 实现对模块Qconfig的设置,例如:
HAT支持QAT训练时使用自定义QConfig,只需在config文件的 qat_solver 中配置 qconfig_params 参数即可:
qconfig_params 主要有五个参数配置项:dtype、activation_fake_quant、weight_fake_quant、activation_qkwargs、weight_qkwargs。
dtype:量化比特类型,支持 "qint8", 缺省时使用默认值 "qint8"。
activation_fake_quant:指定activation的量化器,支持 "fake_quant"、"lsq"、"pact", 缺省时使用默认值 "fake_quant"。
weight_fake_quant:指定weight的量化器。支持及使用方式同 activation_fake_quant。
activation_qkwargs:指定activation量化器的参数。
activation_fake_quant 是 "fake_quant" 时, activation_qkwargs 可设置参数:
activation_fake_quant 是 "lsq" 时, activation_qkwargs 可设置参数:
activation_fake_quant 是 "pact" 时, activation_qkwargs 可设置参数:weight_qkwargs:指 weight量化器的参数。除了weight_qkwargs 的默认 observer 是 MovingAveragePerChannelMinMaxObserver外, 其他参数配置及用法,同 activation_qkwargs。
activation_qkwargs 和 weight_qkwargs 一般是不需要进行设置的,缺省使用默认配置即可。但当使用 calibration 后进行 QAT 训练时,可能需要修改 averaging_constant。