文档
注册

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。

  • 0代表Data-Free场景的量化方法。
  • 1代表Label-Free场景的min-max量化方式。
  • 2代表Label-Free场景的histogram量化方式。
  • 3代表Label-Free场景的自动混合量化方式,LLM大模型场景下推荐使用。

disable_names

输入

需排除量化的节点名称,即手动回退的量化层名称。

如精度太差,推荐回退量化敏感层,如分类层、输入层、检测head层等。

可选。

数据类型:object。

默认值None。

amp_num

输入

混合精度量化回退层数。

精度降低过多时,可增加回退层数,推荐优先回退3~7层,如果精度恢复不明显,再增加回退层数。

可选。

数据类型:int。

默认为0。暂不支持修改。

w_hessian

输入

是否开启hessian(海森矩阵)统计。

可选。

数据类型:bool。

默认值:False。

hessian_optim

输入

是否开启hession计算速度优化。

可选。预留参数,当前暂不支持修改。

数据类型:object。

包含以下三项配置。

  • flag:数据类型[bool],是否开启。
  • std_threshold:数据类型[float]开启计算速度优化的阈值。
  • sigma_weight:数据类型[int]计算离群值阈值。

默认值:hessian_optim={'flag': False, 'std_threshold': -1, 'sigma_weight': 5}

keep_acc

输入

精度保持策略。

admm和round_opt用来改善权重量化,减少权重量化误差,推荐在label-free模式下使用,适当改善量化效果。

可选。

数据类型:object。

包含以下三种精度保持策略:

  • admm策略:数据类型[bool, int],bool配置是否开启,int配置优化迭代次数。
  • round_opt:数据类型[bool],配置是否开启。

输入模板为:keep_acc={'admm': [False, 1000], 'round_opt': False} 。

pr

输入

量化选择概率。

可选。

数据类型:float。

取值范围:[0,1]。

默认值:1.0,建议取值0.5。

mm_tensor

输入

选择进行per-channel量化或per-tensor量化。

可选。

数据类型:bool。

默认值:True。

  • True: per-tensor量化。
  • False: per-channel量化,建议选择该量化方式。

int_bias

输入

是否量化bias(偏差)。

可选。

数据类型:bool。

默认值为False。

calib_mode

输入

校准方式。

可选。

数据类型:int。

取值范围[0,1],默认值为0。

  • 0:不开启逐层校准。
  • 1:开启逐层校准。

seq_opt

输入

序列分布平滑配置。

可选。预留参数,当前暂不支持修改。

数据类型:object。

包含以下三项配置。

  • en:数据类型[bool],配置是否开启。
  • n:数据类型[int],平滑迭代次数。
  • bin:数据类型[float],平滑间隔。

默认值: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)
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词