[Relax][ONNX][Transform] Add mode choice, new mode, and warning for take() #18061
+147
−20
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
I was trying to resolve #18004, where an ONNX model causes a segmentation fault in TVM but not in onnxruntime.
Why the seg fault occurs
This occurs because
take()(used inCompress)defaults tofastmode, which deliberately segfaults on out-of-bounds indices. (I guess for the sake of fast speed)Solution
onnxruntime's
Compressignores out-of-bounds indices, so I initially considered matching that behavior in TVM. However, the ONNX specification doesn’t actually mandate how to handle out-of-bounds indicesQuestion for maintainers
Would you prefer modifying
Compressto slice out invalid indices in order to mirror onnxruntime? although I guess this is unnecessary.Instead of resolving this seg-fault, for now, this PR focuses just on enhancing
take().Updates
modeparameter totake()in RelaxNaNmode totake()take()modesfastmode along an axisfastfor consistency with Relax