Collapse jax build/test double-count and rename axis to jax_version - #84
Collapse jax build/test double-count and rename axis to jax_version#84HereThereBeDragons wants to merge 3 commits into
Conversation
marbre
left a comment
There was a problem hiding this comment.
From my review agent:
Preserve jax_ref as a Git ref — /develop/quartz/scripts/receive_therock/therock_update_status_json.py:382
_normalize_ref() strips rocm-jaxlib-v from every JAX ref, including dispatch inputs. TheRock deliberately distinguishes the checkoutable jax_ref from the bare display-only jax_label (/develop/therock/ build_tools/github_actions/configure_jax_release_matrix.py:122), and Quartz’s schema reference publishes the full ref (/develop/quartz/docs/status-json/status_json_reference.jsonc:263).
This changes the meaning of a public schema-v2 field and can alias distinct valid refs—for example, rocm-jaxlib-vfeature and feature become the same variant key. I recommend canonicalizing the bare job label toward the full ref, or separating display normalization from variant identity, while preserving arbitrary branch/tag/SHA inputs.
|
thanks. that turned out to be more tricky than expected. i renamed now the parameter from "jax_ref" to "jax_version" to clarify this.
as such using the full jax_ref with |
Summary
We fix a double-counting bug in the release status.json where every jax build and test cell is counted twice. One jax version reaches the status pipeline under two spellings: the build matrix names cells by git ref (
rocm-jaxlib-v0.11.0), while the release orchestrator and test dispatch inputs use the bare version (0.11.0). Left un-normalized, the two spellings key two distinct variants that never merge, doubling the jax counts.We normalize every jax ref to the bare version at the two points a ref enters a variant key, so the two spellings collapse to a single
(py, jax_version)cell. On the affected release this reduces the jax variant count from 30 to 15.We also rename the jax variant axis
jax_ref->jax_version. After normalization the axis holds a bare version, not a git ref, so the old name was inaccurate. The new name matches TheRock's own explicitjax_versioninput, which is now passed alongsidejax_ref.Why not keep the full ref
The full
rocm-jaxlib-v...spelling exists only on the build side. A test job's name carries only the bare-version ancestor, and the per-cell test inputs are not recoverable because all cells nest under one release run_id (notify inputs collapse to a single cell). Verified on run 32806240964: 14/14 build job names carry the full ref, 0/14 test job names do. Bare is therefore the only spelling common to both sides, so stripping is the only reconciliation that reads real data rather than synthesizing a prefix onto refs the test side never reports.Change
_normalize_ref(axis_key, ref), called uniformly for every fan-out axis. Today only jax needs it: a jax value has therocm-jaxlib-vprefix stripped; the torch axis is a pure passthrough._variants_from_jobs(job-name parsing) and_variants_from_inputs(dispatch-input parsing).jax_versionin_VARIANT_AXIS_KEY,_VARIANT_INPUT_KEYS, and_normalize_ref's dispatch.jax_versioninput overjax_refwhen both are present;jax_refis still read and stripped when it is the only input.docs/status-json/status_json_reference.jsoncexamples tojax_version(bare).We strip the prefix rather than add it because stripping is idempotent on already-bare refs and never mangles a non-version ref such as a branch name.
Tests
jax_refwhen it is the only input.jax_versioninput overjax_refwhen both are supplied.