int4
在ONNX模型上执行INT4 WoQ,并返回ONNX ModelProto。
函数
将INT4仅权重量化(WoQ)应用于ONNX模型。 |
- quantize(onnx_path, calibration_method='awq_lite', calibration_data_reader=None, calibration_eps=['cuda:0', 'dml:0', 'cpu'], use_external_data_format=True, use_zero_point=False, block_size=None, nodes_to_exclude=['/lm_head'], **kwargs)
将INT4仅权重量化(WoQ)应用于ONNX模型。
目前,仅支持
MatMul节点的量化。- Parameters:
onnx_path (str | ModelProto) – 输入的ONNX模型(基础模型)
calibration_method (str) –
它决定了量化算法。一些重要的算法包括:
awq_lite: 应用AWQ缩放(Alpha搜索)后进行INT4量化。
awq_clip: 执行权重裁剪和INT4量化。
calibration_data_reader (CalibrationDataReader) – 它可以被分配一个模型输入的列表。如果它是
None,那么在AWQ实现中将使用随机生成的模型输入进行校准。calibration_eps (List[str]) –
它表示用于基础模型校准的ONNX执行提供者(EPs)。 这个EPs列表随后被传递给onnxruntime(ORT)的create-session API, 以执行基础模型校准。
注意
确保所选的calibration-EPs的ORT包及其依赖项已正确设置。
use_external_data_format (bool) – 如果为True,将张量保存到外部文件以供量化模型使用。
use_zero_point (bool) – 如果为True,启用基于零点的量化。
block_size (int | None) – 用于int4量化的块大小参数。默认值为128,用于
block_size参数。nodes_to_exclude (List[str] | None) –
- 表示要排除的节点的节点名称(或节点名称的子字符串)列表
从量化中排除。
注意
默认情况下,
lm-head节点不会被量化。kwargs (Any) –
它表示用于int4量化的额外关键字参数。它包括:
- awqlite_alpha_step (float): 在awq-lite中寻找最佳Alpha的步长。范围:[0, 1]。
默认值:0.1。
- awqclip_alpha_step (float): 在awq-clip中寻找最佳Alpha的步长。
默认值:0.05
- awqclip_alpha_min (float): 在awq-clip中权重裁剪的最小阈值。
默认值:0.5。
- awqclip_bsz_col (int): 在awq-clip中处理列维度的批量大小。
默认值:1024。
- Return type:
ModelProto
返回: 一个量化的ONNX模型,格式为ONNX ModelProto。