onnx_diagnostic.helpers.graph_helper¶
- class onnx_diagnostic.helpers.graph_helper.GraphRendering(proto: FunctionProto | GraphProto | ModelProto)[source][source]¶
- Helpers to renders a graph. - Parameters:
- proto – model or graph to render. 
 - classmethod build_node_edges(nodes: Sequence[NodeProto]) Set[Tuple[int, int]][source][source]¶
- Builds the list of edges between nodes. 
 - classmethod computation_order(nodes: Sequence[NodeProto], existing: List[str] | None = None, start: int = 1) List[int][source][source]¶
- Returns the soonest a node can be computed, every node can assume all nodes with a lower number exists. Every node with a higher number must wait for the previous one. - Parameters:
- nodes – list of nodes 
- existing – existing before any computation starts 
- start – lower number 
 
- Returns:
- computation order 
 
 - classmethod graph_positions(nodes: Sequence[NodeProto], order: List[int], existing: List[str] | None = None) List[Tuple[int, int]][source][source]¶
- Returns positions on a plan for every node in a graph. The function minimizes the number of lines crossing each others. It goes forward, every line is optimized depending on what is below. It could be improved with more iterations. - Parameters:
- nodes – list of nodes 
- existing – existing names 
- order – computation order returned by - onnx_diagnostic.helpers.graph_helper.GraphRendering.computation_order()
 
- Returns:
- list of tuple( row, column) 
 
 - text_edge(grid: List[List[str]], p1: Tuple[int, int], p2: Tuple[int, int], mode: str = 'square')[source][source]¶
- Prints inplace an edge in a grid. The text is centered. - Parameters:
- grid – grid 
- p1 – first position 
- p2 – second position 
- mode – - 'square'is the only supported value
 
 
 - classmethod text_grid(grid: List[List[str]], position: Tuple[int, int], text: str)[source][source]¶
- Prints inplace a text in a grid. The text is centered. - Parameters:
- grid – grid 
- position – position 
- text – text to print 
 
 
 - classmethod text_positions(nodes: Sequence[NodeProto], positions: List[Tuple[int, int]]) List[Tuple[int, int]][source][source]¶
- Returns positions for the nodes assuming it is rendered into text. - Parameters:
- nodes – list of nodes 
- positions – positions returned by - onnx_diagnostic.helpers.graph_helper.GraphRendering.graph_positions()
 
- Returns:
- text positions 
 
 - text_rendering(prefix='') str[source][source]¶
- Renders a model in text. - <<< - import textwrap import onnx import onnx.helper as oh from onnx_diagnostic.helpers.graph_helper import GraphRendering TFLOAT = onnx.TensorProto.FLOAT proto = oh.make_model( oh.make_graph( [ oh.make_node("Add", ["X", "Y"], ["xy"]), oh.make_node("Neg", ["Y"], ["ny"]), oh.make_node("Mul", ["xy", "ny"], ["a"]), oh.make_node("Mul", ["a", "Y"], ["Z"]), ], "-nd-", [ oh.make_tensor_value_info("X", TFLOAT, ["a", "b", "c"]), oh.make_tensor_value_info("Y", TFLOAT, ["a", "b", "c"]), ], [oh.make_tensor_value_info("Z", TFLOAT, ["a", "b", "c"])], ), opset_imports=[oh.make_opsetid("", 18)], ir_version=9, ) graph = GraphRendering(proto) text = textwrap.dedent(graph.text_rendering()).strip("\n") print(text) - >>> - X Y | | └------┬-------┴---┬---┐ | | | Add | Neg | | | └-------┬---┼---┘ | | Mul | | | └---┴---┐ | Mul | └------┐ | Z