QatConfig
功能说明
量化参数配置类,保存量化过程中配置的参数。
函数原型
QatConfig(w_bit=8, a_bit=8, a_sym=False, ema=0.99, amp_num=0, steps=1, 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。 |
ema |
输入 |
adam优化器中参数,指数移动平均数指标。 |
可选。 数据类型:float。 取值范围为[0.1,1.0],默认为0.99。 |
amp_num |
输入 |
自动回退层数。 精度降低过多时,可增加回退层数,推荐优先回退1~3层,如果精度恢复不明显,再增加回退层数。 |
可选。 数据类型:int。 取值范围为[0,10],默认为0,可输入1、2、3等。 |
steps |
输入 |
自动回退的步数。 |
可选。 数据类型:int。 默认为1,取值范围大于等于1。 |
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 modelslim.pytorch.quant.qat_tools import QatConfig quant_config = QatConfig(grad_scale=0.001)