Ga naar de inhoud

Handleidingen

Referentie voor resultaten en uitvoering

Wat een run naar een HTTP-systeem stuurt en terugverwacht, hoe elke case in de noemer van een metriek terechtkomt, de beslissingstoestanden en de redencodes die ze verklaren, de exitcodes, en welke gegevens lokaal blijven of naar een gehoste workspace gaan. Voor de ideeën erachter lees je Kernbegrippen; voor de beleidsvelden lees je de Configuratiereferentie.

Het contract van een HTTP-systeem

Een HTTP-systeem (system.http in oloproof.yaml) wordt één keer per case aangeroepen, en één keer per replicaat.

AspectGedrag
VerzoekStandaard POST (GET en PUT worden geaccepteerd). De body is de input-waarde van de case als JSON.
Headers en authenticatieEr is niets te configureren. Het verzoek draagt alleen de standaardwaarden van de HTTP-client. Een endpoint dat een sleutel nodig heeft, hoort achter een Python-systeem (een callable) dat die toevoegt.
AntwoordMoet JSON zijn. output_path kiest de output via een pad met punten, zoals result.answer; zonder dat pad is de hele body de output. Een ontbrekend output_path-veld wordt voor die case vastgelegd als uitvoeringsfout.
ArtefactenElk http.artifacts-item leest een pad met punten uit het antwoord. Een gedeclareerd veld dat in een antwoord ontbreekt is een contractfout, en de run stopt met exit 2.
Timeouthttp.timeout_s per verzoek, standaard 30 seconden.
Nieuwe pogingenTimeouts, verbindingsfouten en HTTP 408, 429 en 5xx worden opnieuw geprobeerd, tot vier pogingen in totaal, met exponentiële backoff met jitter die Retry-After respecteert. Andere 4xx-antwoorden worden niet opnieuw geprobeerd.
Na de laatste pogingDe uitvoering van de case wordt als fout vastgelegd en de case telt als ontbrekend (of als mislukt, onder on_execution_error: fail). De run gaat door.
GelijktijdigheidHooguit concurrency.system verzoeken tegelijk, standaard 8.

De URL, methode, het outputpad en de artefacttoewijzing gaan mee in de versie van het systeem, maar wat de server doet niet. Wijzig system.version telkens als het gedrag van de server verandert; zie de Configuratiereferentie voor de reden.

Drie verschillende woordenschatten

Een resultaat kent drie soorten toestand, en ze vervangen elkaar nooit.

SoortWaardenBeantwoordt
BeslissingstoestandPASS, FAIL, INSUFFICIENT_EVIDENCE, MANUAL_REVIEWWat het bewijs zegt over één regel.
UitvoeringstoestandRunstatus RUN_ERROR of CANCELLED; volledigheid van de run PARTIAL; uitvoering van een case ERROR of TIMEOUTWat er met de run of met de aanroep van één case gebeurde. Geen kwaliteitsresultaat.
ReleaseactieALLOW, WARN, BLOCKWat je beleid met elke beslissing doet: toestanden in block_on blokkeren, toestanden in warn_on waarschuwen, de rest laat door.

Een run die normaal eindigt is DECIDED, of DECIDED_EARLY als vroeg stoppen hem beëindigde. Een run die door Ctrl-C of het annuleren van een taak wordt onderbroken is CANCELLED; een run waarvan het harnas een fout opwierp is RUN_ERROR. Beide laten de run PARTIAL, bewaren de cases die klaar waren, en laten de volgende run hun gecachete records hergebruiken. Zie Fouten.

Voor een minimumdrempel T en een interval [L, U] is een regel PASS als L >= T, FAIL als U < T, en anders INSUFFICIENT_EVIDENCE. Een maximumdrempel is symmetrisch. Voordat een regel het interval leest, controleert hij of hij überhaupt moet beslissen: eerst de redenen voor MANUAL_REVIEW, dan die voor INSUFFICIENT_EVIDENCE. Het eerste niveau met een reden beslist, en noemt elke reden die het vond.

Redencodes

Elke beslissing draagt een of meer redencodes.

MANUAL_REVIEW

CodeBetekenis
policy_requires_reviewDe regel zet requires_manual_review: true.
unsupported_methodEr bestaat voor deze metriek in deze situatie geen toegelaten interval. Zie hieronder.
unsupported_dependence_structureDe suite declareert clusters (group_id) en geen toegelaten methode behandelt die voor deze metriek.
approximate_method_not_permittedHet enige interval is benaderend, en het beleid zet allow_approximate_methods: true niet.
evaluator_retiredEen evaluator achter de metriek is uit dienst genomen.

INSUFFICIENT_EVIDENCE

CodeBetekenis
no_observationsVoor deze metriek is geen enkele case waargenomen.
missingness_exceeds_policyEr ontbreken meer van de in aanmerking komende cases dan de max_missing_fraction van de regel toestaat.
missingness_unboundedDe methode laat ontbrekende cases vallen in plaats van ze te begrenzen, en de regel declareert geen max_missing_fraction.
evaluator_not_validatedEen modeljudge achter de metriek is niet gevalideerd tegen menselijke labels, en require_validated_evaluators staat aan (de standaard).
evaluator_recalibration_requiredDe judge is gevalideerd op een geserveerd model waar de oordelen van deze run niet vandaan kwamen.
interval_unavailableDe metriek heeft geen interval om te lezen.
insufficient_clustersMinder clusters dan de min_clusters van het beleid.
interval_monte_carlo_uncertainDe drempel valt binnen de simulatieonzekerheid van een geclusterde grens.
interval_overlaps_thresholdHet interval bevat de drempel. Meer cases zouden het smaller maken.
interval_unboundedHet interval heeft geen grens aan de kant die de regel leest.
missing_could_change_outcomeEen observed_count-regel: de ontbrekende cases zouden de mislukkingen voorbij max_failures kunnen brengen.
interval_overlaps_zero, interval_overlaps_margin, interval_overlaps_marginsEen vergelijking waarvan het verschilinterval nul of een marge overspant.
insufficient_supportEen vergelijkingsregel op een slice met minder cases dan zijn min_support.
family_correction_withheldEen regel in een families:-item waarvoor de Holm-correctie eerder stopte.

PASS en FAIL

CodeToestand
lower_bound_meets_minimum, upper_bound_meets_maximumPASS
upper_bound_below_minimum, lower_bound_above_maximumFAIL
observed_failures_within_limitPASS
observed_failures_exceed_limitFAIL
difference_above_zero, lower_bound_above_margin, interval_within_marginsPASS (vergelijking)
difference_below_zero, upper_bound_below_margin, interval_outside_marginsFAIL (vergelijking)
cost_ceiling_exceededGenoemd naast de toestand van een kostenregel waarvan een vastgelegde uitvoering het gedeclareerde plafond overschreed

Alleen in een gehoste workspace

Een workspace die zelf over een gepushte run beslist, kan een beslissing achterhouden met ppi_not_verified (hij heeft het interval waarop de beslissing rust niet geverifieerd), execution_not_verified (de outputs kwamen niet van een geregistreerde runner) of workspace_cannot_decide (hij heeft geen kopie van het beleid, of kon het bewijs niet lezen). Zie Gating.

Hoe elke case in de noemer komt

Elke metriek rapporteert vier aantallen: n_total (cases in de suite), n_eligible, n_observed en n_missing, met n_eligible = n_observed + n_missing. Cases buiten n_eligible staan onder exclusions, met een reden.

Wat er met de case gebeurdeTelt alsIn de noemer
De evaluator gaf geslaagd of misluktwaargenomen, succes of mislukkingja
De evaluator verklaarde zichzelf niet van toepassing (bijvoorbeeld: geen verwachte waarde om mee te vergelijken)uitgesloten, met de redennee
De aanroep van het systeem gaf een fout of timeoutontbrekend, of mislukking onder on_execution_error: failja
De evaluator wierp een fout op, of het antwoord van een judge was niet te lezenontbrekendja
De case draaide nooit omdat de run werd onderbrokenontbrekend, en de run is PARTIALja

Een ontbrekende case wordt begrensd, niet weggelaten. Voor een slagingspercentage behandelt de ondergrens van het interval elke ontbrekende case als mislukking en de bovengrens als succes, dus een run met veel ontbrekende cases heeft een breed interval dat geen veeleisende regel kan halen; een begrensd gemiddelde vult op dezelfde manier de uiteinden van zijn gedeclareerde bereik in. Een methode die ontbrekende cases niet kan begrenzen (een rangschikkingsstatistiek, bijvoorbeeld) laat ze vallen en legt die aanname vast, en een regel erover leest missingness_unbounded totdat hij max_missing_fraction declareert.

Een observed_count-regel telt mislukkingen over de uitgevoerde suite en leest geen interval. Hij slaagt alleen als de waargenomen mislukkingen plus elke ontbrekende case nog binnen max_failures passen.

Metrieken zonder toegelaten interval

Een regel beslist alleen op een interval waarvan de methode door een audit is toegelaten. Waar er geen bestaat, wordt de metriek nog steeds berekend en getoond, en een regel erover leent geen ongevalideerde methode:

