swjng opened a new pull request, #19498:
URL: https://github.com/apache/tvm/pull/19498

   ## Description
   
   When `from_onnx(model, keep_params_in_input=True)` is used, every ONNX 
initializer becomes a `relax.Var` instead of a `relax.Constant`. The `Concat` 
handler's `is_shape_like()` check only recognizes `relax.ShapeExpr` and 
1D-int64 `relax.Constant`, so a 1D-int64 shape value loaded as a Var is no 
longer recognized.
   
   When such a Var is concatenated with a `ShapeExpr` — the standard pattern 
for dynamic-batch `Reshape` in PyTorch-exported ONNX models — the heterogeneous 
`Tuple(ShapeExpr, Tensor)` is rejected by `relax.op.concat` with:
   
   ```
   InternalError: Op(relax.concat) expects the input to be a Tuple of Tensors.
   However, the given input is R.Tuple(R.Shape([N]), R.Tensor((1,), 
dtype="int64"))
   ```
   
   This effectively breaks `keep_params_in_input=True` for any model with 
dynamic-batch `Reshape` (extremely common in PyTorch ONNX exports).
   
   ## Fix
   
   Run each `Concat` input through the existing `get_constant` helper before 
the `is_shape_like` check. This resolves any `Var` that maps to a known param 
back to its baked `Constant`, restoring the all-shape-like fast path.
   
   ## Minimal repro
   
   An 8-node ONNX graph (`Shape` → `Slice` → `Concat([dyn_n, [12]])` → 
`Reshape`) fails with `keep_params_in_input=True` before this PR and passes 
after. A regression test (`test_concat_with_param_shape_value`) covers this 
pattern.
   
   ## Testing
   
   ```
   pytest tests/python/relax/test_frontend_onnx.py -k concat
   ```
   
   9 passed (1 new + 8 existing).


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to