qdq_utils

支持插入Q/DQ节点的各种工具。

函数

fp4qdq_to_2dq

将给定ONNX模型的FP32/FP16权重转换为FP4权重和缩放因子。

insert_dq_nodes

将新的初始化器和DQ节点插入图中。

insert_pre_quant_scale_nodes

将新的mul节点插入图中。

insert_qdq_nodes

将比例和QDQ节点插入图中。

make_gs_awq_scale

从给定的numpy数组创建一个GraphSurgeon缩放张量。

make_gs_dequantize_node

创建一个GraphSurgeon反量化节点。

make_gs_dequantize_output

创建一个表示量化节点输出的GraphSurgeon变量。

make_gs_pre_quant_scale_node

创建一个GraphSurgeon反量化节点。

make_gs_pre_quant_scale_output

创建一个表示量化节点输出的GraphSurgeon变量。

make_gs_quantize_node

创建一个GraphSurgeon量化节点。

make_gs_quantize_output

创建一个表示量化节点输出的GraphSurgeon变量。

make_gs_quantized_weight

从量化权重张量创建一个GraphSurgeon张量。

make_gs_scale

从给定的numpy数组创建一个GraphSurgeon缩放张量。

make_gs_zp

创建一个具有给定形状的GraphSurgeon零点张量,所有元素均为零。

qdq_to_dq

将给定ONNX模型的FP32/FP16权重转换为INT8/FP8权重。

replace_fp4qdq_with_2dq

将ONNX图中的给定节点替换为由两个DequantizeLinear节点组成的子图。

replace_scale_values

替换校准缓存中的比例值。

use_trt_qdq_ops

全局设置节点名称为TRT自定义名称。

fp4qdq_to_2dq(onnx_model)

将给定ONNX模型的FP32/FP16权重转换为FP4权重和缩放因子。

TRT_FP4QDQ 节点将从权重中移除,并在输出模型中生成两个 DQ 节点,这些节点包含转换后的 FP4 权重和缩放因子。

Parameters:

onnx_model (ModelProto) – ONNX 模型 protobuf。

Returns:

带有DQ节点的ONNX模型protobuf,用于权重和DynQ + DQ节点用于激活。

Return type:

ModelProto

insert_dq_nodes(graph, scales, quantized_weights, attributes=None, zero_points=None)

将新的初始化器和DQ节点插入图中。

Parameters:
  • graph (Graph) – 要修改的图。

  • weights – 从ONNX初始值设定项名称到张量的映射。

  • scales (Dict[str, ndarray]) – 从ONNX初始化器名称到该初始化器所需比例因子的映射。

  • dq_only – 是否仅插入dq节点。

  • quantized_weights (Dict[str, ndarray]) –

  • 属性 (字典[字符串, 任意类型]) –

  • zero_points (Dict[str, ndarray] | None) –

insert_pre_quant_scale_nodes(graph, input_tensors, pre_quant_scale)

将新的mul节点插入图中。

Parameters:
  • graph (Graph) – 要修改的图。

  • input_tensors (Dict[str, str]) – 一个权重张量名称映射到相应输入张量名称的字典

  • pre_quant_scale (Dict[str, ndarray]) – 从ONNX输入张量名称到相应的预量化比例的映射。

insert_qdq_nodes(graph, scales, weight_map)

将比例和QDQ节点插入图中。

Parameters:
  • graph (Graph) – 要修改的图。

  • scales (Dict[str, ndarray]) – 从ONNX初始化器名称到该初始化器所需比例因子的映射。

  • weight_map (Dict[str, Tensor]) – 从ONNX初始化器名称到graphsurgeon张量的映射。

make_gs_awq_scale(name, scale)

从给定的numpy数组创建一个GraphSurgeon缩放张量。

name 是张量的期望 _basename_。

Parameters:
  • name (str) –

  • scale (ndarray) –

Return type:

常量

make_gs_dequantize_node(name, inputs, outputs, attributes=None)

创建一个GraphSurgeon反量化节点。

name 是节点的期望 _basename_。

Parameters:
  • name (str) –

  • inputs (Sequence[Tensor]) –

  • 输出 (序列[张量]) –

  • 属性 (字典[字符串, 任意类型]) –

