Skip to content

Add declarative benchmark matrix with profiles#8757

Draft
connortsui20 wants to merge 2 commits into
developfrom
ct/bench-declarative
Draft

Add declarative benchmark matrix with profiles#8757
connortsui20 wants to merge 2 commits into
developfrom
ct/bench-declarative

Conversation

@connortsui20

@connortsui20 connortsui20 commented Jul 14, 2026

Copy link
Copy Markdown
Member

Rationale for this change

SQL benchmark coverage was duplicated across hand-maintained pr_targets / develop_targets arrays and inline full / base matrices in several workflow files. That made it difficult to see what each CI lane ran and allowed PR, develop, and nightly coverage to drift.

This PR moves the SQL benchmark matrix into one declarative Python registry. The workflows select one of the three profiles they actually use (develop, pr, or nightly) and receive the corresponding GitHub Actions matrix from vx-bench.

The scope is intentionally narrow: this PR does not introduce a generic predicate or tag language, and Rust micro-benchmark workflow consolidation is split into a follow-up PR.

What changes are included in this PR?

  • Declare each SQL benchmark and its supported targets once in bench_orchestrator/matrix.py.
  • Add vx-bench matrix <profile> for the three workflow-backed profiles.
  • Resolve the SQL PR, develop, and nightly matrices dynamically instead of duplicating them in YAML.
  • Preserve develop and nightly coverage while making the PR lane consistent across benchmarks.

What APIs are changed? Are there any user-facing changes?

No Vortex library APIs change. vx-bench gains the matrix subcommand; its existing commands are unchanged. This addresses #4935.

Validation

  • uv run ruff check bench-orchestrator
  • uv run ruff format --check bench-orchestrator
  • uv run pytest bench-orchestrator/tests (37 passed)
  • yamllint --strict -c .yamllint.yaml on the changed workflows
  • actionlint on the SQL and nightly workflows

https://claude.ai/code/session_01PQg1cgPLKJg4QVJvE2xa3Q

@joseph-isaacs

Copy link
Copy Markdown
Contributor

Do we not use yml for the ci ones? Is this hook into there?

@connortsui20 connortsui20 marked this pull request as draft July 15, 2026 13:09
@connortsui20 connortsui20 force-pushed the ct/bench-declarative branch from 5d4d6ee to 521a932 Compare July 15, 2026 14:07

Copy link
Copy Markdown
Member Author

@joseph-isaacs Yes — it's now hooked into the workflow YAML, not just a standalone module. The benchmark workflows resolve their matrix from a plan job that runs vx-bench matrix <profile> and feed it into the bench job via fromJSON:

  • sql-benchmarks.yml — the two inline full/base JSON matrices are deleted; it now takes a profile input and resolves it.
  • bench-core.yml (new) — reusable micro-benchmark workflow, replacing the duplicated steps that were copy-pasted across bench.yml/bench-pr.yml.
  • bench.yml, bench-pr.yml, sql-pr.yml, nightly-bench.yml — thin callers passing a profile (develop/pr/nightly/micro).

Net −549 lines across the workflows. develop/nightly resolve to the same target sets as before; the source of truth is bench-orchestrator/bench_orchestrator/matrix.py.


Generated by Claude Code

@connortsui20 connortsui20 force-pushed the ct/bench-declarative branch from 2b980ae to 51cd9f1 Compare July 15, 2026 16:58
@vortex-data vortex-data deleted a comment from codspeed-hq Bot Jul 15, 2026
@connortsui20 connortsui20 force-pushed the ct/bench-declarative branch from ffc2b35 to 2be6840 Compare July 15, 2026 18:49
@codspeed-hq

codspeed-hq Bot commented Jul 15, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 14.81%

⚠️ Unknown Walltime execution environment detected

Using the Walltime instrument on standard Hosted Runners will lead to inconsistent data.

For the most accurate results, we recommend using CodSpeed Macro Runners: bare-metal machines fine-tuned for performance measurement consistency.

❌ 1 regressed benchmark
✅ 1697 untouched benchmarks
⏩ 9 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
WallTime cuda/bitpacked_u8/unpack/3bw[100M] 299.3 µs 351.3 µs -14.81%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing ct/bench-declarative (2be6840) with develop (8a1f91c)

Open in CodSpeed

Footnotes

  1. 9 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

connortsui20 and others added 2 commits July 15, 2026 15:40
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants