e2e eval harness silently ignores `*_fp32_config.json` recipes (fp32 not in KNOWN_PRECISIONS) — affects #1084, #1093
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- testing-qa, tooling
Direzione di ricerca
Inizia leggendo KNOWN_PRECISIONS, split_task_precision() e discover_recipe_variants() in scripts/e2e_eval/utils/recipes.py, quindi esamina i file interessati in examples/recipes/. Esegui i test e2e pertinenti in tests/e2e/test_config_e2e.py e verifica che le ricette interessate scritte dagli autori vengano individuate senza modificarne il contenuto di quantizzazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
The e2e eval harness discovers authored recipes by a precision token parsed from the filename. In scripts/e2e_eval/utils/recipes.py:
KNOWN_PRECISIONS: tuple[str, ...] = ("fp16", "w8a16", "w8a8")
discover_recipe_variants() → split_task_precision() only strips those suffixes; any other trailing token (e.g. fp32) yields precision=None, and the file is dropped in discover_recipe_variants (if cfg_task != task or precision is None: continue).
Consequence: a recipe named *_fp32_config.json is never recognized as a precision variant. If a model dir contains only fp32-named recipes, discover_recipe_variants returns empty and the harness silently falls back to winml config auto-generation — the authored recipe is never built or evaluated.
Why this is a naming trap
The catalog convention is that the unquantized bucket is named *_fp16_config.json with quant: null:
- 75 / 75
*_fp16_config.jsonrecipes underexamples/recipes/havequant: null; 0 carryquant.mode=fp16. - fp16 is realized per-EP at eval time via
--precision fp16(which resolves toquant.mode=fp16), not baked into the recipe._run_recipe_buildinrun_eval.pybuilds authored recipes recipe-driven (winml build -c <recipe>), with no--precision/--deviceflag. - On CPU the unquantized recipe deliberately stays fp32 — see
tests/e2e/test_config_e2e.py: "device=cpu + precision=auto must NOT trigger FP16 conversion."
So a quant: null recipe named _fp16_ is correct and intended. The same content renamed _fp32_ falls outside the harness's recognized precisions and is dropped.
Impact (two open PRs)
| PR | Model (in models_all.json) |
Recipes shipped | Harness result |
|---|---|---|---|
| #1084 | audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim |
audio-classification_fp32_config.json (only) |
no variant discovered → authored recipe ignored, evals via auto-config |
| #1093 | impira/layoutlm-document-qa |
question-answering_fp32_config.json, question-answering_w8a16_config.json |
fp32 skipped → only w8a16 discovered, no unquantized/fp16-bucket eval |
Contrast (correct): usyd-community/vitpose-plus-base ships keypoint-detection_fp16_config.json + keypoint-detection_w8a8_config.json — both discovered.
Suggested fix
Rename the *_fp32_config.json recipes in #1084 and #1093 back to *_fp16_config.json. Their quant: null content already matches the fp16-bucket convention, so the rename makes them discoverable and consistent with the other 75 recipes — no content change needed.
Alternatively, if fp32-named recipes are meant to be first-class, add fp32 to KNOWN_PRECISIONS and the harness precision-resolution. The rename is the lower-risk, convention-aligned option.
References
scripts/e2e_eval/utils/recipes.py—KNOWN_PRECISIONS,split_task_precision,discover_recipe_variantsscripts/e2e_eval/run_eval.py—_run_recipe_build(recipe-driven build, no--precision)tests/e2e/test_config_e2e.py— CPU stays fp32 by design
- Lingua principale
- Python
- Stelle
- 40
- Fork
- 11
- Merge medio
- 1g 2h
- PR unite (30g)
- 59
Guida per i contributori
Apri 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 microsoft/winml-cli
-
bug P1
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
P2 refactor triaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
bug P1
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
bug P1
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
-
bug P1
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Tutte le issue di microsoft/winml-cli
Issue simili
-
agent-ready documentation needs-triage
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
-
workflow-status page template still says reusable workflows are "triggered only by workflow_call:" Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
-
instance instance add
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
searxng/searx-instances#939 · 1 commento ·
-
area-deployment area-integrations triage:bot-seen
Difficoltà 2/5 Mezza giornata Idoneità per principianti 86/100