|
1 | 1 | Inspector APIs |
2 | 2 | ============== |
3 | 3 |
|
4 | | -Overview |
5 | | --------- |
6 | | - |
7 | | -The Inspector APIs provide a convenient interface for analyzing the |
8 | | -contents of `ETRecord <etrecord.html>`__ and |
9 | | -`ETDump <etdump.html>`__, helping developers get insights about model |
10 | | -architecture and performance statistics. It’s built on top of the `EventBlock Class <#eventblock-class>`__ data structure, |
11 | | -which organizes a group of `Event <#event-class>`__\ s for easy access to details of profiling events. |
12 | | - |
13 | | -There are multiple ways in which users can interact with the Inspector |
14 | | -APIs: |
15 | | - |
16 | | -* By using `public methods <#inspector-methods>`__ provided by the ``Inspector`` class. |
17 | | -* By accessing the `public attributes <#inspector-attributes>`__ of the ``Inspector``, ``EventBlock``, and ``Event`` classes. |
18 | | -* By using a `CLI <#cli>`__ tool for basic functionalities. |
19 | | - |
20 | | -Please refer to the `e2e use case doc <tutorials/devtools-integration-tutorial.html>`__ get an understanding of how to use these in a real world example. |
21 | | - |
22 | | - |
23 | | -Inspector Methods |
24 | | ------------------ |
25 | | - |
26 | | -Constructor |
27 | | -~~~~~~~~~~~ |
28 | | - |
29 | | -.. autofunction:: executorch.devtools.Inspector.__init__ |
30 | | - |
31 | | -**Example Usage:** |
32 | | - |
33 | | -.. code:: python |
34 | | -
|
35 | | - from executorch.devtools import Inspector |
36 | | -
|
37 | | - inspector = Inspector(etdump_path="/path/to/etdump.etdp", etrecord="/path/to/etrecord.bin") |
38 | | -
|
39 | | -to_dataframe |
40 | | -~~~~~~~~~~~~~~~~ |
41 | | - |
42 | | -.. autofunction:: executorch.devtools.Inspector.to_dataframe |
43 | | - |
44 | | - |
45 | | -print_data_tabular |
46 | | -~~~~~~~~~~~~~~~~~~ |
47 | | - |
48 | | -.. autofunction:: executorch.devtools.Inspector.print_data_tabular |
49 | | - |
50 | | -.. _example-usage-1: |
51 | | - |
52 | | -**Example Usage:** |
53 | | - |
54 | | -.. code:: python |
55 | | -
|
56 | | - inspector.print_data_tabular() |
57 | | -
|
58 | | -.. image:: _static/img/print_data_tabular.png |
59 | | -Note that the unit of delegate profiling events is "cycles". We're working on providing a way to set different units in the future. |
60 | | - |
61 | | - |
62 | | -find_total_for_module |
63 | | -~~~~~~~~~~~~~~~~~~~~~ |
64 | | - |
65 | | -.. autofunction:: executorch.devtools.Inspector.find_total_for_module |
66 | | - |
67 | | -.. _example-usage-2: |
68 | | - |
69 | | -**Example Usage:** |
70 | | - |
71 | | -.. code:: python |
72 | | -
|
73 | | - print(inspector.find_total_for_module("L__self___conv_layer")) |
74 | | -
|
75 | | -:: |
76 | | - |
77 | | - 0.002 |
78 | | - |
79 | | - |
80 | | -get_exported_program |
81 | | -~~~~~~~~~~~~~~~~~~~~ |
82 | | - |
83 | | -.. autofunction:: executorch.devtools.Inspector.get_exported_program |
84 | | - |
85 | | -.. _example-usage-3: |
86 | | - |
87 | | -**Example Usage:** |
88 | | - |
89 | | -.. code:: python |
90 | | -
|
91 | | - print(inspector.get_exported_program()) |
92 | | -
|
93 | | -:: |
94 | | - |
95 | | - ExportedProgram: |
96 | | - class GraphModule(torch.nn.Module): |
97 | | - def forward(self, arg0_1: f32[4, 3, 64, 64]): |
98 | | - # No stacktrace found for following nodes |
99 | | - _param_constant0 = self._param_constant0 |
100 | | - _param_constant1 = self._param_constant1 |
101 | | - |
102 | | - ### ... Omit part of the program for documentation readability ... ### |
103 | | - |
104 | | - Graph signature: ExportGraphSignature(parameters=[], buffers=[], user_inputs=['arg0_1'], user_outputs=['aten_tan_default'], inputs_to_parameters={}, inputs_to_buffers={}, buffers_to_mutate={}, backward_signature=None, assertion_dep_token=None) |
105 | | - Range constraints: {} |
106 | | - Equality constraints: [] |
107 | | - |
108 | | - |
109 | | -Inspector Attributes |
110 | | --------------------- |
111 | | - |
112 | | -``EventBlock`` Class |
113 | | -~~~~~~~~~~~~~~~~~~~~ |
114 | | - |
115 | | -Access ``EventBlock`` instances through the ``event_blocks`` attribute |
116 | | -of an ``Inspector`` instance, for example: |
117 | | - |
118 | | -.. code:: python |
119 | | -
|
120 | | - inspector.event_blocks |
121 | | -
|
122 | | -.. autoclass:: executorch.devtools.inspector.EventBlock |
123 | | - |
124 | | -``Event`` Class |
125 | | -~~~~~~~~~~~~~~~ |
126 | | - |
127 | | -Access ``Event`` instances through the ``events`` attribute of an |
128 | | -``EventBlock`` instance. |
129 | | - |
130 | | -.. autoclass:: executorch.devtools.inspector.Event |
131 | | - |
132 | | -**Example Usage:** |
133 | | - |
134 | | -.. code:: python |
135 | | -
|
136 | | - for event_block in inspector.event_blocks: |
137 | | - for event in event_block.events: |
138 | | - if event.name == "Method::execute": |
139 | | - print(event.perf_data.raw) |
140 | | -
|
141 | | -:: |
142 | | - |
143 | | - [175.748, 78.678, 70.429, 122.006, 97.495, 67.603, 70.2, 90.139, 66.344, 64.575, 134.135, 93.85, 74.593, 83.929, 75.859, 73.909, 66.461, 72.102, 84.142, 77.774, 70.038, 80.246, 59.134, 68.496, 67.496, 100.491, 81.162, 74.53, 70.709, 77.112, 59.775, 79.674, 67.54, 79.52, 66.753, 70.425, 71.703, 81.373, 72.306, 72.404, 94.497, 77.588, 79.835, 68.597, 71.237, 88.528, 71.884, 74.047, 81.513, 76.116] |
144 | | - |
145 | | - |
146 | | -CLI |
147 | | ---- |
148 | | - |
149 | | -Execute the following command in your terminal to display the data |
150 | | -table. This command produces the identical table output as calling the |
151 | | -`print_data_tabular <#print-data-tabular>`__ mentioned earlier: |
152 | | - |
153 | | -.. code:: bash |
154 | | -
|
155 | | - python3 -m devtools.inspector.inspector_cli --etdump_path <path_to_etdump> --etrecord_path <path_to_etrecord> |
156 | | -
|
157 | | -Note that the `etrecord_path` argument is optional. |
158 | | - |
159 | | -We plan to extend the capabilities of the CLI in the future. |
| 4 | +Please update your link to <https://pytorch.org/executorch/main/model-inspector.html>. This URL will be deleted after v0.4.0. |
0 commit comments