分区

与分区ONNX模型以放置QDQ节点相关的实用工具。

函数

find_fusible_partitions

遍历图并收集所有cask/kgen可融合分区。

find_hardcoded_patterns

找到一些不可量化的预定义模式!

find_layer_norm_partitions

在图中找到层归一化模式。

find_mha_partitions

在图中找到不应量化的MHA模式。

find_non_quantizable_partitions_from_patterns

从固定模式中找到可融合的分区。

find_quantizable_nodes

返回可量化但尚未分区的图操作。

get_skiped_output_layers

返回不可量化输出层的名称。

find_fusible_partitions(graph, partitioned_nodes, non_residual_inputs)

遍历图并收集所有cask/kgen可融合分区。

Parameters:
  • graph (Graph) – Onnx 模型图。

  • partitioned_nodes (Set[str]) – 已分区节点的集合。

  • non_residual_inputs (Dict[str, str]) – 非残差输入映射。

Returns:

可被CASK与Conv/MatMul骨干融合的分区列表。 仅包含点操作符的KGEN分区列表。

Return type:

元组[列表[列表[节点]], 列表[列表[节点]]]

find_hardcoded_patterns(graph)

找到一些不可量化的预定义模式!

注意。匹配此尾部模式会导致 MTL_v1 -5.5% [“ReduceSum”, “Add”, “Div”, “Mul”, “ReduceSum”, “Sub”, “Pow”, “Mul”, “ReduceSum”, “Sqrt”]

Parameters:

() –

Return type:

列表[列表[节点]]

find_layer_norm_partitions(graph)

在图中找到层归一化模式。

Parameters:

() –

Return type:

列表[列表[节点]]

find_mha_partitions(graph)

在图中找到不应量化的MHA模式。

一个常见的MHA实现如下所示: t -> MatMul -> (可选的)逐点操作(如Add、Mul、Sub) -> Softmax -> MatMul -> 输出 不符合这种模式的实现不应该被量化(至少目前如此)。

Parameters:

() –

Return type:

列表[列表[节点]]

find_non_quantizable_partitions_from_patterns(graph)

从固定模式中找到可融合的分区。

某些融合内核对应物通常是onnx中本地操作的一个子图。这些模式在这里被识别并量化以匹配编译器的期望。

Parameters:

() –

Return type:

列表[列表[字符串]]

find_quantizable_nodes(graph, nodes_to_quantize, partitioned_nodes, quantizable_op_types)

返回可量化但尚未分区的图操作。

Parameters:
  • () –

  • nodes_to_quantize (List[Node]) –

  • partitioned_nodes (Set[str]) –

  • quantizable_op_types (List[str]) –

Return type:

列表[节点]

get_skiped_output_layers(graph, paritially_quantizable_nodes)

返回不可量化输出层的名称。

Parameters:
  • () –

  • paritially_quantizable_nodes (List[Node]) –

Return type:

列表[字符串]