qwen38-flash-next / code /models /demos /utils /PERF_TARGET_VALIDATION.md
DeAIafdeling's picture
Add files using upload-large-folder tool
3e0ec22 verified
|
Raw History Blame Contribute Delete
1.79 kB
# Local perf / accuracy target validation (opt-in)
In CI, model e2e tests are **warning-only** for perf/accuracy: `verify_perf` /
`verify_accuracy` log drift but never abort, so the run always writes complete
benchmark JSON. A separate CI step then enforces the targets in
[`models/model_targets.yaml`](../../model_targets.yaml) via
`.github/scripts/utils/validate_perf_targets.py`.
You can run that **same** enforcement locally as an opt-in pytest gate.
## How to enable
Run your model demo/test with `VALIDATE_PERF_TARGETS=1`:
```bash
VALIDATE_PERF_TARGETS=1 pytest models/tt_transformers/demo/simple_text_demo.py -k "..."
```
A `pytest_sessionfinish` hook (in `models/conftest.py`) runs **after** the
session — once benchmark JSON is fully written — loads the CI validator, and
**fails the session** if any measured metric misses its target. It is off by
default, so a normal `pytest` run is unaffected.
## Requirements
- The test must emit benchmark data (it calls `create_benchmark_data(...).save(...)`,
writing `generated/benchmark_data/complete_run_*.json`).
- An entry for your `model` + `sku` must exist in `models/model_targets.yaml`.
## Knobs
| Env var | Default | Effect |
| --- | --- | --- |
| `VALIDATE_PERF_TARGETS` | `0` | `1` enables the local gate. |
| `VALIDATE_PERF_TARGETS_STRICT_MISSING` | `0` | `1` also fails when no target entry exists (TODO/missing); otherwise missing targets only warn. |
| `VALIDATE_PERF_TARGETS_SKU` | _(auto)_ | Override the SKU. If unset, it is auto-detected from the device, falling back to the `card_type` in the benchmark JSON. |
## Notes
- Same comparison logic as CI (single source of truth) — a local pass means a CI pass for those metrics.
- Validation runs once at session end, so it never truncates a test mid-run.