Add declarative benchmark matrices and shared workflows#8757
Add declarative benchmark matrices and shared workflows#8757connortsui20 wants to merge 3 commits into
Conversation
|
Do we not use yml for the ci ones? Is this hook into there? |
5d4d6ee to
521a932
Compare
|
@joseph-isaacs Yes — it's now hooked into the workflow YAML, not just a standalone module. The benchmark workflows resolve their matrix from a
Net −549 lines across the workflows. Generated by Claude Code |
2b980ae to
51cd9f1
Compare
ffc2b35 to
2be6840
Compare
Merging this PR will not alter performance
|
2be6840 to
f3331ad
Compare
Define SQL benchmarks once, then resolve named profiles into the GitHub Actions matrix shape. Add the vx-bench matrix command, documentation, and focused regression coverage for selection, targets, storage fields, and preserved develop/nightly behavior. This establishes the source of truth independently of the workflow migration and addresses #4935. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Replace the duplicated full/base YAML matrices with a plan job that resolves the requested bench-orchestrator profile. Wire develop, PR, full-PR, and nightly callers to explicit profiles, derive remote paths from matrix metadata, and preserve the previous nightly iteration count. Build lance-bench whenever a resolved entry contains a Lance target so the full PR profile and its built backends stay consistent. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
f3331ad to
80f1d97
Compare
Declare the two Rust micro-benchmark binaries in a small dedicated resolver and expose them through the existing matrix command. Replace the duplicated develop and PR jobs with one reusable workflow while preserving their mode-specific result handling. Keep this separate from the SQL profile migration so each change can be reviewed and landed independently. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
Rationale
Benchmark coverage was duplicated across hand-maintained SQL matrices and two nearly identical Rust micro-benchmark jobs. This made it difficult to see what CI runs and allowed the workflows to drift.
This PR moves all benchmark declarations into one deliberately obvious place:
bench_orchestrator/benchmarks.py.BENCHMARKSdeclares the SQL suites and supported targets,PROFILESdeclares the SQL coverage used by each workflow, andMICRO_BENCHMARKSlists the Rust benchmark binaries. Matrix rendering remains separate inmatrix.py.The implementation remains deliberately concrete: there is no generic predicate or tag language.
Commit structure
feat(bench-orchestrator): declare benchmark matrix profilesrefactor(ci): resolve SQL benchmark matrices from profilesrefactor(ci): share Rust micro-benchmark workflowBehavior
A semantic comparison against the removed YAML confirms that the generated
developandnightlySQL matrices are exact matches, including IDs, names, target ordering, scale-factor strings, and remote paths.The default PR SQL profile intentionally fixes the inconsistencies described in #4935:
The explicit full-PR action uses the complete declared target set. The Rust micro-benchmark consolidation preserves the existing mode-specific comparison, upload, ingest, profiling, and failure-reporting behavior.
API impact
No Vortex library APIs change.
vx-benchgains thematrixsubcommand; its existing commands are unchanged.