Skip to content

[Relax][VM] Improve diagnostics for unlowered Relax operators - #19899

Draft
yinli-systems wants to merge 3 commits into
apache:mainfrom
yinli-systems:kevin/fail-loud-conv-transpose-legalize
Draft

[Relax][VM] Improve diagnostics for unlowered Relax operators#19899
yinli-systems wants to merge 3 commits into
apache:mainfrom
yinli-systems:kevin/fail-loud-conv-transpose-legalize

Conversation

@yinli-systems

@yinli-systems yinli-systems commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

What changed

This improves the diagnostics emitted when VM codegen sees a normal Relax operator that was not lowered before codegen.

  • Include actionable guidance in both bytecode (CodeGenVM) and compiled (CodeGenVMTIR) paths.
  • Print the full offending Relax call, including attributes, instead of only the operator name.
  • Add VM build coverage using an unsupported relax.nn.conv2d_transpose layout so the diagnostic exposes the layout attributes.

Why

Issue #19694 reports that unsupported conv{1,2,3}d_transpose attributes can pass through legalization and later fail with an opaque VM codegen error that only names the operator. Recent upstream work added dilation support, while layout/out-layout passthrough remains useful for external codegen flows. This keeps legalization behavior unchanged but makes an eventual VM failure actionable by showing the exact unlowered call and how to address it.

Helps #19694.

Validation

  • Merged current main (87 upstream commits at validation time) without changing the three-file PR scope.
  • Configured and built TVM from source on Apple Silicon with CMake 4.3.3 (USE_LLVM=OFF): tvm_runtime and tvm_compiler completed successfully.
  • Built and installed the pinned tvm-ffi submodule as a non-editable wheel, per repository guidance.
  • pytest tests/python/relax/test_vm_build.py -k test_vm_compile_unlowered_operator_error -vv: 2 passed (bytecode and compiled). The diagnostic is raised before low-level LLVM code generation, so the test is valid in this build configuration.
  • Full pre-commit suite on all three changed files: ASF header, file checks, Ruff, Ruff format, and clang-format passed.
  • Python byte compilation and git diff upstream/main --check passed.

The previous branch CI was also green on Windows, macOS, and lint before the latest-main merge.

AI assistance

AI tooling assisted with validation and branch maintenance. I reviewed the final diagnostic and test behavior and ran the source build, targeted tests, and pre-commit checks listed above.

@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 error messages in CodeGenVM and CodeGenVMTIR when encountering an unlowered Relax operator, providing clearer guidance on how to resolve the issue and printing the offending call. A unit test has also been added to verify this error behavior. There are no review comments, so I have no feedback to provide.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

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.

1 participant