Skip to content

feat(ci): add performance regression tracking stage - #1218

Open
quic-amitraj wants to merge 2 commits into
quic:mainfrom
quic-amitraj:feat/ci-perf-tracking
Open

feat(ci): add performance regression tracking stage#1218
quic-amitraj wants to merge 2 commits into
quic:mainfrom
quic-amitraj:feat/ci-perf-tracking

Conversation

@quic-amitraj

Copy link
Copy Markdown
Contributor

Introduces tests/ci_perf/ — a pytest plugin + CLI tooling that captures prefill_time, decode_perf, onnx_size_bytes and qpc_size_bytes per model on every QAIC CI stage, persists them to a JSON baseline DB on the CI host, and adds two new Jenkins stages:

  • Perf Comparison: compares current PR metrics against the baseline DB using a configurable percentage threshold (default 5%) and blocks the PR on regression.
  • Update Perf Baseline: runs only on the main branch and atomically updates the baseline DB with the current run's values.

Key design decisions:

  • Hardware-keyed DB prevents false failures across different NSP configurations.
  • Composite key (model::bs=N::seq=N::decode=X) ensures same model with different inference configs never collide in the DB.
  • Sizes are optional — inference-only tests omit onnx_path/qpc_path and the null values are stored but never compared.
  • xdist-aware plugin merges worker records via pytest_testnodedown.
  • First-run grace: new models not yet in the DB are SKIPped, not failed.

quic-amitraj and others added 2 commits July 27, 2026 15:33
Introduces tests/ci_perf/ — a pytest plugin + CLI tooling that captures
prefill_time, decode_perf, onnx_size_bytes and qpc_size_bytes per model on
every QAIC CI stage, persists them to a JSON baseline DB on the CI host, and
adds two new Jenkins stages:

  - Perf Comparison: compares current PR metrics against the baseline DB using
    a configurable percentage threshold (default 5%) and blocks the PR on
    regression.
  - Update Perf Baseline: runs only on the main branch and atomically updates
    the baseline DB with the current run's values.

Key design decisions:
- Hardware-keyed DB prevents false failures across different NSP configurations.
- Composite key (model::bs=N::seq=N::decode=X) ensures same model with
  different inference configs never collide in the DB.
- Sizes are optional — inference-only tests omit onnx_path/qpc_path and the
  null values are stored but never compared.
- xdist-aware plugin merges worker records via pytest_testnodedown.
- First-run grace: new models not yet in the DB are SKIPped, not failed.
@quic-amitraj
quic-amitraj marked this pull request as ready for review July 27, 2026 18:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant