Skip to content

[Relax][PyTorch] Add support for decomposed operators and fix IR of ops tests(6)#18420

Merged
mshr-h merged 2 commits into
apache:mainfrom
tlopex:dcf9
Nov 6, 2025
Merged

[Relax][PyTorch] Add support for decomposed operators and fix IR of ops tests(6)#18420
mshr-h merged 2 commits into
apache:mainfrom
tlopex:dcf9

Conversation

@tlopex

@tlopex tlopex commented Nov 5, 2025

Copy link
Copy Markdown
Member

This pr fixes ops like roll, select_slice, and squeeze.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @tlopex, 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 introduces support for decomposed operators within the PyTorch frontend for TVM Relax, specifically addressing and correcting the Intermediate Representation (IR) generated for several key operations. The changes ensure that roll, select_slice, and squeeze operators are accurately translated when PyTorch's decomposition mechanism is active, leading to more precise and robust model compilation.

Highlights

  • Squeeze Operator Fix: Improved the _squeeze operator's handling of dims in the PyTorch frontend to correctly filter axes with dimension 1, aligning with PyTorch's decomposition behavior.
  • Slice Operator Robustness: Enhanced the _slice operator to correctly parse and apply dim, start, end, and step arguments, ensuring accurate translation of PyTorch's select_slice operations into relax.op.strided_slice.
  • Decomposed Roll IR: Updated the expected Intermediate Representation (IR) for roll operations in tests to reflect a more decomposed form, utilizing arange, add, mod, and take primitives instead of strided_slice and concat.
  • Decomposed Split/Unbind IR: Modified the expected IR for split and unbind operations in tests to use more granular strided_slice and squeeze operations, or explicit index lists for split, aligning with decomposed operator patterns.
  • Test Suite Enhancement: Enabled PyTorch operator decomposition (run_ep_decomposition=True) across various frontend tests, including reshape, roll, slice, slice_scatter, chunk, unbind, and squeeze, to validate the new decomposed operator support.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

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 improves the PyTorch frontend by adding support for decomposed operators and fixing the IR for several ops tests. The changes in _squeeze and _slice handlers make the translation more robust, especially when run_ep_decomposition is enabled. The test suite is updated accordingly, ensuring the correctness of the new decomposed IR for operators like roll, slice, and squeeze. Overall, this is a solid improvement. I have one minor suggestion to improve code style.

return self.block_builder.emit(relax.op.take(x, index, dim))

def _slice(self, node: fx.Node) -> relax.Var:
import sys

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For style consistency and to avoid potential repeated import overhead, import statements should be at the top of the file. Please move import sys to the module's top-level imports.

@tlopex

tlopex commented Nov 5, 2025

Copy link
Copy Markdown
Member Author

@tvm-bot rerun

@tlopex

tlopex commented Nov 5, 2025

Copy link
Copy Markdown
Member Author

cc @mshr-h

@mshr-h mshr-h merged commit ae83984 into apache:main Nov 6, 2025
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants