diff --git a/cards/urd-diac-base-1.0.md b/cards/urd-diac-base-1.0.md index 8d9249df..e30d2d0e 100644 --- a/cards/urd-diac-base-1.0.md +++ b/cards/urd-diac-base-1.0.md @@ -1,9 +1,28 @@ # urd-diac-base-1.0 Urdu diacritization, base tier (run-066): byt5-base seq2seq on the -full 573,130-pair urdu-diacrit corpus. IMF v1 fp32. +full 573,130-pair urdu-diacrit corpus. IMF v1 **fp16**. -## Metrics (full 11,940-row test split, raw char CER) +## Metrics (full 11,940-row test split, raw char CER, row-mean) CER **3.57** (urd-diac-1.0 small tier: 3.77 baseline) — gate PASSED. Word accuracy 69.8%. + +## Artifact parity (WO51 contract) + +Single-row greedy decode, the runtime's actual decode mode: ONNX +artifact CER **3.64** — identical to torch on **500/500 rows** +(agreement 1.0; three-way bf16/fp32/ORT agreement 1.0). Batched +decode without an attention mask is outside the artifact contract +(CONFORMANCE.md). + +## Conformance + +The shipped runtime reproduces all 12 frozen vectors byte-exactly +(`conformance/urd-diac-base-vectors.json`). + +## Data / license + +Weights depend on the original training-data license (the urdu-diacrit +corpus; provenance in `corpora/PROVENANCE.md`, owner-approved ship +decision 2026-10-18). Code and weights: BSD-3-Clause. diff --git a/docs/RESULTS.md b/docs/RESULTS.md index 3549ad7c..2aff3425 100644 --- a/docs/RESULTS.md +++ b/docs/RESULTS.md @@ -2348,3 +2348,12 @@ succeeds, then the p047 remainder (~4h) + p029 + consolidation run death-proof. The mount (/ckpt = the bucket) may itself be durable for properly-closed files — untested; the explicit sync removes the doubt. + +## run-066 urd-diac-base gate pass and artifact parity (2026-10-19) + +Gate: full 11,940-row test split, raw char CER, row-mean — **3.57** +(beat urd-diac-1.0 small tier 3.77), word accuracy 69.8%. Artifact +parity under the WO51 single-row contract: ONNX fp16 CER 3.64, +500/500 rows identical to torch, three-way bf16/fp32/ORT agreement +1.0. Shipped runtime reproduces 12/12 frozen conformance vectors +byte-exactly. Data: 573,130 pairs (urd-dia registry, sha256-pinned). diff --git a/models.yaml b/models.yaml index 51d85cf0..f2be1d1c 100644 --- a/models.yaml +++ b/models.yaml @@ -472,3 +472,15 @@ models: - {name: wer_wikinews2024_multiref, value: 8.85, protocol: "greedy decode, first-alternate protocol, WikiNews-2024 multiref (WO35)", source: interscript/interscript-models docs/RESULTS.md} - {name: der_total_greedy, value: 2.84, protocol: "greedy decode, first-alternate protocol, WikiNews-2024 multiref (WO35)", source: interscript/interscript-models docs/RESULTS.md} license: BSD-3-Clause + urd-diac-base-1.0: + task: diacritization + scripts: [Arab, Arab] + precision: fp16 + filename: urd-diac-base-1.0-fp16.zip + url: https://github.com/interscript/interscript-models/releases/download/urd-diac-base-1.0/urd-diac-base-1.0-fp16.zip + sha256: 8058220d72df76b31260358070499c2cdb504f030fa10259b48aa05c7caf5711 + size: 1347487633 + metrics: + - {name: cer, value: 3.57, source: interscript/interscript-models docs/RESULTS.md#run-066-urd-diac-base-gate-pass-and-artifact-parity-2026-10-19} + parity: {samples: 500, cer_delta: 0.07} + license: BSD-3-Clause diff --git a/models/urd-diac-base/urd-diac-base-1.0.metadata.yaml b/models/urd-diac-base/urd-diac-base-1.0.metadata.yaml new file mode 100644 index 00000000..5872e033 --- /dev/null +++ b/models/urd-diac-base/urd-diac-base-1.0.metadata.yaml @@ -0,0 +1,23 @@ +format: imf-v1 +id: urd-diac-base-1.0 +task: diacritization +source_script: Arab +target: Arab +tokenizer: bytes +opset: 14 +decoder: plain +precision: fp16 +license: BSD-3-Clause +trained_from: byt5-base, 573130 urdu-diacrit pairs, run-066 (TODO.sota WO41) +metrics: +- name: cer + value: 3.57 + source: interscript/interscript-models docs/RESULTS.md#run-066-urd-diac-base-gate-pass-and-artifact-parity-2026-10-19 + protocol: greedy decode, full 11940-row test split, row-mean CER (WO51 single-row + artifact contract) +sha256: + encoder.onnx: ac2ccda95bdfeea5536a81099a3f70241b44b05a8d6bfb05f59ec21c086ff88e + decoder.onnx: 13a140f8a85794fc93537b88c77493483d414aad1c5d53316a5e4c86dd930c10 +parity: + samples: 500 + cer_delta: 0.07 diff --git a/tests/test_pipeline_plan_gate.py b/tests/test_pipeline_plan_gate.py index fcc14d70..c2958d20 100644 --- a/tests/test_pipeline_plan_gate.py +++ b/tests/test_pipeline_plan_gate.py @@ -91,8 +91,8 @@ def test_parity_gate_runtime_mode() -> None: def test_license_gate_blocks_publish(tmp_path: Path) -> None: # the shipped urd-dia is owner-waived (2026-10-18) and must PASS now - waived = evaluate(recipe := load_recipe(RECIPES / "urd-diac.yaml"), - CORPORA, metrics={"cer": 0.0352}, parity=None) + recipe = load_recipe(RECIPES / "urd-diac.yaml") + waived = evaluate(recipe, CORPORA, metrics={"cer": 0.0352}, parity=None) assert [g for g in waived if g.name == "license"][0].passed # an UNWAIVED restricted source still blocks — synthetic registry import yaml as _yaml