The GitHub Actions job "Lint" on tvm.git/fix/relax-torch-split-int-split-size 
has succeeded.
Run started by GitHub user siyiweigeHEW (triggered by siyiweigeHEW).

Head commit for run:
c8b84460e7e6715f876d9761fdecc7ddb1363b28 / HuEnwei <[email protected]>
[Relax][Frontend][PyTorch] Fix x.split(int) with a non-divisible split_size

torch.split(x, s, dim) splits dim into chunks of size s, with the last
chunk smaller when D % s != 0. The frontend `_split` converter
(base_fx_graph_translator.py) converted the per-chunk size into a
section count n_section = ceil(D / s) and passed it to relax.op.split's
integer argument, whose semantics are "split into n_section equal
sections" (each of size ceil(D / n_section)). Whenever
ceil(D / ceil(D / s)) != s -- e.g. split_size > D/2 with a non-divisible
D -- valid PyTorch models silently produced differently-shaped chunks
(e.g. x.split(6) on a (10,) tensor yielded (5,), (5,) instead of
(6,), (4,)).

Convert the int per-chunk size to the cumulative cut positions
[s, 2s, ..., (ceil(D/s) - 1)*s] instead, the same list form the
list/tuple branch already passes to relax.op.split.

Differential testing vs native PyTorch (fixed `_split` injected
verbatim): the 10 previously-diverging cases (non-divisible
split_size > D/2 across dim=0, dim=1 and negative dims) all now match
torch shapes and values; the divisible-size baseline and the list/tuple
(split_with_sizes) control group remain unchanged. Added regression
test test_split_int_split_size covering the structural IR
(R.split(input, indices_or_sections=[6], axis=0) for x.split(6) on a
(10,) input) and numerical equivalence for non-divisible sizes/dims.

Co-Authored-By: Claude <[email protected]>

Report URL: https://github.com/apache/tvm/actions/runs/33320151192

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to