Skip to content

2.1.4

Choose a tag to compare

@PINTO0309 PINTO0309 released this 04 Mar 14:37
· 2077 commits to main since this release
bddeec0

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.
  • 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.
  • ConvTranspose

    • Added grouped 2D ConvTranspose lowering using split-per-group + per-group transpose-conv + concat.
    • Added safer dilation and channel consistency handling.
  • TopK

    • When k is scalar-constant, it is now constantized directly to INT32 for TOPK_V2.
    • Eliminates unnecessary constant-case runtime prep chains such as CAST -> SQUEEZE.

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=0 dim-copy semantics are preserved in TFLite lowering.
  • Reshape-chain safety

    • Prevented unsafe bypass of reshapes when shape vectors depend on input dimensions (0/-1 behavior).

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 SHAPE consumers (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 Gather indices 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-k constantization,
    • unbound SHAPE input 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