Guide
Regole di confronto
Confrontare un candidato con una baseline mostra il flusso di lavoro. Questa pagina è il riferimento per le regole con cui viene deciso un confronto: quali tipi esistono, che cosa chiede ciascuno, in che unità si misura un margine e che cosa sposta l'intervallo da cui vengono lette.
Tre tipi
Una regola di confronto indica un kind e una metrica. Non accetta mai min o max: una differenza non si deduce da una soglia.
| Tipo | Chiede | Accetta |
|---|---|---|
| superiority | Il candidato è migliore della baseline? | nessun margine |
| non_inferiority | Il candidato non è peggiore della baseline di più del margine? | margin, e facoltativamente direction |
| equivalence | Il candidato è entro il margine dalla baseline, in entrambe le direzioni? | margin |
Un margine è espresso nelle unità della metrica stessa. Per un tasso, 0.05 corrisponde a cinque punti percentuali; per un quantile di latenza, 5 corrisponde a cinque millisecondi.
version: 1
rules:
- id: not-worse
kind: non_inferiority
metric: exact_label
margin: 0.05
- id: same-quality
kind: equivalence
metric: exact_label
margin: 0.05
- id: better
kind: superiority
metric: exact_label
- id: not-slower
kind: non_inferiority
metric: latency_p50
direction: max
margin: 5Le regole di confronto stanno in un file a sé, passato con --policy, perché release.yaml decide una singola esecuzione, e una regola a soglia e una regola di confronto leggono evidenze diverse.
oloproof compare CANDIDATE_RUN_ID BASELINE_RUN_ID --policy compare.yamlLe stesse regole su due candidati
Duecento domande etichettate. La baseline ne etichetta male venti. Ciascun candidato qui sotto è stato eseguito sulla stessa suite e confrontato con quella baseline usando il file precedente.
Un candidato che si comporta esattamente come la baseline:
Comparison sha256:7d2396c475b94028925930d4e52ae070d9a216a4558e22646169db492757c4de of run_01M3C44TVGT0X067W2H0BZ6GC9 against run_01M3C44SWMXMSQJE17SYHV87PW · 200 paired cases
exact_label: +0.0 points [-2.7, +2.7] · 200 paired · 0 missing · 0 excluded
latency_p50: -0.067 ms [-0.113, -0.001] ms · p50 of per-case differences · 200 paired · 0 missing
Decisions
not-worse exact_label non-inferiority, margin 5.0 points PASS lower_bound_above_margin
same-quality exact_label equivalence, margin ±5.0 points PASS interval_within_margins
better exact_label superiority INSUFFICIENT_EVIDENCE interval_overlaps_zero
not-slower latency_p50 maximum increase 5 ms PASS lower_bound_above_margin
Gate: BLOCK (exit 3)Un candidato che corregge i venti:
Comparison sha256:1e36f48662cbbc0af20217a2c69248f90b473bbf0873dc6dd222ccb1895bb33a of run_01M3C44VQ0TFFNW4FRM5Z2D12R against run_01M3C44SWMXMSQJE17SYHV87PW · 200 paired cases
exact_label: +10.0 points [+4.6, +17.9] · 200 paired · 0 missing · 0 excluded
latency_p50: -0.038 ms [-0.089, +0.009] ms · p50 of per-case differences · 200 paired · 0 missing
Decisions
not-worse exact_label non-inferiority, margin 5.0 points PASS lower_bound_above_margin
same-quality exact_label equivalence, margin ±5.0 points INSUFFICIENT_EVIDENCE interval_overlaps_margins
better exact_label superiority PASS difference_above_zero
not-slower latency_p50 maximum increase 5 ms PASS lower_bound_above_margin
Gate: BLOCK (exit 3)Leggi i due gate insieme. Entrambi bloccano, per ragioni opposte. Il primo candidato risulta equivalente e non risulta migliore; il secondo risulta migliore e quindi non risulta equivalente. Una policy che contiene tutti e tre i tipi per una stessa metrica pone due domande incompatibili, e una delle due resterà sempre senza risposta. Scegli la regola che esprime l'affermazione che stai facendo.
Direzione
non_inferiority usa per impostazione predefinita direction: min: più alto è meglio, e la regola chiede che il candidato non scenda sotto la baseline di più del margine. direction: max serve per le metriche in cui più basso è meglio, come latenza, token o costo. La regola si legge allora come un tetto a un aumento, ed è così che la stampa il terminale: maximum increase 5 ms.
superiority e equivalence non accettano una direzione. L'equivalenza delimita già entrambi i lati, e la superiorità chiede se la differenza è sopra lo zero nel senso proprio della metrica.
Che cosa sposta l'intervallo
Un confronto è appaiato: il risultato candidato di ciascun caso viene messo a confronto con il proprio risultato di baseline. Due cose allargano l'intervallo che ne risulta, e nessuna delle due è la modifica che hai apportato.
Casi mancanti da uno dei due lati
Un caso andato in errore in una delle due esecuzioni manca dalla coppia, e viene delimitato anziché scartato: l'intervallo ammette che ogni caso mancante possa essere andato in un senso o nell'altro. Una suite più piccola, con un criterio chiamato ok: gli stessi quattro disaccordi su trentaquattro casi appaiati, prima senza casi mancanti e poi con altri quattro andati in errore in entrambe le esecuzioni:
ok: +11.8 points [-7.2, +34.3] · 34 paired · 0 missing · 0 excludedok: +11.8 points [-24.8, +44.7] · 34 paired · 4 missing · 0 excludedLa stima è la stessa, perché è calcolata dai casi osservati su entrambi i lati. L'intervallo no, perché quattro casi che nessuno ha visto avrebbero potuto spostare ciascuno la differenza di un caso intero. Correggi gli errori prima di aggiungere casi: più casi con lo stesso tasso di errore non colmano il divario.
Una differenza di ranking appaiata, come la ROC-AUC tra due versioni di un modello, non può delimitare le righe mancanti in questo modo: confronta le righe a cui entrambi i lati hanno dato un punteggio. Una regola su di essa riporta missingness_unbounded finché non dichiara max_missing_fraction, la quota di righe mancanti che accetta come mancanti in modo casuale.
Il metodo
L'intervallo predefinito per una differenza di tassi è un intervallo di media limitata sulle differenze per caso. Una policy può indicare invece il metodo esatto condizionale:
version: 1
difference_method: conditional_exact_paired_difference@1
rules:
- {id: not-worse, metric: exact_label, kind: non_inferiority, margin: 0.05}Il candidato precedente, migliore di dieci punti, riporta [+4.6, +17.9] con il metodo predefinito e questo con il metodo esatto:
exact_label: +10.0 points [+3.5, +15.8] · 200 paired · 0 missing · 0 excludedNessuno dei due è uniformemente più stretto, ed è per questo che il metodo viene scelto nella policy, prima di leggere qualsiasi evidenza, e mai dal motore in base ai dati. Si applica solo alle differenze di tassi.
Quando una regola non può decidere
Una regola di confronto INSUFFICIENT_EVIDENCE può riportare sotto di sé una riga che dice che cosa la deciderebbe. Il confronto su trentaquattro casi senza nulla di mancante:
Decisions
not-worse ok non-inferiority, margin 5.0 points INSUFFICIENT_EVIDENCE interval_overlaps_margin
about 5 more paired cases would decide it, if the difference holds (39 in total at 12% discordance)
Gate: BLOCK (exit 3)Questa stima presuppone che la differenza e la quota di casi in disaccordo restino invariate all'arrivo di nuovi casi. oloproof plan COMPARISON_ID stampa la stessa riga con il tempo che richiederebbero i casi aggiuntivi.
Quando mancano delle coppie, non viene proposta alcuna dimensione, perché le coppie mancanti sono delimitate al loro caso peggiore e più casi non le risolverebbero. Lo stesso confronto con quattro coppie mancanti non stampa alcuna riga di consiglio, e il piano spiega perché:
oloproof plan COMPARISON_IDComparison sha256:22c1aa4fddc4e96ca77e0509ac9835c2a377ed237ca80556bbf1a54a172239bd: no sample size can be computed for a rule that did not decide.
not-worse: 4 missing pairs are bounded at their worst, and the advice does not size under missingness; resolve them and compare againE quando la differenza stessa si trova dal lato sbagliato del margine, più casi non farebbero che confermarla, quindi il consiglio dice invece questo:
overall ok non-inferiority, margin 5.0 points INSUFFICIENT_EVIDENCE interval_overlaps_margin
no sample size would make this PASS: the difference itself (-5.0 points) is outside the margin, so more cases would move it toward FAILDove andare dopo
- Confrontare un candidato con una baseline tratta il flusso di lavoro e la prima
lettura di un intervallo.
- Casi raggruppati tratta le suite i cui casi non sono indipendenti, che un
confronto non decide ancora.
- Slice tratta le regole limitate a una parte della suite.