[devtools] Auto-record after-transform graph in ETRecord#17434
[devtools] Auto-record after-transform graph in ETRecord#17434Gasoonjia merged 6 commits intogh/gasoonjia/120/basefrom
Conversation
When `to_edge_transform_and_lower` is called with `generate_etrecord=True` and custom `transform_passes` are applied, the after-transform graph is now automatically recorded in the ETRecord's `graph_map` under the key `"edge_after_transform"`. This enables backends like Qualcomm to use the post-custom-transform graph as the golden reference for numeric gap calculation, while have zero impact for regular exportation. This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381). Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud Differential Revision: [D93176563](https://our.internmc.facebook.com/intern/diff/D93176563/) [ghstack-poisoned]
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/17434
Note: Links to docs will display an error until the docs builds have been completed. ❌ 1 New FailureAs of commit 81b8520 with merge base 63f9724 ( NEW FAILURE - The following job has failed:
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
When `to_edge_transform_and_lower` is called with `generate_etrecord=True` and custom `transform_passes` are applied, the after-transform graph is now automatically recorded in the ETRecord's `graph_map` under the key `"edge_after_transform"`. This enables backends like Qualcomm to use the post-custom-transform graph as the golden reference for numeric gap calculation, while have zero impact for regular exportation. This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381). Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud Differential Revision: [D93176563](https://our.internmc.facebook.com/intern/diff/D93176563/) ghstack-source-id: 340959332 Pull Request resolved: #17434
This PR needs a
|
When `to_edge_transform_and_lower` is called with `generate_etrecord=True` and custom `transform_passes` are applied, the after-transform graph is now automatically recorded in the ETRecord's `graph_map` under the key `"edge_after_transform"`. This enables backends like Qualcomm to use the post-custom-transform graph as the golden reference for numeric gap calculation, while have zero impact for regular exportation. This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381). Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud Differential Revision: [D93176563](https://our.internmc.facebook.com/intern/diff/D93176563/) [ghstack-poisoned]
When `to_edge_transform_and_lower` is called with `generate_etrecord=True` and custom `transform_passes` are applied, the after-transform graph is now automatically recorded in the ETRecord's `graph_map` under the key `"edge_after_transform"`. This enables backends like Qualcomm to use the post-custom-transform graph as the golden reference for numeric gap calculation, while have zero impact for regular exportation. This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381). Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud Differential Revision: [D93176563](https://our.internmc.facebook.com/intern/diff/D93176563/) [ghstack-poisoned]
winskuo-quic
left a comment
There was a problem hiding this comment.
LGTM.
Thanks for having this PR. This allows us to retrieve valuable information for graphs with edge passes while not break the BC.
| # Verify that 'edge_after_transform' is NOT in graph_map | ||
| if etrecord.graph_map is not None: | ||
| self.assertNotIn( | ||
| "edge_after_transform/forward", |
There was a problem hiding this comment.
Just curious.
I am studying the logic of the graph_map naming:
executorch/devtools/etrecord/_etrecord.py
Line 651 in 43ee3f9
This hardcoded
forward is appened because an edge_after_transform could possibly consist of multimethods?
There was a problem hiding this comment.
yes your are right. That's placeholder for multimethods supported.
Now we only support single forward name but in the future we will support multiple methods in the same program.
When `to_edge_transform_and_lower` is called with `generate_etrecord=True` and custom `transform_passes` are applied, the after-transform graph is now automatically recorded in the ETRecord's `graph_map` under the key `"edge_after_transform"`. This enables backends like Qualcomm to use the post-custom-transform graph as the golden reference for numeric gap calculation, while have zero impact for regular exportation. This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381). Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud Differential Revision: [D93176563](https://our.internmc.facebook.com/intern/diff/D93176563/) [ghstack-poisoned]
larryliu0820
left a comment
There was a problem hiding this comment.
Review automatically exported from Phabricator review in Meta.
When `to_edge_transform_and_lower` is called with `generate_etrecord=True` and custom `transform_passes` are applied, the after-transform graph is now automatically recorded in the ETRecord's `graph_map` under the key `"edge_after_transform"`. This enables backends like Qualcomm to use the post-custom-transform graph as the golden reference for numeric gap calculation, while have zero impact for regular exportation. This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381). Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud Differential Revision: [D93176563](https://our.internmc.facebook.com/intern/diff/D93176563/) [ghstack-poisoned]
When `to_edge_transform_and_lower` is called with `generate_etrecord=True` and custom `transform_passes` are applied, the after-transform graph is now automatically recorded in the ETRecord's `graph_map` under the key `"edge_after_transform"`. This enables backends like Qualcomm to use the post-custom-transform graph as the golden reference for numeric gap calculation, while have zero impact for regular exportation. This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381). Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud Differential Revision: [D93176563](https://our.internmc.facebook.com/intern/diff/D93176563/) [ghstack-poisoned]
Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom): * #17459 * #17434 * __->__ #17433 This change extends NumericalComparatorBase to support custom preprocessing before numeric gap calculation, enabling backends like Qualcomm to apply necessary tensor transformations (e.g., dequantization, layout conversion) before comparison. Key changes: - Extended NumericalComparatorBase with: - `__init__(inspector)` to store optional Inspector reference for accessing graph metadata - `preprocessing(mapping)` method that can be overridden for custom tensor transformations (default: identity) - `element_compare(a, b)` abstract method for element-level tensor comparison - `compare(mapping, ...)` method that orchestrates the full pipeline: preprocessing → element-wise compare → aggregate to DataFrame This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381). Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud Differential Revision: [D93169813](https://our.internmc.facebook.com/intern/diff/D93169813/)
…7459) Stack from [ghstack](https://github.com/ezyang/ghstack) (oldest at bottom): * __->__ #17459 * #17434 * #17433 This change adds a `reference_graph` parameter to the `calculate_numeric_gap` API, allowing users to explicitly select which graph to use as the golden reference for numeric gap calculation, which enables backends like Qualcomm to use the post-custom-transform graph as the golden reference for numeric gap calculation. This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381). Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud Differential Revision: [D93266779](https://our.internmc.facebook.com/intern/diff/D93266779/)
This PR was created by the merge bot to help merge the original PR into the main branch. ghstack PR number: #17434 by @Gasoonjia ^ Please use this as the source of truth for the PR details, comments, and reviews ghstack PR base: https://github.com/pytorch/executorch/tree/gh/gasoonjia/120/base ghstack PR head: https://github.com/pytorch/executorch/tree/gh/gasoonjia/120/head Merge bot PR base: https://github.com/pytorch/executorch/tree/gh/gasoonjia/119/orig Merge bot PR head: https://github.com/pytorch/executorch/tree/gh/gasoonjia/120/orig Differential Revision: [D93176563](https://our.internmc.facebook.com/intern/diff/D93176563/) @diff-train-skip-merge --------- Co-authored-by: gasoonjia <gasoonjia@icloud.com>
Stack from ghstack (oldest at bottom):
When
to_edge_transform_and_loweris called withgenerate_etrecord=Trueand customtransform_passesare applied, the after-transform graph is now automatically recorded in the ETRecord'sgraph_mapunder the key"edge_after_transform". This enables backends like Qualcomm to use the post-custom-transform graph as the golden reference for numeric gap calculation, while have zero impact for regular exportation.This is part of the operator-level numeric discrepancy detector project for ExecuTorch Qualcomm backend (#16381).
Design doc: https://docs.google.com/document/d/1GaCHiy9InytOsUrl2BKEgOiP1iKTfpCVdWg6QDh0N2E/edit?tab=t.0#heading=h.fcrpnrtb6cud
Differential Revision: D93176563