分区
与分区ONNX模型以放置QDQ节点相关的实用工具。
函数
遍历图并收集所有cask/kgen可融合分区。 |
|
找到一些不可量化的预定义模式! |
|
在图中找到层归一化模式。 |
|
在图中找到不应量化的MHA模式。 |
|
从固定模式中找到可融合的分区。 |
|
返回可量化但尚未分区的图操作。 |
|
返回不可量化输出层的名称。 |
- 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:
列表[字符串]