SituatieWat een regel erover leest
Een score-metriek (gemiddelde) zonder gedeclareerd bereik, zoals een eigen score-evaluator zonder score_rangeMANUAL_REVIEW, unsupported_method
Een gemiddelde-, kwantiel-, rangschikkings- of kostenmetriek op een suite die group_id declareertMANUAL_REVIEW, unsupported_dependence_structure
Een slagingspercentage op een geclusterde suiteeen benaderend interval: MANUAL_REVIEW tenzij allow_approximate_methods: true, daarna de clustercontroles hierboven
Een kwantiel- of rangschikkingsmetriek met replicates boven 1MANUAL_REVIEW, unsupported_method
Elke metriek op een suite met zowel group_id als replicatenMANUAL_REVIEW, unsupported_dependence_structure
Een vergelijking op een geclusterde suiteMANUAL_REVIEW
Een slice onder min_slice_supportgeen interval, maar slices bereiken de gate nooit
human_score-, human_preference- of cost_per_accepted-metriekengeweigerd bij het lezen van het bestand, exit 2

Exitcodes

oloproof gate, oloproof run met een beleid, en de andere commando's die beslissen gebruiken allemaal dezelfde codes.

CodeBetekenis
0Niets waarop het beleid blokkeert: elke regel slaagde, of de regels die dat niet deden vallen buiten block_on.
1Een regel in block_on mislukte.
2De configuratie of aanroep was fout, of een systeem brak zijn contract; er is niets beslist.
3Een regel in block_on las INSUFFICIENT_EVIDENCE.
4Een regel in block_on las MANUAL_REVIEW.
5De run is niet voltooid en block_on_partial_run staat aan (de standaard).

Als er meerdere van toepassing zijn, is de gerapporteerde code de eerste van 1, 5, 4, 3. Een toestand die buiten block_on blijft kan de exitcode niet veranderen: met block_on: [FAIL] en warn_on: [INSUFFICIENT_EVIDENCE] waarschuwt een onbesliste regel en eindigt de gate met 0. Exit 0 betekent dus alleen dat er niets gebeurde waarop je beleid blokkeert, niet dat elke regel slaagde. Zie Gating.

Waar het werk draait en waar de gegevens heen gaan

Lokaal, de standaard

oloproof run, oloproof gate en de SDK draaien op je eigen machine. Elk record (cases, outputs, artefacten, oordelen, metrieken en beslissingen) wordt geschreven naar .oloproof/store.sqlite naast oloproof.yaml, of onder OLOPROOF_HOME als die is gezet. Er wordt niets naar Oloproof gestuurd. Het enige netwerkverkeer is wat je configuratie veroorzaakt: aanroepen naar de URL van je HTTP-systeem, en aanroepen die een modeljudge of modelclassifier naar zijn provider doet, die de beoordeelde caseinhoud ontvangt en je ervoor factureert.

Pushen naar een gehoste workspace

oloproof push stuurt het bewijs van een run naar de workspace die je met oloproof login hebt verbonden. Standaard stuurt het metrieken, intervallen, beslissingen en geaggregeerde slices, en van elk record de identiteit, status, tijden en verbruik, maar niet de inhoud. Ruwe inhoud wordt veld voor veld geredigeerd voordat er iets de machine verlaat, en een geredigeerd record zegt welke categorieën zijn achtergehouden. Een categorie gaat alleen mee als egress: in oloproof.yaml hem noemt:

CategorieWat ze omvat
raw_inputsScenario-inputs, verwachte waarden en casemetadata: de rijen van de dataset
raw_outputsWat het geteste systeem voor elke case teruggaf
judge_rationalesDe tekst waarin een judge een oordeel uitlegt, die de output citeert
artifactsRetrievalcontext, citaties en trajecten die tijdens een run zijn vastgelegd
error_detailFoutmeldingen en details, die vaak de input letterlijk bevatten
system_configDe gedeclareerde configuratie van het geteste systeem en van zijn evaluators
label_notesDe notitie die iemand naast een label schreef, die vaak de output citeert
span_namesTrace-, span-, tool- en agentnamen die een instrumentatie vastlegde

Recorddigests worden na redactie niet opnieuw berekend, dus een gehost record noemt nog steeds het oorspronkelijke bewijs, dat op je machine blijft. Redactie is geen versleuteling, en een metriek over een heel kleine slice kan de cases erachter nog steeds herkenbaar maken.

Als reviewers cases labelen in de gehoste reviewwachtrij, haalt hun browser de caseinhoud op bij oloproof collect dat aan jouw kant draait; die gaat niet door de workspace. Providersleutels die een workspace gebruikt worden opgeslagen met oloproof credentials set, en oloproof credentials list toont hun namen, nooit hun waarden. Een beheerde job draait op een worker die Oloproof beheert en die je Python-code niet uitvoert; oloproof job rapporteert het resultaat en eindigt op de gate ervan.

In een gehoste workspace hergebruikt de engine nooit gecachete uitvoeringen, oordelen of analyses, omdat een push die caches kan beschrijven; hij berekent ze opnieuw.