跳转至

QatConfig

功能说明

量化参数配置类,保存量化过程中配置的参数。

函数原型

QatConfig(w_bit=8, a_bit=8, a_sym=False, amp_num=0, steps=1, ema=0.99, is_forward=False, ignore_head_tail_node=False, disable_names=None, has_init_quant=False, quant_mode=True, grad_scale=0.0, compressed_model_checkpoint=None, opset_version=11, save_params=False, input_names=None, output_names=None, save_onnx_name=None)

参数说明

参数名 可选/必选 参数说明
w_bit 可选 权重量化bit。
数据类型:int。默认为8,不支持修改。
输入值/返回值:输入值。
a_bit 可选 激活层量化bit。
数据类型:int。默认为8,不支持修改。
输入值/返回值:输入值。
a_sym 可选 激活值是否对称量化。
数据类型:bool。默认为False。
输入值/返回值:输入值。
amp_num 可选 自动回退层数。
精度降低过多时,可增加回退层数,推荐优先回退1~3层,如果精度恢复不明显,再增加回退层数。
数据类型:int。取值范围为[0,10],默认为0,可输入1、2、3等。
输入值/返回值:输入值。
steps 可选 自动回退的步数。
数据类型:int。默认为1,取值范围大于等于1。
输入值/返回值:输入值。
ema 可选 Adam优化器中参数,指数移动平均数指标。
数据类型:float。取值范围为[0.1,1.0],默认为0.99。
输入值/返回值:输入值。
is_forward 可选 是否参考mmdetection对前向进行处理。
数据类型:bool。默认为False。
输入值/返回值:输入值。
ignore_head_tail_node 可选 是否将首尾层忽略,不进行量化。
数据类型:bool。默认为False。
输入值/返回值:输入值。
disable_names 可选 需排除量化的节点名称,即手动回退的量化层名称。
如精度太差,可以选择回退的量化层。
数据类型:list[str]。默认为None。
输入值/返回值:输入值。
has_init_quant 可选 模型是否做过量化初始化。
数据类型:bool。默认为False。
输入值/返回值:输入值。
quant_mode 可选 是否开启量化模式。
数据类型:bool。默认值为True。
输入值/返回值:输入值。
grad_scale 可选 梯度补偿力度。
数据类型:float。默认值为0.0,建议配置为0.001。
输入值/返回值:输入值。
compressed_model_checkpoint 可选 导出ONNX模型时,保存的伪量化模型权重文件及所在路径。
数据类型:string。默认为None。
输入值/返回值:输入值。
opset_version 可选 导出ONNX模型时版本号,需提前安装对应的ONNX版本。
数据类型:int。可选值为11和13,默认为11。
输入值/返回值:输入值。
save_params 可选 导出时是否将量化相关参数保存为npy文件。
数据类型:bool。默认为False。
输入值/返回值:输入值。
input_names 可选 ONNX的输入名称。
数据类型:list[str]。默认为None。
输入值/返回值:输入值。
output_names 可选 ONNX的输出名称。
数据类型:list[str]。默认为None。
输入值/返回值:输入值。
save_onnx_name 可选 伪量化模型权重。
数据类型:str。默认为None。
输入值/返回值:输入值。

调用示例

from msmodelslim.pytorch.quant.qat_tools import QatConfig
quant_config = QatConfig(grad_scale=0.001)