onnx_ir.passes.common¶
ONNX IR 提供的内置 Pass
- class onnx_ir.passes.common.AddInitializersToInputsPass[source]¶
基类:
InPlacePass将初始化器添加到输入。
此 Pass 会查找所有初始化器,如果它们尚未存在,则将其添加到 graph.inputs 列表中。
- class onnx_ir.passes.common.CheckerPass(full_check=False, skip_opset_compatibility_check=False, check_custom_domain=False)[source]¶
基类:
PassBase在模型上运行 ONNX 检查器。
- class onnx_ir.passes.common.ClearMetadataAndDocStringPass[source]¶
基类:
InPlacePass清除模型、图、节点和函数中的所有元数据和文档字符串。
- class onnx_ir.passes.common.CommonSubexpressionEliminationPass(size_limit=10)[source]¶
基类:
InPlacePass消除 ONNX 图中的公共子表达式。
在 0.1.1 版本中添加。
在 0.1.3 版本中更改: 值小于
size_limit的常量节点将被 CSE。- 参数:
size_limit (int)
- size_limit¶
要进行 CSE 的张量的最大大小。如果张量包含的元素数量大于 size_limit,则不会进行 CSE。默认为 10。
- class onnx_ir.passes.common.DeduplicateHashedInitializersPass(size_limit=4294967296)[source]¶
基类:
InPlacePass从图中删除重复的初始化器张量(使用哈希方法)。
此 Pass 检测形状、dtype 和哈希内容相同的初始化器,并将所有重复引用替换为规范引用。
此 Pass 的峰值内存使用量应低于
DeduplicateInitializersPass,因为它不存储完整的张量数据在内存中,而是使用张量数据的哈希值。在 0.1.7 版本中添加。
- 参数:
size_limit (int)
- class onnx_ir.passes.common.DeduplicateInitializersPass(size_limit=1024)[source]¶
基类:
InPlacePass从主图和所有子图中删除重复的初始化器张量。
此 Pass 检测形状、dtype 和内容相同的初始化器,并将所有重复引用替换为规范引用。
初始化器在每个图中进行去重。要在模型全局(跨图)去重初始化器,请使用
LiftSubgraphInitializersToMainGraphPass将初始化器提升到主图,然后再运行此 Pass。在 0.1.3 版本中添加。
在 0.1.7 版本中更改: 此 Pass 现在也对子图中的初始化器进行去重。
- 参数:
size_limit (int)
- class onnx_ir.passes.common.IdentityEliminationPass[source]¶
基类:
InPlacePass消除冗余 Identity 节点的 Pass。
此 Pass 根据以下规则删除 Identity 节点
对于任何形式为 y = Identity(x) 的节点,其中 y 不是任何图的输出,将所有 y 的使用替换为 x 的使用,并删除该节点。
如果 y 是图的输出,并且 x 不是任何图的输入,我们仍然可以进行消除,但值 x 应该重命名为 y。
如果 y 是图输出而 x 是图输入,我们不能消除该节点。它应该保留。
- class onnx_ir.passes.common.InlinePass[source]¶
基类:
InPlacePass将模型局部函数内联到主图并清除函数定义。
- class onnx_ir.passes.common.LiftConstantsToInitializersPass(lift_all_constants=False, size_limit=16)[source]¶
基类:
InPlacePass将常量提升为初始化器。
- lift_all_constants¶
是否提升所有 Constant 节点,包括那些不包含张量属性(例如带有 value_ints 等)的节点。默认为 False,此时只提升带有
value属性的 Constant 节点。
- size_limit¶
要提升的张量的最小大小。如果张量包含的元素数量小于 size_limit,则不会被提升。默认为 16。
- class onnx_ir.passes.common.LiftSubgraphInitializersToMainGraphPass[source]¶
基类:
InPlacePass将子图初始化器提升到主图。
此 Pass 将子图的初始化器提升到主图。它用于确保初始化器在主图中可用,以便进行进一步处理或优化。
同时也是图输入的初始化器将不会被提升。
- class onnx_ir.passes.common.NameFixPass(name_generator=None)[source]¶
基类:
InPlacePass修复名称以确保所有值和节点都具有唯一名称的 Pass。
此 Pass 确保: 1. 图输入和输出具有唯一名称(优先) 2. 所有中间值具有唯一名称(为未命名值分配名称) 3. 子图中的所有值在其图和父图中具有唯一名称 4. 图中的所有节点具有唯一名称
此 Pass 维护整个模型的全局唯一性。
您可以通过传递
NameGenerator的子类来自定义节点和值的名称生成函数。例如,您可以使用这样的自定义命名方案
class CustomNameGenerator: def custom_node_name(node: ir.Node) -> str: return f"custom_node_{node.op_type}" def custom_value_name(value: ir.Value) -> str: return f"custom_value_{value.type}" name_fix_pass = NameFixPass(name_generator=CustomNameGenerator())
在 0.1.6 版本中添加。
- 参数:
name_generator (NameGenerator | None)
- class onnx_ir.passes.common.RemoveInitializersFromInputsPass[source]¶
基类:
InPlacePass从输入中移除初始化器。
此 Pass 会查找所有具有 const_value 的图输入,并将其从 graph.inputs 列表中移除。
- class onnx_ir.passes.common.RemoveUnusedFunctionsPass[source]¶
基类:
InPlacePass
- class onnx_ir.passes.common.RemoveUnusedNodesPass[source]¶
基类:
InPlacePass用于删除未使用的节点和初始化器(死代码消除)的 Pass。
此 Pass 不修改模型签名(输入和输出)。它确保在保留模型原始契约的同时删除未使用的节点和初始化器。
- class onnx_ir.passes.common.RemoveUnusedOpsetsPass(process_functions=True)[source]¶
基类:
InPlacePass从模型和函数中删除未使用的 opset 导入。
- 参数:
process_functions (bool)
- process_functions¶
是否处理模型中的函数。如果为 True,则 Pass 也会从函数中删除未使用的 opset 导入。如果为 False,则只处理主图。
- class onnx_ir.passes.common.ShapeInferencePass(check_type=True, strict_mode=True, data_prop=True)[source]¶
基类:
InPlacePass此 Pass 对图执行形状推断。
- class onnx_ir.passes.common.TopologicalSortPass[source]¶
基类:
InPlacePass对模型中的图和函数进行拓扑排序。
排序是稳定的,它保留了不相互依赖的节点的相对顺序。更多信息请参阅
onnx_ir.Graph.sort()。