Add declarative benchmark matrix with profiles#8757
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 degrade performance by 14.81%
|
| 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)
Footnotes
-
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. ↩
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>
2be6840 to
f3331ad
Compare
Rationale for this change
SQL benchmark coverage was duplicated across hand-maintained
pr_targets/develop_targetsarrays and inlinefull/basematrices 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, ornightly) and receive the corresponding GitHub Actions matrix fromvx-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?
bench_orchestrator/matrix.py.vx-bench matrix <profile>for the three workflow-backed profiles.What APIs are changed? Are there any user-facing changes?
No Vortex library APIs change.
vx-benchgains thematrixsubcommand; its existing commands are unchanged. This addresses #4935.Validation
uv run ruff check bench-orchestratoruv run ruff format --check bench-orchestratoruv run pytest bench-orchestrator/tests(37 passed)yamllint --strict -c .yamllint.yamlon the changed workflowsactionlinton the SQL and nightly workflowshttps://claude.ai/code/session_01PQg1cgPLKJg4QVJvE2xa3Q