量化脚本说明

MindIE LLM中提供统一的脚本${ATB_SPEED_HOME_PATH}/examples/convert/model_slim/quantifier.py供用户生成量化权重。

参数说明

表1 量化脚本参数说明

参数名称

是否为必选

类型

默认值

描述

--model_path

string

-

模型权重路径。

--save_directory

string

-

量化权重保存路径。

--calib_texts

string

"What's deep learning?"

量化时的校准数据,多条数据间使用空格分割

--calib_file

string

${ATB_SPEED_HOME_PATH}/examples/convert/model_slim/teacher_qualification.jsonl

包含校准数据的文件

--calib_dataset_length

int

50

校准数据条数上限值

--w_bit

int

8

权重量化bit。

  • 可配置为4或8。
  • per_group的场景下需配置为4。
  • 稀疏量化场景下,需配置为4。

--a_bit

int

8

激活值量化bit。

可选值为8和16。

  • 大模型量化场景下,可配置为8或16。
    • per_group的场景下需配置为16。
    • is_dynamic参数配置为True,使用per-token动态量化场景下,需配置为8。
  • 大模型稀疏量化场景下,需配置为8。

--disable_names

List[string]

None

需排除量化的节点名称,即手动回退的量化层名称。如精度太差,推荐回退量化敏感层,如分类层、输入层、检测head层等。

--device_type

string

"cpu"

量化时的硬件类型,仅支持"cpu"或"npu"

--fraction

float

0.01

稀疏量化精度控制。

--act_method

int

1

激活值量化方法,仅支持1或2或3。

  • 1代表Label-Free场景的min-max量化方式。
  • 2代表Label-Free场景的histogram量化方式。
  • 3代表Label-Free场景的自动混合量化方式。
  • 开启lowbit稀疏量化功能时不支持选择值3。

--co_sparse

string

"False"

是否开启稀疏量化功能。 大模型稀疏量化场景下,优先使用lowbit稀疏量化功能,开启lowbit稀疏量化后,co_sparse参数自动失效。

--anti_method

string

""

离群值抑制算法,默认不开启。

  • "m1": Smooth Quant算法。
  • "m2": Outlier Suppression算法。
  • "m3": AWQ算法。
  • "m4": Smooth Quant优化算法 。
  • "m5": CBQ量化算法。

--disable_level

string

"L0"

自动回退等级。

  • "L0":不执行回退
  • "L1":回退1层
  • "L2":回退2层
  • "L3":回退3层
  • "L4":回退4层
  • "L5":回退5层

--input_ids_name

string

"input_ids"

tokenize后input_ids对应的键名

--attention_mask_name

string

"attention_mask"

tokenize后attention_mask对应的键名

--do_smooth

string

"False"

是否开启smooth功能。启用do_smooth功能后,平滑激活值。默认为False,不开启smooth功能。

--use_sigma

string

"False"

是否启动sigma功能。启用use_sigma功能后,可根据正态分布数值特点进行异常值保护。默认为False,不开启sigma功能。

--sigma_factor

float

3.0

启用sigma功能后sigma_factor的值,用于限制异常值的保护范围。默认为3,取值范围为[3, 4]。

--is_lowbit

string

"False"

是否开启lowbit量化功能。 默认为False,不开启lowbit量化功能。

--mm_tensor

string

"True"

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

  • True: per-tensor量化。
  • False: per-channel量化。

--w_sym

string

"True"

权重量化是否为对称量化,默认开启对称量化。

--use_kvcache_quant

string

"False"

是否使用kvcache量化功能,默认不开启kvcache量化功能。

--open_outlier

string

"True"

是否开启权重异常值划分。

  • True:开启权重异常值划分。
  • False:关闭权重异常值划分。
  • 仅在lowbit设置为True时生效。
  • W4A16的per_group量化场景下,需协同设置is_lowbit为True,open_outlier为False。

--group_size

int

64

per_group量化中group的大小。 默认值为64,支持配置为64或128。

仅适用于W4A16的per_group量化场景,需协同设置is_lowbit为True,open_outlier为False。

使用说明

由于不同模型量化特性参数配置不同,模型基于公共脚本编写各自的量化脚本。具体使用方式见模型Readme文件(${ATB_SPEED_HOME_PATH}/examples/models/{模型名称}/README.md)。

不同量化方式下的参数配置方法见后续章节。