Skip to content

Concrete shape axes join to wider markers across solver iterations #748

Description

@khatchad

During the solver's fixpoint, a shape member's concrete axes can degrade across iterations even though the first evaluation computed them exactly: the vendored gpt-2 forward run resolves embedded_x + pos_embedding(...) with fully concrete (2, 3, 8)-family operands on the first evaluation, and later evaluations of the same nodes carry (Dynamic, Unresolved, ...) in the same positions, because a re-run transfer folds a tf.shape element against an operand union that has since grown, and the per-axis join replaces the constant with the wider marker instead of keeping both members. The end-to-end output still recovers concretely where a downstream fold re-derives the sizes, but every intermediate link's pinned member is the joined form.

The precise fix keeps member-level granularity through recomputation: a transfer that previously contributed a concrete member should union it with the wider recomputation rather than replace it, or the per-axis fold should produce one member per source possibility instead of joining axes in place. Witnesses: the (2, 3, 8) first-evaluation members in the decoder chain's EWO record broadcast logs against the (Dynamic, Dynamic, 8) final states of the same values.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions