int4

在ONNX模型上执行INT4 WoQ,并返回ONNX ModelProto。

函数

quantize

将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。