Return type:

节点

make_gs_dequantize_output(name, shape, dtype)

创建一个表示量化节点输出的GraphSurgeon变量。

name 是节点的期望 _basename_。

Parameters:
  • name (str) –

  • 形状 (序列[整数]) –

  • dtype (dtype) –

Return type:

变量

make_gs_pre_quant_scale_node(name, inputs, outputs)

创建一个GraphSurgeon反量化节点。

name 是节点的期望 _basename_。

Parameters:
  • name (str) –

  • 输入 (序列[张量]) –

  • 输出 (序列[张量]) –

Return type:

节点

make_gs_pre_quant_scale_output(name, shape, dtype)

创建一个表示量化节点输出的GraphSurgeon变量。

name 是节点的期望 _basename_。

Parameters:
  • name (str) –

  • 形状 (序列[整数]) –

  • dtype (dtype) –

Return type:

变量

make_gs_quantize_node(name, inputs, outputs)

创建一个GraphSurgeon量化节点。

name 是节点的期望 _basename_。

Parameters:
  • name (str) –

  • inputs (Sequence[Tensor]) –

  • 输出 (序列[张量]) –

Return type:

节点

make_gs_quantize_output(name, shape, dtype)

创建一个表示量化节点输出的GraphSurgeon变量。

name 是节点的期望 _basename_。

Parameters:
  • name (str) –

  • 形状 (序列[整数]) –

  • dtype () –

Return type:

变量

make_gs_quantized_weight(name, wq, dtype)

从量化权重张量创建一个GraphSurgeon张量。

name 是张量的期望 _basename_。

Parameters:
  • name (str) –

  • wq (ndarray) –

Return type:

常量

make_gs_scale(name, scale)

从给定的numpy数组创建一个GraphSurgeon缩放张量。

name 是张量的期望 _basename_。

Parameters:
  • name (str) –

  • scale (ndarray) –

Return type:

常量

make_gs_zp(name, shape, dtype)

创建一个具有给定形状的GraphSurgeon零点张量,所有元素均为零。

name 是张量的期望 _basename_。

Parameters:
  • name (str) –

  • 形状 (序列[整数]) –

Return type:

常量

qdq_to_dq(onnx_model, verbose=False)

将给定ONNX模型的FP32/FP16权重转换为INT8/FP8权重。

Q节点将从权重中移除,并且在输出模型中只有DQ节点具有那些转换后的INT8/FP8权重。此外,悬空的Q节点将被融合并更新其消费者的权重。

Parameters:
  • onnx_model (ModelProto) – ONNX 模型 protobuf。

  • verbose (bool) –

Returns:

仅包含用于权重的DQ节点和用于激活的QDQ节点的ONNX模型protobuf。

Return type:

ModelProto

replace_fp4qdq_with_2dq(graph, node, initializer_indices, value_info_map, graph_inputs, w_f4, sw_f32_per_tensor, sw_f8_per_block, precision_dtype, block_size)

将ONNX图中的给定节点替换为由两个DequantizeLinear节点组成的子图。

Parameters:
  • graph (GraphProto) – 包含要替换节点的ONNX图。

  • node (NodeProto) – 要替换的节点。

  • initializer_indices (Dict[str, int]) – 一个将初始化器名称映射到图中索引的字典。

  • value_info_map (Dict[str, ValueInfoProto]) – 一个将值信息名称映射到其ValueInfoProto对象的字典。

  • graph_inputs (Set[str]) – 一组图形输入名称。

  • w_f4 (ndarray) – 用于 w_f4 的 NumPy 数组。

  • sw_f32_per_tensor (ndarray) – 用于 sw_f32_per_tensor 的 NumPy 数组。

  • sw_f8_per_block (ndarray) – 用于 sw_f8_per_block 的 NumPy 数组。

  • precision_dtype (str) – 权重的精度。

  • block_size (int) – 在块量化中使用的块大小。

replace_scale_values(graph, act_scales_dict)

替换校准缓存中的比例值。

Parameters:
  • (GraphProto) –

  • act_scales_dict (Dict[str, float]) –

use_trt_qdq_ops()

全局设置节点名称为TRT自定义名称。