-
Notifications
You must be signed in to change notification settings - Fork 3.8k
[Relax][Torch] Avoid decomposition crash with sparse CSR buffers #18670
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
base: main
Are you sure you want to change the base?
[Relax][Torch] Avoid decomposition crash with sparse CSR buffers #18670
Conversation
Summary of ChangesHello @LudovicoYIN, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses a critical issue where the Relax Torch frontend would crash when attempting to import PyTorch Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request effectively resolves a crash in the Relax Torch frontend when handling models with sparse CSR tensors. The approach of skipping the decomposition pass for such models is a pragmatic solution. The addition of a no-op for to_sparse and a dedicated regression test are also well-executed. My only suggestion is a minor refactoring to improve code conciseness.
fc30d61 to
ef3e4a3
Compare
|
|
||
| def test_from_exported_program_sparse_csr_buffer(): | ||
| if not hasattr(torch, "sparse_csr"): | ||
| pytest.skip("sparse CSR tensor is not supported in this PyTorch build") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what happens if we don't skip the test?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My intent was to run this test only on PyTorch builds that actually support torch.sparse_csr, to avoid false failures on builds without CSR support. In my local environment the test still passes even if I remove the skip, but I added it for portability. Do you prefer keeping the skip for compatibility, or should I remove it?
|
@yongwww Thanks for the earlier feedback! |
Motivation
The Relax Torch frontend crashes when importing an exported program that includes
a torch.sparse_csr_tensor registered as a buffer. The crash happens during
from_exported_program because run_decompositions() triggers a PyTorch
layout_impl error for sparse tensors.
This PR avoids the crash while keeping the import pipeline functional for such
models, even though Relax does not yet support sparse tensors.
Changes
Testing
Fixes: [Bug] Relax Torch frontend crash with sparse CSR buffer in ExportedProgramhttps://github.com/apache/tvm/issues/18648