QuantConfig
功能说明
量化参数配置类,保存量化过程中配置的参数。
函数原型
QuantConfig(w_bit=8, a_bit=8, w_signed=True, a_signed=False, w_sym=True, a_sym=False, input_shape=None, act_quant=True, act_method=0, quant_mode=0, disable_names=None, amp_num=0, keep_acc=None, sigma=25)
参数说明
参数名 |
输入/返回值 |
含义 |
使用限制 |
---|---|---|---|
a_bit |
输入 |
激活层量化bit。 |
可选。 数据类型:int。 默认为8,暂不支持其他bit量化,不支持修改。 |
w_bit |
输入 |
权重量化bit。 |
可选。 数据类型:int。 默认为8,暂不支持其他bit量化,不支持修改。 |
w_signed |
输入 |
是否对权重进行符号量化。 |
可选。 数据类型:bool。 默认为True。 |
a_signed |
输入 |
是否对激活值进行符号量化。 |
可选。 数据类型:bool。 默认为False。 使用relu的CV模型建议设置为False,其他模型建议设置为True。 |
w_sym |
输入 |
权重是否对称量化。 |
可选。 数据类型:bool。 默认为True。 |
a_sym |
输入 |
激活值是否对称量化。 |
可选。 数据类型:bool。 默认为False。 |
input_shape |
输入 |
模型输入的shape,用于Label-Free量化构造虚拟数据。
|
必选。 数据类型:list[int]。 |
act_quant |
输入 |
是否对激活值进行量化。 |
可选。 数据类型:bool。 默认值为True。 暂不支持修改。 |
act_method |
输入 |
激活值量化方法。 |
可选。 数据类型:int。 取值为[0,1,2],默认为0。
|
quant_mode |
输入 |
量化模式。 |
可选。 数据类型:int。 取值为[0,1],默认为0。
|
disable_names |
输入 |
需排除量化的节点名称,即手动回退的量化层名称。 如精度太差,推荐回退量化敏感层,如分类层、输入层、检测head层等。 |
可选。 数据类型:list[str]。 默认值[]。 |
amp_num |
输入 |
混合精度量化回退层数。 精度降低过多时,可增加回退层数,推荐优先回退3~7层,如果精度恢复不明显,再增加回退层数。 |
可选。 数据类型:int。 默认为0。 |
sigma |
输入 |
Label-Free的量化统计方法。 建议输入值为0或25,卷积类模型使用sigma统计效果更好,transformers类模型min-max统计效果更好。 |
可选。 数据类型:int。 默认为25。
|
keep_acc |
输入 |
精度保持策略。
|
可选。 数据类型:dict。 包含以下三种精度保持策略:
输入模板为:keep_acc={'admm': [False, 1000], 'easy_quant': [False, 1000], 'round_opt': False} 。 |
调用示例
from msmodelslim.pytorch.quant.ptq_tools import QuantConfig disable_names = [] input_shape = [1, 3, 224, 224] keep_acc={'admm': [False, 1000], 'easy_quant': [False, 1000], 'round_opt': False} quant_config = QuantConfig(disable_names=disable_names, amp_num=0, input_shape=input_shape, keep_acc=keep_acc)