soup diagnose — seven failure-mode probes, one verdict
After you finish training, the question is no longer "did the loss go down" — it's "did I quietly break something." soup diagnose (v0.56.0) is a post-training model report card that runs 7 pure-function failure-mode probes:
| Probe | What it catches |
|---|---|
forgetting | Per-task Δ accuracy with tolerance band — extends v0.25 eval/forgetting |
refusal | advbench / xstest delta over caller-supplied generators (_MAX_REFUSAL_SCAN = 8192) |
format | JSON / regex / tool-call validity over the RLVR verifier set, with an explicit ReDoS probe (compiled.search("a" * 128)) |
mode_collapse | Pairwise n-gram-Jaccard distance over K completions (k ∈ [2, 32], ngram_n ∈ [1, 8]) |
memorization | Training-prefix echo via partial-prompt continuation (_MAX_SCAN_ROWS = 1000) |
contamination | n-gram overlap with public benchmarks (combined-complexity cap rejects when training rows × benchmark corpus > 1e9) |
citation | citation-recall regression on RAFT-shaped rows: does the answer still cite the supporting [doc-id]? (v0.71.10) |
All probes are pure functions over caller-supplied generators — soup diagnose doesn't run the model itself. You wire in a GeneratorFn callable that wraps your serve backend.
Usage
soup diagnose <run-id> \
--evidence ./evidence.json \
--output ./diagnose.json \
--badge ./badge.svg \
--attach-to-registry registry-idVerdict thresholds (composed in compose_report):
≥ 0.85→ OK≥ 0.60→ MINOR< 0.60→ MAJOR
Output: a frozen FailureReport (run_id / base / adapter / scores / overall / soup_version / extras) plus an embeddable SVG badge from render_badge_svg, one cell per probe (html-escaped — safe for HF model cards). Missing modes fill via neutral_score.
soup train --diagnose-gate
soup train --diagnose-gate ./evidence.jsonRefuses the final checkpoint save on a MAJOR regression (typer.Exit(code=2)). The new diagnose_report artifact kind is registered in the v0.26 registry alongside eval_suite and canaries from v0.55.
See also
- Eval-gated training — pre-training gate at epoch boundaries
- Quant-check — quant-specific regression check
- Eval design — design the evidence your gate scores
- Eval depth (v0.65) — 4 deeper failure-mode probes (behavior, capability, checklist, irt-subset) that stack on top of the 7 diagnose probes
- Post-train x-rays (v0.66) — 4 mechanistic-interpretability probes (sae-diff, sleeper, interference, pack) — failure-mode coverage 6 → 10
Soup is free and Apache-2.0. If it saved you a training run, starring the repo costs nothing and helps most. You can also fund the GPU time behind the work a 4 GB laptop cannot reach.