qdq_utils
支持插入Q/DQ节点的各种工具。
函数
将给定ONNX模型的FP32/FP16权重转换为FP4权重和缩放因子。 |
|
将新的初始化器和DQ节点插入图中。 |
|
将新的mul节点插入图中。 |
|
将比例和QDQ节点插入图中。 |
|
从给定的numpy数组创建一个GraphSurgeon缩放张量。 |
|
创建一个GraphSurgeon反量化节点。 |
|
创建一个表示量化节点输出的GraphSurgeon变量。 |
|
创建一个GraphSurgeon反量化节点。 |
|
创建一个表示量化节点输出的GraphSurgeon变量。 |
|
创建一个GraphSurgeon量化节点。 |
|
创建一个表示量化节点输出的GraphSurgeon变量。 |
|
从量化权重张量创建一个GraphSurgeon张量。 |
|
从给定的numpy数组创建一个GraphSurgeon缩放张量。 |
|
创建一个具有给定形状的GraphSurgeon零点张量,所有元素均为零。 |
|
将给定ONNX模型的FP32/FP16权重转换为INT8/FP8权重。 |
|
将ONNX图中的给定节点替换为由两个DequantizeLinear节点组成的子图。 |
|
替换校准缓存中的比例值。 |
|
全局设置节点名称为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自定义名称。