Repository navigation
2.1.4
2.1.4
Summary
Currently, flatbuffer_direct has better conversion stability than tf_converter mode.
This PR is a broad flatbuffer_direct upgrade focused on three goals:
- expand built-in lowering coverage,
- improve dynamic-shape correctness,
- harden optimization/runtime stability on large real-world models.
Functional Improvements
1. Built-in op coverage expansion
-
Einsum
- Added a specialized built-in lowering path for
bchw,bnc->bnhw. - Added a generic 2-input Einsum decomposition path (for non-repeated-label equations) via built-in ops (
SUM,TRANSPOSE,RESHAPE,BATCH_MATMUL,CAST). - Extended validation so unsupported equations fail early with clearer diagnostics.
- Added a specialized built-in lowering path for
-
MatMul
- Added low-rank built-in handling for vector-lhs, vector-dot, and scalar-multiply forms.
- Improved behavior when metadata incorrectly collapses dynamic tensors to scalar-like shapes.
-
Pooling
- Added AveragePool rank-3 (1D) built-in lowering (
EXPAND_DIMS -> AVERAGE_POOL_2D -> SQUEEZE). - Added rank-5 (3D) MaxPool/AveragePool lowering through staged reshape/transpose decomposition.
- Added AveragePool rank-3 (1D) built-in lowering (
-
ConvTranspose
- Added grouped 2D ConvTranspose lowering using split-per-group + per-group transpose-conv + concat.
- Added safer dilation and channel consistency handling.
-
TopK
- When
kis scalar-constant, it is now constantized directly to INT32 forTOPK_V2. - Eliminates unnecessary constant-case runtime prep chains such as
CAST -> SQUEEZE.
- When
2. Dynamic-shape correctness improvements
-
Reduce axis robustness
- Improved rank resolution from signatures/metadata in dynamic paths.
- Preserves raw negative axes (e.g.
-1) when rank metadata is unreliable, preventing incorrect axis remapping.
-
Reshape allowzero semantics
- Added runtime rewrite for dynamic shape tensors so ONNX
allowzero=0dim-copy semantics are preserved in TFLite lowering.
- Added runtime rewrite for dynamic shape tensors so ONNX
-
Reshape-chain safety
- Prevented unsafe bypass of reshapes when shape vectors depend on input dimensions (
0/-1behavior).
- Prevented unsafe bypass of reshapes when shape vectors depend on input dimensions (
3. Optimization and runtime stability hardening
- Added conservative guards and rollback logic in aggressive transpose/fanout rewrites to avoid introducing unbound runtime tensors.
- Extended unbound-input repair to include
SHAPEconsumers (not only reshape-related patterns). - Improved channelwise constant layout repair to support rank-3 constants and apply rotation only when broadcast semantics stay correct.
4. Memmap/path safety improvements
- Added deterministic sanitize+truncate+hash filename generation to prevent path-component overflow (
File name too long) in:- accuracy evaluator memmap outputs,
- ORT output memmap files,
- flatbuffer_direct op-error report input dumps.
5. Automatic scalar-Gather index normalization (without -rtpo)
- Added automatic normalization for
Gatherindices when the positions tensor is scalar-like:- constant scalar indices,
- runtime scalar indices (metadata-normalized scalar signatures).
- The lowering now ensures indices are handled as 1D shape
[1]for runtime compatibility, while preserving ONNX output-rank semantics by inserting a final shape restore where needed.
6. Version/docs alignment
- Bumped package version to 2.1.4.
- Updated README Docker image tags to 2.1.4.
Validation
-
Full flatbuffer_direct direct-lowering test suite:
pytest -q tests/test_tflite_builder_direct.py- Result:
492 passed, 1 warning.
-
Added/updated targeted regression tests, including:
- AveragePool1D dynamic built-in lowering,
- new Einsum built-in paths,
- TopK constant-
kconstantization, - unbound
SHAPEinput repair, - channelwise broadcast-constant layout repair.
Expected Impact
- Fewer CUSTOM fallbacks for common patterns.
- Better numerical/shape consistency in dynamic models.
- Improved robustness against optimizer-induced invalid graph states.
- More stable large-model evaluation flows with safer memmap file handling.
What's Changed
- flatbuffer_direct: expand built-in lowering and harden dynamic-shape/runtime stability by @PINTO0309 in #895
Full Changelog: 2.1.3...2.1.4