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=1, disable_names=None, amp_num=0, w_hessian=False, hessian_optim=None, keep_acc=None, pr=1.0, mm_tensor=True, int_bias=False, calib_mode=0, seq_opt=None, dev_type='cpu', dev_id=0)
参数说明
参数名 |
输入/返回值 |
含义 |
使用限制 |
---|---|---|---|
w_bit |
输入 |
权重量化bit。 |
可选。 数据类型:int。 默认为8,可选值为[4,8,16]。 |
a_bit |
输入 |
激活层量化bit。 |
可选。 数据类型:int。 默认为8,可选值为[8,16]。 |
w_signed |
输入 |
是否对权重进行符号量化。 |
可选。 数据类型:bool。 默认为True。 |
a_signed |
输入 |
是否对激活值进行符号量化。 |
可选。 数据类型:bool。 默认为False。 |
w_sym |
输入 |
权重是否对称量化。 |
可选。 数据类型:bool。 默认为True。 |
a_sym |
输入 |
激活值是否对称量化。 |
可选。 数据类型:bool。 默认为False。 |
input_shape |
输入 |
模型输入的shape,用于Data-Free量化构造虚拟数据。 |
可选。 数据类型:object。 默认值None,暂不支持修改。 |
act_quant |
输入 |
是否对激活值进行量化。 |
可选。 数据类型:bool。 默认值为True。 |
act_method |
输入 |
激活值量化方法。 |
可选。 数据类型:int。 可选值如下所示,默认为1。
|
disable_names |
输入 |
需排除量化的节点名称,即手动回退的量化层名称。 如精度太差,推荐回退量化敏感层,如分类层、输入层、检测head层等。 |
可选。 数据类型:object。 默认值None。 |
amp_num |
输入 |
混合精度量化回退层数。 精度降低过多时,可增加回退层数,推荐优先回退3~7层,如果精度恢复不明显,再增加回退层数。 |
可选。 数据类型:int。 默认为0。暂不支持修改。 |
w_hessian |
输入 |
是否开启hessian(海森矩阵)统计。 |
可选。 数据类型:bool。 默认值:False。 |
hessian_optim |
输入 |
是否开启hession计算速度优化。 |
可选。预留参数,当前暂不支持修改。 数据类型:object。 包含以下三项配置。
默认值:hessian_optim={'flag': False, 'std_threshold': -1, 'sigma_weight': 5} |
keep_acc |
输入 |
精度保持策略。 admm和round_opt用来改善权重量化,减少权重量化误差,推荐在label-free模式下使用,适当改善量化效果。 |
可选。 数据类型:object。 包含以下三种精度保持策略:
输入模板为:keep_acc={'admm': [False, 1000], 'round_opt': False} 。 |
pr |
输入 |
量化选择概率。 |
可选。 数据类型:float。 取值范围:[0,1]。 默认值:1.0,建议取值0.5。 |
mm_tensor |
输入 |
选择进行per-channel量化或per-tensor量化。 |
可选。 数据类型:bool。 默认值:True。
|
int_bias |
输入 |
是否量化bias(偏差)。 |
可选。 数据类型:bool。 默认值为False。 |
calib_mode |
输入 |
校准方式。 |
可选。 数据类型:int。 取值范围[0,1],默认值为0。
|
seq_opt |
输入 |
序列分布平滑配置。 |
可选。预留参数,当前暂不支持修改。 数据类型:object。 包含以下三项配置。
默认值:seq_opt={'en': False, 'n': 10, 'bin': 0.01}。 |
dev_type |
输入 |
device类型。 |
可选。 数据类型:object。 可选值:['cpu', 'cuda', 'npu'],默认为'cpu',不支持用户修改。 |
dev_id |
输入 |
DEVICE ID。 |
可选。 数据类型:int。 取值范围[0,8],默认值为0。 |
调用示例
from modelslim.pytorch.llm_ptq.llm_ptq_tools import Calibrator, QuantConfig quant_config = QuantConfig(pr=0.5, mm_tensor=Flase)