[SKEEP-005]: Ground-truth validation for stateful metrics
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Ambito
- machine-learning, testing-qa
Direzione di ricerca
Start by reading skainet-test/skainet-test-groundtruth/src/commonMain/kotlin/sk/ainet/test/groundtruth/OperationExecutor.kt and the existing ground-truth fixture pattern; the proposal file docs/modules/skeep/pages/005-ground-truth-stateful-metrics.adoc has not yet been written. Draft the proposal to answer the fixture format, batch-sequence, tolerance, and metadata questions. Done means the proposal is registered in docs/modules/skeep/nav.adoc and the “Current Proposals” table, with its status awaiting maintainer review.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Proposal document: docs/modules/skeep/pages/005-ground-truth-stateful-metrics.adoc — not yet written; writing it is this issue's Lane 0 task
Status: Draft (proposal to be filed)
Branch: feature/skeep-005-ground-truth-stateful-metrics
Trigger
Compiler, graph-export, or runtime integration — specifically the test-integration
pattern every future Metric inherits. skainet-test-groundtruth's OperationExecutor
(skainet-test/skainet-test-groundtruth/src/commonMain/kotlin/sk/ainet/test/groundtruth/OperationExecutor.kt)
maps a test case's operation name to one stateless TensorOps call and returns one
Tensor<FP32, Float>. A Metric (sk.ainet.lang.nn.metrics.Metric) is stateful —
update() across many batches, compute() returning a scalar Double, reset() — and
there is no MetricExecutor or equivalent anywhere in the harness. That shape mismatch
is why the Precision/Recall/F1Score feature (#1222) ships with unit tests only and
never earns the "✅ ground-truth validated" badge tensor ops get.
Summary
Add a parallel MetricExecutor and GroundTruthMetricCase (predictions tensor, targets
tensor, expected scalar, metric parameters such as averaging mode) so metrics can be
cross-checked against sklearn / torchmetrics references the same way matmul is
cross-checked against PyTorch today, in the same CI job. Additive: OperationExecutor
and the existing GGUF op-fixture format are unchanged.
Improvising this inside whichever metric PR gets there first — instead of deciding its
shape once, durably — is exactly the drift SKEEP exists to prevent; hence a proposal
rather than a sub-issue of #1222.
Questions the proposal must answer (don't leave them to the implementer):
- Python-side fixture format: a new
@ExecutableMetricdecorator inskainet-ground-truth,
or reuse of@Executablewith a scalar-tensor convention? - Does a metric case carry one batch or a sequence of batches (to exercise
accumulation acrossupdate()calls)? - Scalar tolerance semantics vs. tensor element-wise tolerance.
- Does this warrant its own GGUF metadata convention, or a lighter fixture format since
metrics don't need the op-parameter machinery conv2d/pooling need?
Related DARC features
- #1222 — Precision, Recall, F1Score (blocked for ground-truth coverage only; ships without it)
- Any future metric (
AUC,MeanSquaredError, …) inherits whatever this decides - #984 — Ground truth validation Phase 2 roadmap (this is a sibling concern to #985–#988)
Sub-issues
To be filed once the proposal is Accepted. Suggested phases: (0) spike the fixture
format against Accuracy, which already ships; (1) MetricExecutor +
GroundTruthMetricCase; (2) wire Precision/Recall/F1Score.
Status upkeep
- Proposal registered in
docs/modules/skeep/nav.adocand the "Current Proposals" table - Maintainer moved status to
Accepted - Implementation PR(s) linked here and flipped the proposal's
Status:toImplemented
- Lingua principale
- Kotlin
- Stelle
- 52
- Fork
- 15
- Merge medio
- 1g 1h
- PR unite (30g)
- 41
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di SKaiNET-developers/SKaiNET
-
coding good first issue platform size:xs skill:js sub-issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SKaiNET-developers/SKaiNET#1232 ·
I maintainer di solito rispondono entro 1 giorno
-
Ground truth: add Kotlin/Native target(s) to skainet-test-groundtruth (jvm/android only today)Apertaenhancement platform skill:native sub-issue
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
SKaiNET-developers/SKaiNET#1301 ·
I maintainer di solito rispondono entro 1 giorno
-
compute-backend skill:android tracking
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
SKaiNET-developers/SKaiNET#1282 ·
I maintainer di solito rispondono entro 1 giorno
-
compiler enhancement skill:numerics
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
SKaiNET-developers/SKaiNET#1281 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement skill:kotlin-core skill:numerics
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
SKaiNET-developers/SKaiNET#1280 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di SKaiNET-developers/SKaiNET
Issue simili
-
bug follow-up
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
binding:web core docs p3
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
RunanywhereAI/runanywhere-sdks#1123 ·
I maintainer di solito rispondono entro 1 giorno
-
StepExamBenchmarkTest runs a loop and prints a timing but asserts nothingForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertajules
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
open-learning-exchange/myplanet#18199 · 1 commento ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
auth0/Auth0.Android#1095 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Scheme-less stream URLs throw NullPointerException instead of URISyntaxExceptionForse già presa @blihio l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
pedroSG94/RootEncoder#2218 ·
I maintainer di solito rispondono entro 3 giorni