Commit 613c355
authored
[onnx_importer] Disambiguate empty string: optional none vs tensor name (#4551)
Fixes #4550
The NodeImporter cached torch.constant.none under _nv_map[""], matching
ONNX's convention that an empty string in Node.input denotes an omitted
optional input. Some producers (e.g. Microsoft
SkipSimplifiedLayerNormalization) also bind real intermediate results to
outputs whose names are the empty string. Each such output overwrote
_nv_map[""], so later nodes that use "" for omitted optionals (e.g.
GroupQueryAttention's trailing inputs) incorrectly received those tensor
SSA values instead of torch.constant.none.
Behavior changes:
- Cache the shared none value under _OPTIONAL_NONE_CACHE_KEY instead of
"".
- When resolving node inputs, treat input_name == "" as omitted
optional: append get_none() and an empty onnx.TypeProto without indexing
_nv_map[""].
- Register outputs named "" under unique keys
__torch_mlir_onnx_importer_anon_<n> so multiple anonymous outputs do not
overwrite each other.
Adds test/python/onnx_importer/test_empty_string_optional_inputs.py:
minimal Identity -> custom op graph where optional inputs are "" and
must import as %none operands, not tensor values stored under "".
Symptom fixed: GroupQueryAttention previously showed duplicated operands
such as (%10#2, %10#2, %10#2) instead of (%none, %none, %none) for
optional slots.1 parent c852e84 commit 613c355
2 files changed
Lines changed: 83 additions & 4 deletions
File tree
- python/torch_mlir/extras
- test/python/onnx_importer
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
239 | 239 | | |
240 | 240 | | |
241 | 241 | | |
| 242 | + | |
242 | 243 | | |
243 | 244 | | |
244 | 245 | | |
| |||
259 | 260 | | |
260 | 261 | | |
261 | 262 | | |
| 263 | + | |
262 | 264 | | |
263 | 265 | | |
264 | 266 | | |
| |||
366 | 368 | | |
367 | 369 | | |
368 | 370 | | |
369 | | - | |
370 | | - | |
| 371 | + | |
| 372 | + | |
371 | 373 | | |
372 | 374 | | |
373 | 375 | | |
| |||
376 | 378 | | |
377 | 379 | | |
378 | 380 | | |
379 | | - | |
| 381 | + | |
380 | 382 | | |
381 | 383 | | |
382 | 384 | | |
| |||
396 | 398 | | |
397 | 399 | | |
398 | 400 | | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
399 | 407 | | |
400 | 408 | | |
401 | 409 | | |
| |||
447 | 455 | | |
448 | 456 | | |
449 | 457 | | |
450 | | - | |
| 458 | + | |
| 459 | + | |
451 | 460 | | |
452 | 461 | | |
453 | 462 | | |
| |||
Lines changed: 70 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
0 commit comments