-
Notifications
You must be signed in to change notification settings - Fork 636
[ez][release blocker fix] Insert linalg_vector_norm
into decomp table used for Edge export
#9999
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…le used for Edge export (#9938) Summary: ## Context Addresses this [release blocker](https://github.com/orgs/pytorch/projects/99/views/1?pane=issue&itemId=104088363&issue=pytorch%7Cpytorch%7C150207) issue. Some models cannot export because they use `linalg_vector_norm` which is not currently an ATen operator. I initially tried adding the op to the core decomp table, but the decomp is not passing pytorch correctness tests. Please see pytorch/pytorch#150241 for more details. ## Changes Since we currently cannot include the op in PyTorch's decomp table, instead we can insert the op into the edge decomp table directly. This PR is a simple change to add `linalg_vector_norm` directly to the edge decomp table. Test Plan: Tested exporting and running a model with the `linalg_vector_norm` op via the following script. ``` import torch from executorch.exir import to_edge_transform_and_lower, EdgeCompileConfig from torch.export import Dim, export from executorch.extension.pybindings.portable_lib import ( # @Manual _load_for_executorch_from_buffer, ) class Model(torch.nn.Module): def __init__(self): super().__init__() def forward(self, x): return torch.linalg.vector_norm(x, 2) model = Model() inputs = (torch.randn(1,1,16,16),) dynamic_shapes = { "x": { 2: Dim("h", min=16, max=1024), 3: Dim("w", min=16, max=1024), } } exported_program = export(model, inputs, dynamic_shapes=dynamic_shapes) executorch_program = to_edge_transform_and_lower( exported_program, compile_config=EdgeCompileConfig(_check_ir_validity=False), ).to_executorch() executorch_module = _load_for_executorch_from_buffer( executorch_program.buffer ) model_output = executorch_module.run_method( "forward", tuple(inputs) ) print(model_output) ``` (cherry picked from commit c2e3e17)
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/9999
Note: Links to docs will display an error until the docs builds have been completed. ❌ 3 New FailuresAs of commit 151d6da with merge base 771588a ( NEW FAILURES - The following jobs have failed:
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
@SS-JIA can you have a look at the failing test? |
Failure is legit. Will have to revert original PR and reland. |
@metascroy I ended up adding expected failures the failing tests on Lmk how you want to proceed. We can land the two cherry picks separately, or I can manually create a cherry pick with both changes. |
To clarify, this change only causes one of the failures: The other two seems to be transient (failed correctness tests that exceed error tolerance) and are most ilkely not related to my change: |
Summary:
Context
Addresses this release blocker issue. Some models cannot export because they use
linalg_vector_norm
which is not currently an ATen operator.I initially tried adding the op to the core decomp table, but the decomp is not passing pytorch correctness tests. Please see pytorch/pytorch#150241 for more details.
Changes
Since we currently cannot include the op in PyTorch's decomp table, instead we can insert the op into the edge decomp table directly.
This PR is a simple change to add
linalg_vector_norm
directly to the edge decomp table.Test Plan:
Tested exporting and running a model with the
linalg_vector_norm
op via the following script.