diff --git a/README.md b/README.md index b56cb4dc..63bbb406 100644 --- a/README.md +++ b/README.md @@ -87,20 +87,20 @@ CER unless stated). | model | task | size | headline metric | |---|---|---|---| -| `ara-diac-2.0` | Arabic diacritization | 2.78 GB fp32 | SadeedDiac-25 DER **2.29%** (beats GLM-5.2 2.69); WikiNews-2024 17.38 WER | -| ~~`ara-diac-news-1.1`~~ | Arabic news register | — | **WITHDRAWN** — artifact lost (never shipped; WO87). `ara-diac-2.0` covers the register | -| `ara-diac-small-2.1` | Arabic, fast tier | 1.42 GB fp32 | fullset DER 4.57 (teacher 2.29) | -| `ara-diac-plane-large-1.0` | Arabic, int8 fast tier | 0.87 GB int8 | DER 2.74 / WER 8.61 | -| `urd-diac-base-1.0` | Urdu diacritization | 1.35 GB fp16 | CER **3.57%** | -| `urd-diac-1.0` | Urdu, small tier | 1.42 GB fp32 | CER 3.74% | -| `urd-g2p-base-1.0` | Urdu G2P | 2.16 GB fp32 | CER 15.65% — **RESEARCH-ONLY** (non-commercial data) | -| `fas-diac-base-1.0` | Persian diacritization | 0.71 GB fp16 | CER **0.603%** row-mean / 0.777% corpus, 82.3% word-acc (CC0 data) | -| `fas-g2p-1.0` | Persian G2P | 2.78 GB fp32 | CER 1.6% | -| `tha-g2p-base-1.0` | Thai G2P | 2.78 GB fp32 | teacher PER 1.25% | -| `tha-g2p-small-1.0` | Thai G2P, int8 | 0.26 GB int8 | PER 2.85% (beam-4 12.06%) | +| `ara-vocalized-2.0` | Arabic diacritization | 2.78 GB fp32 | SadeedDiac-25 DER **2.29%** (beats GLM-5.2 2.69); WikiNews-2024 17.38 WER | +| ~~`ara-diac-news-1.1`~~ | Arabic news register | — | **WITHDRAWN** — artifact lost (never shipped; WO87). `ara-vocalized-2.0` covers the register | +| `ara-vocalized-small-2.1` | Arabic, fast tier | 1.42 GB fp32 | fullset DER 4.57 (teacher 2.29) | +| `ara-vocalized-plane-large-1.0` | Arabic, int8 fast tier | 0.87 GB int8 | DER 2.74 / WER 8.61 | +| `urd-vocalized-base-1.0` | Urdu diacritization | 1.35 GB fp16 | CER **3.57%** | +| `urd-vocalized-1.0` | Urdu, small tier | 1.42 GB fp32 | CER 3.74% | +| `urd-ipa-base-1.0` | Urdu G2P | 2.16 GB fp32 | CER 15.65% — **RESEARCH-ONLY** (non-commercial data) | +| `fas-vocalized-base-1.0` | Persian diacritization | 0.71 GB fp16 | CER **0.603%** row-mean / 0.777% corpus, 82.3% word-acc (CC0 data) | +| `fas-phonemic-1.0` | Persian G2P | 2.78 GB fp32 | CER 1.6% | +| `tha-phonemic-base-1.0` | Thai G2P | 2.78 GB fp32 | teacher PER 1.25% | +| `tha-phonemic-small-1.0` | Thai G2P, int8 | 0.26 GB int8 | PER 2.85% (beam-4 12.06%) | | `khm-latn-1.0` | Khmer → Latin | 1.42 GB fp32 | CER 27.42% / EM 59.66% | -| `heb-diac-plane-2.0` | Hebrew nikud, int8 | 0.42 GB int8 | DER 8.18% | -| `heb-diac-1.1` | Hebrew nikud, fp32 | 2.78 GB fp32 | DER 16.44% | +| `heb-vocalized-plane-2.0` | Hebrew nikud, int8 | 0.42 GB int8 | DER 8.18% | +| `heb-vocalized-1.1` | Hebrew nikud, fp32 | 2.78 GB fp32 | DER 16.44% | Quantized variants (int8/int4/fp16) ship as assets of their base model's release. Hebrew remains data-supply-limited: newer lanes are @@ -128,12 +128,12 @@ models above. Python (`SECRYST_INDEX`) and ruby ```python from interscript_ml import Model # reference runtime (this repo) -m = Model.load("urd-diac-base-1.0") # resolves via the index, verifies sha256 +m = Model.load("urd-vocalized-base-1.0") # resolves via the index, verifies sha256 print(m.translate("کلیدهای پرکینزمانند")) ``` -Artifact notice (2026-10-21): `urd-diac-base-1.0` and -`fas-diac-base-1.0` were re-published with exporter-side fp16→fp32 +Artifact notice (2026-10-21): `urd-vocalized-base-1.0` and +`fas-vocalized-base-1.0` were re-published with exporter-side fp16→fp32 graph-IO normalization — same weights, portable graph boundary (node ONNX Runtime no longer corrupts fp16 bytes; the ruby loader, which lacks Float16 materialization, decodes them). The re-published digests @@ -145,10 +145,10 @@ sha256 verification and must be re-fetched. In training, not shipped: the Arabic r8 noisy-student chain (stage 2), the Khmer lexicon-conditioned arm, and the Thai lexicon-first arm — each ships only after its stage-3 external-benchmark verdict clears -the gates. `urd-g2p-base-1.0` ships but is **research-only** +the gates. `urd-ipa-base-1.0` ships but is **research-only** (non-commercial training data). `models.yaml` also carries -legacy/superseded generations (e.g. `ara-diac-1.0`, `layerdrop`, -`ara-diac-small-1.0/2.0`) that resolve via the index but are not +legacy/superseded generations (e.g. `ara-vocalized-1.0`, `layerdrop`, +`ara-vocalized-small-1.0/2.0`) that resolve via the index but are not recommended for new use; the table above is the recommended set. ## Repositories diff --git a/docs/catalogue/models-catalogue.json b/docs/catalogue/models-catalogue.json index 20154fcb..cf00a497 100644 --- a/docs/catalogue/models-catalogue.json +++ b/docs/catalogue/models-catalogue.json @@ -1,13 +1,46 @@ { "generated_note": "generated from models.yaml + index-v12; regenerate, never edit", + "naming": { + "taxonomy": { + "vocalized": "native script + full diacritics", + "ipa": "narrow IPA (stress, diacritics)", + "phonemic": "broad phoneme-level transcription", + "latn": "orthographic romanization" + }, + "aliases": "old ids resolve via index aliases at the next index tag (WO87)" + }, "models": [ { - "id": "ara-diac-1.0", + "id": "ara-diac-news-1.1", "task": "diacritization", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 2780311342, - "sha256": "9e6d9777fe2474b150450774aaa1c9e8a9051b502b184fde298b91636dcfdac6", + "size_bytes": 2160091218, + "sha256": "2f55e2a3c9e97da3666ef236e8ba31a24399257c9cc448363cc19f96541eb3ba", + "status": "withdrawn", + "metrics": [ + { + "name": "wer_wikinews2024_multiref", + "value": 8.85, + "protocol": "greedy decode, first-alternate protocol, WikiNews-2024 multiref (WO35)", + "anchor": null + }, + { + "name": "der_total_greedy", + "value": 2.84, + "protocol": "greedy decode, first-alternate protocol, WikiNews-2024 multiref (WO35)", + "anchor": null + } + ] + }, + { + "id": "ara-vocalized-1.0", + "task": "diacritization", + "precision": "fp32", + "license": "BSD-3-Clause", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_total_greedy", @@ -21,16 +54,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-2.0", + "id": "ara-vocalized-2.0", "task": "diacritization", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 2780299051, - "sha256": "872c655ec6750bf44e5986f958de26767eafa13f8e0a7c64340bc35fd8a4550e", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_total_greedy", @@ -56,16 +89,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-2.0-int8", + "id": "ara-vocalized-2.0-int8", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 519207340, - "sha256": "7f1d55d43f97564ad62fc14a7e0cabe52c01d8298b747677a75900de748bb6c6", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_total_greedy", @@ -91,16 +124,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-layerdrop-1.0", + "id": "ara-vocalized-layerdrop-1.0", "task": "diacritization", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 1015218371, - "sha256": "8f297bdc0e7eba5160c6ed8a2a437abbd399687fd14f2f2b640a4b4c639a3d16", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_fullset", @@ -114,16 +147,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-layerdrop-1.0-int4", + "id": "ara-vocalized-layerdrop-1.0-int4", "task": "diacritization", "precision": "int4", "license": "BSD-3-Clause", - "size_bytes": 145195702, - "sha256": "352e02105645a6e283e2c3602505bea0e90085b741666fd863e478e4835e7bc9", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_fullset", @@ -137,16 +170,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-layerdrop-1.0-int8", + "id": "ara-vocalized-layerdrop-1.0-int8", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 191603048, - "sha256": "68dcc06cd8861e017c4d4912ce3e1fe057d78b79b0a7b6246ae8603c99930963", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_fullset", @@ -160,16 +193,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-news-1.0", + "id": "ara-vocalized-news-1.0", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 399018923, - "sha256": "e5a52b1530dfa6d6c7ef8970443206ce33af865d0337a58d145945adab33484e", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "wer_wikinews2024_multiref", @@ -189,39 +222,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-news-1.1", - "task": "diacritization", - "precision": "fp32", - "license": "BSD-3-Clause", - "size_bytes": 2160091218, - "sha256": "2f55e2a3c9e97da3666ef236e8ba31a24399257c9cc448363cc19f96541eb3ba", - "metrics": [ - { - "name": "wer_wikinews2024_multiref", - "value": 8.85, - "protocol": "greedy decode, first-alternate protocol, WikiNews-2024 multiref (WO35)", - "anchor": null - }, - { - "name": "der_total_greedy", - "value": 2.84, - "protocol": "greedy decode, first-alternate protocol, WikiNews-2024 multiref (WO35)", - "anchor": null - } - ], - "status": "shipped" - }, - { - "id": "ara-diac-plane-1.0", + "id": "ara-vocalized-plane-1.0", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 219076965, - "sha256": "1310204e36acc4fcbb988e9f9c46cf6422e7ea3860bd467fb469ea0ad4d39ef3", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_total_greedy", @@ -235,16 +245,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-plane-large-1.0", + "id": "ara-vocalized-plane-large-1.0", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 866052488, - "sha256": "a66df2e12ddc935e8ab59836fd45486f17ac40b764c1619c03b2b0e191608a52", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_total_greedy", @@ -264,16 +274,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-small-1.0", + "id": "ara-vocalized-small-1.0", "task": "diacritization", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 1418126835, - "sha256": "8b149beb04294a2e482af876a34ae0fca3e87412606116fae1a376845fd4111a", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_greedy", @@ -299,16 +309,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-small-1.0-int8", + "id": "ara-vocalized-small-1.0-int8", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 256959713, - "sha256": "af247d837bee7e755b5287102cfb715c48dc90c2cf41ec1c41e7238e1a72b678", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_greedy", @@ -334,16 +344,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-small-2.0", + "id": "ara-vocalized-small-2.0", "task": "diacritization", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 1418516306, - "sha256": "d9aa95d0e8fd0d7da80fd2f7dabedf0ac65f55ba984de565d252f5e14906d98c", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_fullset", @@ -357,16 +367,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-small-2.0-int8", + "id": "ara-vocalized-small-2.0-int8", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 264043016, - "sha256": "f4d07acdaf9c18cded97e15e0c5636e6cee90de2fa32c5a373a44c0cc912bf50", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_fullset", @@ -380,16 +390,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-small-2.1", + "id": "ara-vocalized-small-2.1", "task": "diacritization", "precision": "fp32", "license": null, - "size_bytes": 1419756840, - "sha256": "a69918de9f87664fd97cdab3bf68b655966f608211dbeadd7b6fb3f7b03e5ffb", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_fullset", @@ -403,16 +413,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-small-2.1-fp16", + "id": "ara-vocalized-small-2.1-fp16", "task": "diacritization", "precision": "fp16", "license": "BSD-3-Clause", - "size_bytes": 706351903, - "sha256": "395ee72137d1cdfa9cd53bf167ad0d2f5fe5cbf9a5b62f118e0c9e0fa63c972d", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_fullset", @@ -426,16 +436,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-small-2.1-int8", + "id": "ara-vocalized-small-2.1-int8", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 267965657, - "sha256": "9b4e4aad2ab53a8cfbec432a78e27b409376627243aec3fd043f06574552a32b", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_fullset", @@ -449,16 +459,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "ara-diac-small-int8static-2.1", + "id": "ara-vocalized-small-int8static-2.1", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 515362212, - "sha256": "7836bfd5582ad054ee419bfbd45a2b4a87fe8dc91e1f849898428faefd0c95da", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_fullset", @@ -472,33 +482,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" - }, - { - "id": "fas-diac-base-1.0", - "task": "diac", - "precision": "fp16", - "license": "BSD-3-Clause", - "size_bytes": 711254463, - "sha256": "620b31ab96e6d7588d583fa5119406ea7c08506d483cc8ee253b3c479c6d87f0", - "metrics": [ - { - "name": "cer", - "value": 0.603, - "protocol": "greedy decode, 9288-row docs split, row-mean", - "anchor": null - } - ], - "status": "shipped" + ] }, { - "id": "fas-g2p-1.0", + "id": "fas-phonemic-1.0", "task": "g2p", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 2780254270, - "sha256": "b53fd69196127efcc596935d24e135b3c897006872c1646c674e70f3c0d9a0e3", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "cer", @@ -512,16 +505,33 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] + }, + { + "id": "fas-vocalized-base-1.0", + "task": "diac", + "precision": "fp16", + "license": "BSD-3-Clause", + "size_bytes": null, + "sha256": null, + "status": "shipped", + "metrics": [ + { + "name": "cer", + "value": 0.603, + "protocol": "greedy decode, 9288-row docs split, row-mean", + "anchor": null + } + ] }, { - "id": "heb-diac-1.0", + "id": "heb-vocalized-1.0", "task": "diacritization", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 2781139753, - "sha256": "b32fa239e0c56708b6004942de4b9e6e9f265e7cc3828f41d560e96386e20dd8", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_greedy", @@ -535,16 +545,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "heb-diac-1.1", + "id": "heb-vocalized-1.1", "task": "diacritization", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 2780987905, - "sha256": "f0022dde8d06e46e8f08cf0b2f7bbb887a05ed686b90f1d5aa82ca3ef690a0b0", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_greedy", @@ -558,16 +568,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "heb-diac-plane-1.0", + "id": "heb-vocalized-plane-1.0", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 219322007, - "sha256": "dd9ae811c60c38f28ead57bdefa022b281867401ee13e38563b990eaf7f81f95", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_total_greedy", @@ -575,16 +585,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "heb-diac-plane-2.0", + "id": "heb-vocalized-plane-2.0", "task": "diacritization", "precision": "int8", "license": "BSD-3-Clause", - "size_bytes": 415901226, - "sha256": "9c8f0432294ebae6abc847ddb79572c1ab979f4851f03d44a9bb6495ba767a9e", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_total_greedy", @@ -592,16 +602,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "heb-diac-small-1.0", + "id": "heb-vocalized-small-1.0", "task": "diacritization", "precision": "fp32", "license": null, - "size_bytes": 1418663344, - "sha256": "905c53873d5a62bbe6252c6ec0ecef5f37e96e78cb01e8cd99b6b24c4d4d74ad", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "der_teacher_greedy", @@ -615,8 +625,7 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { "id": "khm-latn-1.0", @@ -625,6 +634,7 @@ "license": "BSD-3-Clause", "size_bytes": 1418009977, "sha256": "55993d473a2ed9489058779cad7e115db05e4020085b71616468cfae4f2f65cb", + "status": "shipped", "metrics": [ { "name": "cer", @@ -638,16 +648,33 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] + }, + { + "id": "tha-phonemic-1.0", + "task": "g2p", + "precision": "fp32", + "license": "BSD-3-Clause", + "size_bytes": null, + "sha256": null, + "status": "release-candidate", + "metrics": [ + { + "name": "per", + "value": 19.29, + "protocol": "phoneme-token PER, clean v1 test split (3,210 rows), single-row greedy", + "anchor": null + } + ] }, { - "id": "tha-g2p-base-1.0", + "id": "tha-phonemic-base-1.0", "task": "g2p", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 2781174343, - "sha256": "f341a5868867a9847d3f897d1fcc4d1d63b9a59b8913871bcf4ecab48f4fa895", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "per_teacher", @@ -661,16 +688,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "tha-g2p-small-1.0", + "id": "tha-phonemic-small-1.0", "task": "g2p", "precision": "int8", "license": null, - "size_bytes": 257468517, - "sha256": "f2cfa93a42d98aabf08fdc82dfc6bd1574e21993f36558aa581fbe29e0588a94", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "per_teacher", @@ -690,16 +717,16 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "tha-g2p-small-1.0-int4", + "id": "tha-phonemic-small-1.0-int4", "task": "g2p", "precision": "int4", "license": "BSD-3-Clause", - "size_bytes": 201958073, - "sha256": "e5d12a3d65c6ac39fa08f52c975c99ff7a51c3e7b7aca7fbb461d2de2345e4cb", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "per_teacher", @@ -719,105 +746,87 @@ "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "tha-phonemic-1.0", + "id": "urd-ipa-1.0", "task": "g2p", "precision": "fp32", "license": "BSD-3-Clause", "size_bytes": null, "sha256": null, - "metrics": [ - { - "name": "per", - "value": 19.29, - "protocol": "phoneme-token PER, clean v1 test split (3,210 rows), single-row greedy", - "anchor": null - } - ], - "status": "release-candidate" - }, - { - "id": "urd-diac-1.0", - "task": "diacritization", - "precision": "fp32", - "license": "BSD-3-Clause", - "size_bytes": 1417851421, - "sha256": "c299ea44a4da4851a52283f8e42d2fb6f8c7a9c443ba7eb0270f97372e10b8ea", + "status": "shipped", "metrics": [ { "name": "cer", - "value": 3.74, + "value": 14.77, "protocol": null, "anchor": null - } - ], - "status": "shipped" - }, - { - "id": "urd-diac-base-1.0", - "task": "diacritization", - "precision": "fp16", - "license": "BSD-3-Clause", - "size_bytes": 1347488093, - "sha256": "6818469cbeeb58b822279c06e921669e4e79dc174d0b54c37a1be34687068252", - "metrics": [ + }, { - "name": "cer", - "value": 3.57, + "name": "em", + "value": 33.6, "protocol": null, "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "urd-g2p-1.0", + "id": "urd-ipa-base-1.0", "task": "g2p", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 1418039605, - "sha256": "9f0a248c7116aa7f6b9ac125fb9684a3556f3b8ce8b64567c05a5e7e7a018ebf", + "size_bytes": null, + "sha256": null, + "status": "research-only", "metrics": [ { "name": "cer", - "value": 14.77, - "protocol": null, + "value": 15.65, + "protocol": "greedy decode, full 12699-row test split, row-mean", "anchor": null }, { - "name": "em", - "value": 33.6, - "protocol": null, + "name": "cer_normalized", + "value": 10.75, + "protocol": "greedy decode, full 12699-row test split, row-mean", "anchor": null } - ], - "status": "shipped" + ] }, { - "id": "urd-g2p-base-1.0", - "task": "g2p", + "id": "urd-vocalized-1.0", + "task": "diacritization", "precision": "fp32", "license": "BSD-3-Clause", - "size_bytes": 2159598918, - "sha256": "d3e35dd435bf18fedec03d4a15bba097fca743737b729312fa08f4fdcac24282", + "size_bytes": null, + "sha256": null, + "status": "shipped", "metrics": [ { "name": "cer", - "value": 15.65, - "protocol": "greedy decode, full 12699-row test split, row-mean", + "value": 3.74, + "protocol": null, "anchor": null - }, + } + ] + }, + { + "id": "urd-vocalized-base-1.0", + "task": "diacritization", + "precision": "fp16", + "license": "BSD-3-Clause", + "size_bytes": null, + "sha256": null, + "status": "shipped", + "metrics": [ { - "name": "cer_normalized", - "value": 10.75, - "protocol": "greedy decode, full 12699-row test split, row-mean", + "name": "cer", + "value": 3.57, + "protocol": null, "anchor": null } - ], - "status": "research-only" + ] } ] } diff --git a/docs/naming/README.md b/docs/naming/README.md index caa67ac5..8141b795 100644 --- a/docs/naming/README.md +++ b/docs/naming/README.md @@ -27,3 +27,21 @@ target-accurate naming. 3. **ara-diac-small-1.0-int8 output corruption**: spurious 'F' tokens ('...عَلَيْكُمْFمْF') — quantization-era artifact; superseded by the 2.x line anyway. + +## The final MECE taxonomy (2026-10-24, owner-adopted) + +The target tag is one of four, mutually exclusive by output +inventory, collectively exhaustive over the zoo: + +| tag | output inventory | families | +|---|---|---| +| `vocalized` | native script + full diacritics | ara, urd, fas, heb (the diac lines) | +| `ipa` | narrow IPA (stress, phonetic diacritics) | urd g2p line | +| `phonemic` | broad phoneme-level transcription | fas (Latin letters), tha (IPA glyphs + tone contours) | +| `latn` | orthographic romanization | khm | + +Name shape: `{lang}-{target}[-{tier}]-{major.minor}`. Tiers +(quantization: int8/int4/fp16; architecture: layerdrop/plane; +register: news; size: base/small) are orthogonal accurate dimensions. +Old ids remain resolvable through index aliases at the next index tag; +`renames:` in models.yaml is the authoritative old→new map. diff --git a/models.yaml b/models.yaml index 3688bd66..569c6c24 100644 --- a/models.yaml +++ b/models.yaml @@ -3,12 +3,37 @@ version: 1 # WO87 target-accurate renames (evidence: docs/naming/target-documentation.json). # Old ids stay resolvable via index aliases at the next index tag (zero breakage). renames: - urd-g2p-1.0: urd-ipa-1.0 # narrow IPA with stress (2026-10-24 decode evidence) - urd-g2p-base-1.0: urd-ipa-base-1.0 # narrow IPA with stress - fas-g2p-1.0: fas-phonemic-1.0 # Latin-letter phonemic (salAm) - tha-g2p-base-1.0: tha-phonemic-base-1.0 # toned phonemic, dot-separated + ara-diac-1.0: ara-vocalized-1.0 + ara-diac-2.0: ara-vocalized-2.0 + ara-diac-2.0-int8: ara-vocalized-2.0-int8 + ara-diac-layerdrop-1.0: ara-vocalized-layerdrop-1.0 + ara-diac-layerdrop-1.0-int4: ara-vocalized-layerdrop-1.0-int4 + ara-diac-layerdrop-1.0-int8: ara-vocalized-layerdrop-1.0-int8 + ara-diac-news-1.0: ara-vocalized-news-1.0 + ara-diac-plane-1.0: ara-vocalized-plane-1.0 + ara-diac-plane-large-1.0: ara-vocalized-plane-large-1.0 + ara-diac-small-1.0: ara-vocalized-small-1.0 + ara-diac-small-1.0-int8: ara-vocalized-small-1.0-int8 + ara-diac-small-2.0: ara-vocalized-small-2.0 + ara-diac-small-2.0-int8: ara-vocalized-small-2.0-int8 + ara-diac-small-2.1: ara-vocalized-small-2.1 + ara-diac-small-2.1-fp16: ara-vocalized-small-2.1-fp16 + ara-diac-small-2.1-int8: ara-vocalized-small-2.1-int8 + ara-diac-small-int8static-2.1: ara-vocalized-small-int8static-2.1 + fas-diac-base-1.0: fas-vocalized-base-1.0 + fas-g2p-1.0: fas-phonemic-1.0 + heb-diac-1.0: heb-vocalized-1.0 + heb-diac-1.1: heb-vocalized-1.1 + heb-diac-plane-1.0: heb-vocalized-plane-1.0 + heb-diac-plane-2.0: heb-vocalized-plane-2.0 + heb-diac-small-1.0: heb-vocalized-small-1.0 + tha-g2p-base-1.0: tha-phonemic-base-1.0 tha-g2p-small-1.0: tha-phonemic-small-1.0 tha-g2p-small-1.0-int4: tha-phonemic-small-1.0-int4 + urd-diac-1.0: urd-vocalized-1.0 + urd-diac-base-1.0: urd-vocalized-base-1.0 + urd-g2p-1.0: urd-ipa-1.0 + urd-g2p-base-1.0: urd-ipa-base-1.0 models: tha-phonemic-1.0: @@ -57,7 +82,7 @@ models: samples: 895 cer_delta: 0.0 license: BSD-3-Clause - urd-g2p-1.0: + urd-ipa-1.0: task: g2p scripts: - Arab @@ -78,7 +103,7 @@ models: samples: 12699 cer_delta: 0.0 license: BSD-3-Clause - urd-diac-1.0: + urd-vocalized-1.0: task: diacritization scripts: - Arab @@ -96,7 +121,7 @@ models: samples: 11940 cer_delta: 0.0 license: BSD-3-Clause - heb-diac-1.0: + heb-vocalized-1.0: task: diacritization scripts: - Hebr @@ -123,7 +148,7 @@ models: samples: 600 cer_delta: 0.0 license: BSD-3-Clause - tha-g2p-base-1.0: + tha-phonemic-base-1.0: task: g2p scripts: - Thai @@ -150,7 +175,7 @@ models: samples: 1219 cer_delta: 0.0 license: BSD-3-Clause - tha-g2p-small-1.0: + tha-phonemic-small-1.0: task: g2p scripts: - Thai @@ -173,14 +198,14 @@ models: parity: samples: 1219 cer_delta: 0.0803 - tha-g2p-small-1.0-int4: + tha-phonemic-small-1.0-int4: task: g2p scripts: - Thai - IPA precision: int4 - filename: tha-g2p-small-1.0-int4.zip - url: https://github.com/interscript/interscript-models/releases/download/tha-g2p-small-1.0/tha-g2p-small-1.0-int4.zip + filename: tha-phonemic-small-1.0-int4.zip + url: https://github.com/interscript/interscript-models/releases/download/tha-g2p-small-1.0/tha-phonemic-small-1.0-int4.zip sha256: e5d12a3d65c6ac39fa08f52c975c99ff7a51c3e7b7aca7fbb461d2de2345e4cb size: 201958073 metrics: @@ -197,7 +222,7 @@ models: samples: 600 cer_delta: 0.0734 license: BSD-3-Clause - heb-diac-small-1.0: + heb-vocalized-small-1.0: task: diacritization scripts: - Hebr @@ -217,7 +242,7 @@ models: parity: samples: 1864 cer_delta: 0.0 - fas-g2p-1.0: + fas-phonemic-1.0: task: g2p scripts: - Arab @@ -244,7 +269,7 @@ models: samples: 1000 cer_delta: 0.0 license: BSD-3-Clause - ara-diac-small-1.0: + ara-vocalized-small-1.0: task: diacritization scripts: - Arab @@ -271,7 +296,7 @@ models: samples: 800 cer_delta: 0.0 license: BSD-3-Clause - heb-diac-1.1: + heb-vocalized-1.1: task: diacritization scripts: - Hebr @@ -298,7 +323,7 @@ models: samples: 500 cer_delta: 0.0 license: BSD-3-Clause - ara-diac-1.0: + ara-vocalized-1.0: task: diacritization scripts: - Arab @@ -325,14 +350,14 @@ models: samples: 500 cer_delta: 0.0 license: BSD-3-Clause - ara-diac-small-1.0-int8: + ara-vocalized-small-1.0-int8: task: diacritization scripts: - Arab - Arab precision: int8 - filename: ara-diac-small-1.0-int8.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-small-1.0/ara-diac-small-1.0-int8.zip + filename: ara-vocalized-small-1.0-int8.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-small-1.0/ara-vocalized-small-1.0-int8.zip sha256: af247d837bee7e755b5287102cfb715c48dc90c2cf41ec1c41e7238e1a72b678 size: 256959713 metrics: @@ -352,7 +377,7 @@ models: samples: 800 cer_delta: 0.0 license: BSD-3-Clause - ara-diac-small-2.0: + ara-vocalized-small-2.0: task: diacritization scripts: - Arab @@ -373,14 +398,14 @@ models: samples: 600 cer_delta: 0.1187 license: BSD-3-Clause - ara-diac-small-2.0-int8: + ara-vocalized-small-2.0-int8: task: diacritization scripts: - Arab - Arab precision: int8 - filename: ara-diac-small-2.0-int8.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-small-2.0/ara-diac-small-2.0-int8.zip + filename: ara-vocalized-small-2.0-int8.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-small-2.0/ara-vocalized-small-2.0-int8.zip sha256: f4d07acdaf9c18cded97e15e0c5636e6cee90de2fa32c5a373a44c0cc912bf50 size: 264043016 metrics: @@ -394,7 +419,7 @@ models: samples: 600 cer_delta: 0.1393 license: BSD-3-Clause - ara-diac-2.0: + ara-vocalized-2.0: task: diacritization scripts: - Arab @@ -427,14 +452,14 @@ models: samples: 600 cer_delta: 0.0903 license: BSD-3-Clause - ara-diac-2.0-int8: + ara-vocalized-2.0-int8: task: diacritization scripts: - Arab - Arab precision: int8 - filename: ara-diac-2.0-int8.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-2.0/ara-diac-2.0-int8.zip + filename: ara-vocalized-2.0-int8.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-2.0/ara-vocalized-2.0-int8.zip sha256: 7f1d55d43f97564ad62fc14a7e0cabe52c01d8298b747677a75900de748bb6c6 size: 519207340 metrics: @@ -454,7 +479,7 @@ models: samples: 600 cer_delta: 0.0947 license: BSD-3-Clause - ara-diac-small-2.1: + ara-vocalized-small-2.1: task: diacritization scripts: - Arab @@ -474,14 +499,14 @@ models: parity: samples: 2480 cer_delta: 0.0714 - ara-diac-small-2.1-int8: + ara-vocalized-small-2.1-int8: task: diacritization scripts: - Arab - Arab precision: int8 - filename: ara-diac-small-2.1-int8.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-small-2.1/ara-diac-small-2.1-int8.zip + filename: ara-vocalized-small-2.1-int8.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-small-2.1/ara-vocalized-small-2.1-int8.zip sha256: 9b4e4aad2ab53a8cfbec432a78e27b409376627243aec3fd043f06574552a32b size: 267965657 metrics: @@ -495,7 +520,7 @@ models: samples: 2480 cer_delta: 0.0857 license: BSD-3-Clause - ara-diac-layerdrop-1.0: + ara-vocalized-layerdrop-1.0: task: diacritization scripts: - Arab @@ -516,14 +541,14 @@ models: samples: 2480 cer_delta: 0.0632 license: BSD-3-Clause - ara-diac-layerdrop-1.0-int8: + ara-vocalized-layerdrop-1.0-int8: task: diacritization scripts: - Arab - Arab precision: int8 - filename: ara-diac-layerdrop-1.0-int8.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-layerdrop-1.0/ara-diac-layerdrop-1.0-int8.zip + filename: ara-vocalized-layerdrop-1.0-int8.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-layerdrop-1.0/ara-vocalized-layerdrop-1.0-int8.zip sha256: 68dcc06cd8861e017c4d4912ce3e1fe057d78b79b0a7b6246ae8603c99930963 size: 191603048 metrics: @@ -537,14 +562,14 @@ models: samples: 2480 cer_delta: 0.0538 license: BSD-3-Clause - ara-diac-layerdrop-1.0-int4: + ara-vocalized-layerdrop-1.0-int4: task: diacritization scripts: - Arab - Arab precision: int4 - filename: ara-diac-layerdrop-1.0-int4.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-layerdrop-1.0/ara-diac-layerdrop-1.0-int4.zip + filename: ara-vocalized-layerdrop-1.0-int4.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-layerdrop-1.0/ara-vocalized-layerdrop-1.0-int4.zip sha256: 352e02105645a6e283e2c3602505bea0e90085b741666fd863e478e4835e7bc9 size: 145195702 metrics: @@ -558,14 +583,14 @@ models: samples: 2480 cer_delta: 0.0589 license: BSD-3-Clause - ara-diac-small-2.1-fp16: + ara-vocalized-small-2.1-fp16: task: diacritization scripts: - Arab - Arab precision: fp16 - filename: ara-diac-small-2.1-fp16.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-small-2.1/ara-diac-small-2.1-fp16.zip + filename: ara-vocalized-small-2.1-fp16.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-small-2.1/ara-vocalized-small-2.1-fp16.zip sha256: 395ee72137d1cdfa9cd53bf167ad0d2f5fe5cbf9a5b62f118e0c9e0fa63c972d size: 706351903 metrics: @@ -579,7 +604,7 @@ models: samples: 2480 cer_delta: 0.0714 license: BSD-3-Clause - ara-diac-small-int8static-2.1: + ara-vocalized-small-int8static-2.1: task: diacritization scripts: - Arab @@ -600,15 +625,15 @@ models: samples: 2480 cer_delta: 0.1038 license: BSD-3-Clause - ara-diac-plane-1.0: + ara-vocalized-plane-1.0: task: diacritization scripts: - Arab - Arab kind: plane precision: int8 - filename: ara-diac-plane-1.0.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-plane-1.0/ara-diac-plane-1.0.zip + filename: ara-vocalized-plane-1.0.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-plane-1.0/ara-vocalized-plane-1.0.zip sha256: 1310204e36acc4fcbb988e9f9c46cf6422e7ea3860bd467fb469ea0ad4d39ef3 size: 219076965 metrics: @@ -619,15 +644,15 @@ models: value: 2.2149 source: interscript/interscript-models docs/RESULTS.md#run-018-plane-v2 license: BSD-3-Clause - ara-diac-plane-large-1.0: + ara-vocalized-plane-large-1.0: task: diacritization scripts: - Arab - Arab kind: plane precision: int8 - filename: ara-diac-plane-large-1.0.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-plane-large-1.0/ara-diac-plane-large-1.0.zip + filename: ara-vocalized-plane-large-1.0.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-plane-large-1.0/ara-vocalized-plane-large-1.0.zip sha256: a66df2e12ddc935e8ab59836fd45486f17ac40b764c1619c03b2b0e191608a52 size: 866052488 metrics: @@ -641,15 +666,15 @@ models: value: 8.6083 source: interscript/interscript-models docs/RESULTS.md#run-019-epoch-2--27397-second-epoch-closes-a-third-of-the-gap-sota-gate-still-open-2026-10-05 license: BSD-3-Clause - ara-diac-news-1.0: + ara-vocalized-news-1.0: task: diacritization scripts: - Arab - Arab kind: imf-v1 precision: int8 - filename: ara-diac-news-1.0.zip - url: https://github.com/interscript/interscript-models/releases/download/ara-diac-news-1.0/ara-diac-news-1.0.zip + filename: ara-vocalized-news-1.0.zip + url: https://github.com/interscript/interscript-models/releases/download/ara-diac-news-1.0/ara-vocalized-news-1.0.zip sha256: e5a52b1530dfa6d6c7ef8970443206ce33af865d0337a58d145945adab33484e size: 399018923 metrics: @@ -663,15 +688,15 @@ models: value: 5.4814 source: interscript/interscript-models docs/RESULTS.md#wo35--the-alternate-format-scoring-artifact-ood-corrects-1003--410156-2026-10-10 license: BSD-3-Clause - heb-diac-plane-1.0: + heb-vocalized-plane-1.0: task: diacritization scripts: - Hebr - Hebr kind: plane precision: int8 - filename: heb-diac-plane-1.0.zip - url: https://github.com/interscript/interscript-models/releases/download/heb-diac-plane-1.0/heb-diac-plane-1.0.zip + filename: heb-vocalized-plane-1.0.zip + url: https://github.com/interscript/interscript-models/releases/download/heb-diac-plane-1.0/heb-vocalized-plane-1.0.zip sha256: dd9ae811c60c38f28ead57bdefa022b281867401ee13e38563b990eaf7f81f95 size: 219322007 metrics: @@ -679,15 +704,15 @@ models: value: 12.48 source: interscript/interscript-models docs/RESULTS.md#run-021-heb-plane--1248-nakdimon-der-the-plane-family-generalizes-seq2seq-student-beaten-at-396pp-2026-10-07 license: BSD-3-Clause - heb-diac-plane-2.0: + heb-vocalized-plane-2.0: task: diacritization scripts: - Hebr - Hebr kind: plane precision: int8 - filename: heb-diac-plane-2.0.zip - url: https://github.com/interscript/interscript-models/releases/download/heb-diac-plane-2.0/heb-diac-plane-2.0.zip + filename: heb-vocalized-plane-2.0.zip + url: https://github.com/interscript/interscript-models/releases/download/heb-diac-plane-2.0/heb-vocalized-plane-2.0.zip sha256: 9c8f0432294ebae6abc847ddb79572c1ab979f4851f03d44a9bb6495ba767a9e size: 415901226 metrics: @@ -695,7 +720,7 @@ models: value: 8.18 source: interscript/interscript-models docs/RESULTS.md#run-022-heb-plane-base--818-der-at-the-artifact-level-gate-cleared-hebrew--430pp-2026-10-07 license: BSD-3-Clause - urd-g2p-base-1.0: + urd-ipa-base-1.0: task: g2p scripts: - Arab @@ -752,7 +777,7 @@ models: 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: + urd-vocalized-base-1.0: task: diacritization scripts: - Arab @@ -773,7 +798,7 @@ models: decode_ms_per_row: 6000 decode_env: hf-cpu-basic (run-081-bench-decode-2, 2026-10-23; measured median 4158, 12 rows x 3 repeats) license: BSD-3-Clause - fas-diac-base-1.0: + fas-vocalized-base-1.0: task: diac scripts: - Arab diff --git a/src/api/model_resolution.py b/src/api/model_resolution.py index 18074874..baa40e4e 100644 --- a/src/api/model_resolution.py +++ b/src/api/model_resolution.py @@ -3,8 +3,8 @@ when the volume carries it, falling back to the precision convention (``{id}-{precision}.zip``) and then ``{id}-fp32.zip`` — volume copies have historically landed under convention names even when the release -artifact uses another name (heb-diac-1.1 ships as heb.zip but the -volume copy is heb-diac-1.1-fp32.zip). +artifact uses another name (heb-vocalized-1.1 ships as heb.zip but the +volume copy is heb-vocalized-1.1-fp32.zip). Callers pass the volume listing; candidate names are built server-side and matched by equality only — user input never touches path diff --git a/src/imf/export.py b/src/imf/export.py index 5c2fc0bc..206eab18 100644 --- a/src/imf/export.py +++ b/src/imf/export.py @@ -308,7 +308,7 @@ def quantize_int8( DynamicQuantizeLinear buffers. nodes_to_exclude keeps the logits-producing MatMul (the tied head) in - fp32 — measured on heb-diac-1.1 (E1, docs/EXPERIMENTS.md): quantizing + fp32 — measured on heb-vocalized-1.1 (E1, docs/EXPERIMENTS.md): quantizing the node that computes argmax moves the decision boundary directly — 9.34% of positions flip (80% at confident margins); keeping the head fp32 cuts that to 0.26%, all near-tie, at +0.4% artifact size. diff --git a/tests/test_imf_export.py b/tests/test_imf_export.py index a834bfa3..676fe37e 100644 --- a/tests/test_imf_export.py +++ b/tests/test_imf_export.py @@ -139,7 +139,7 @@ def test_fp16_smaller_than_fp32(zips: dict[str, Path]) -> None: def test_int8_keeps_head_matmul_in_fp32(zips: dict[str, Path]) -> None: """The logits-producing MatMul (the tied head) must survive int8 quantization unconverted — quantizing it moves argmax directly - (heb-diac-1.1: 9.34% confident-position flips; head-fp32 fixes it, + (heb-vocalized-1.1: 9.34% confident-position flips; head-fp32 fixes it, E1 in docs/EXPERIMENTS.md).""" import onnx diff --git a/tests/test_model_card.py b/tests/test_model_card.py index e17a423a..22772793 100644 --- a/tests/test_model_card.py +++ b/tests/test_model_card.py @@ -11,7 +11,7 @@ ENTRY = { "task": "diacritization", "precision": "fp32", - "filename": "ara-diac-2.0-fp32.zip", + "filename": "ara-vocalized-2.0-fp32.zip", "size": 2780299051, "metrics": [ {"name": "der_total_greedy", "value": 2.2864, @@ -21,47 +21,47 @@ ], "license": "BSD-3-Clause", } -VARIANTS = ["ara-diac-2.0-int8"] +VARIANTS = ["ara-vocalized-2.0-int8"] class TestHfRepo(unittest.TestCase): def test_repo_is_org_plus_index_id(self): - self.assertEqual(hf_repo_for("ara-diac-2.0"), "interscript/ara-diac-2.0") + self.assertEqual(hf_repo_for("ara-vocalized-2.0"), "interscript/ara-vocalized-2.0") def test_variant_ids_keep_their_own_repo(self): - self.assertEqual(hf_repo_for("ara-diac-small-2.1-int8"), - "interscript/ara-diac-small-2.1-int8") + self.assertEqual(hf_repo_for("ara-vocalized-small-2.1-int8"), + "interscript/ara-vocalized-small-2.1-int8") class TestRenderCard(unittest.TestCase): def test_frontmatter_fields(self): - card = render_card("ara-diac-2.0", ENTRY, VARIANTS, body="## Benchmark\n\n2.29% DER.") + card = render_card("ara-vocalized-2.0", ENTRY, VARIANTS, body="## Benchmark\n\n2.29% DER.") self.assertIn("license: bsd-3-clause", card) self.assertIn("language: ar", card) self.assertIn("inference: false", card) self.assertIn("secryst", card) def test_metrics_table_with_provenance(self): - card = render_card("ara-diac-2.0", ENTRY, VARIANTS, body="") + card = render_card("ara-vocalized-2.0", ENTRY, VARIANTS, body="") self.assertIn("| der_total_greedy | 2.2864 |", card) self.assertIn("rababa/docs/RESULTS.md#r7-verdict", card) def test_task_and_size(self): - card = render_card("ara-diac-2.0", ENTRY, VARIANTS, body="") + card = render_card("ara-vocalized-2.0", ENTRY, VARIANTS, body="") self.assertIn("diacritization", card) self.assertIn("2.59 GiB", card) def test_variants_listed(self): - card = render_card("ara-diac-2.0", ENTRY, VARIANTS, body="") - self.assertIn("ara-diac-2.0-int8", card) + card = render_card("ara-vocalized-2.0", ENTRY, VARIANTS, body="") + self.assertIn("ara-vocalized-2.0-int8", card) def test_body_included(self): - card = render_card("ara-diac-2.0", ENTRY, VARIANTS, body="## Benchmark\n\n2.29% DER.") + card = render_card("ara-vocalized-2.0", ENTRY, VARIANTS, body="## Benchmark\n\n2.29% DER.") self.assertIn("## Benchmark", card) self.assertIn("2.29% DER.", card) def test_language_mapping_per_task_language(self): - card = render_card("tha-g2p-base-1.0", {**ENTRY, "task": "g2p"}, [], body="") + card = render_card("tha-phonemic-base-1.0", {**ENTRY, "task": "g2p"}, [], body="") self.assertIn("language: th", card) diff --git a/tests/test_model_resolution.py b/tests/test_model_resolution.py index c72bc8aa..5e1719ca 100644 --- a/tests/test_model_resolution.py +++ b/tests/test_model_resolution.py @@ -12,29 +12,29 @@ def test_exact_index_filename_wins(): - volume = ["ara-diac-small-1.0-fp32.zip", "ara-diac-small-1.0-int8.zip"] - assert resolve_zip_filename("ara-diac-small-1.0-int8", INDEX, volume) == ( - "ara-diac-small-1.0-int8.zip" + volume = ["ara-vocalized-small-1.0-fp32.zip", "ara-vocalized-small-1.0-int8.zip"] + assert resolve_zip_filename("ara-vocalized-small-1.0-int8", INDEX, volume) == ( + "ara-vocalized-small-1.0-int8.zip" ) def test_precision_fallback_when_volume_name_differs_from_index(): - # heb-diac-1.1 ships as heb.zip on GH Releases but the volume copy - # landed as heb-diac-1.1-fp32.zip - volume = ["heb-diac-1.1-fp32.zip", "heb-diac-1.1-fp16.zip"] - assert resolve_zip_filename("heb-diac-1.1", INDEX, volume) == "heb-diac-1.1-fp32.zip" + # heb-vocalized-1.1 ships as heb.zip on GH Releases but the volume copy + # landed as heb-vocalized-1.1-fp32.zip + volume = ["heb-vocalized-1.1-fp32.zip", "heb-vocalized-1.1-fp16.zip"] + assert resolve_zip_filename("heb-vocalized-1.1", INDEX, volume) == "heb-vocalized-1.1-fp32.zip" def test_int4_variant_resolves(): - volume = ["tha-g2p-small-1.0-int8.zip", "tha-g2p-small-1.0-int4.zip"] - assert resolve_zip_filename("tha-g2p-small-1.0-int4", INDEX, volume) == ( - "tha-g2p-small-1.0-int4.zip" + volume = ["tha-phonemic-small-1.0-int8.zip", "tha-phonemic-small-1.0-int4.zip"] + assert resolve_zip_filename("tha-phonemic-small-1.0-int4", INDEX, volume) == ( + "tha-phonemic-small-1.0-int4.zip" ) def test_fp32_convention_fallback(): - volume = ["ara-diac-1.0-fp32.zip"] - assert resolve_zip_filename("ara-diac-1.0", INDEX, volume) == "ara-diac-1.0-fp32.zip" + volume = ["ara-vocalized-1.0-fp32.zip"] + assert resolve_zip_filename("ara-vocalized-1.0", INDEX, volume) == "ara-vocalized-1.0-fp32.zip" def test_unknown_id_raises_keyerror(): diff --git a/tests/test_pipeline_conformance.py b/tests/test_pipeline_conformance.py index b35bd729..533636f2 100644 --- a/tests/test_pipeline_conformance.py +++ b/tests/test_pipeline_conformance.py @@ -24,7 +24,7 @@ ) VECTORS = { - "model": "urd-diac-base-1.0", + "model": "urd-vocalized-base-1.0", "decode": {"mode": "single-row-greedy"}, "vectors": [ {"src": "سلام", "out": "سَلَام"}, @@ -37,7 +37,7 @@ def test_validate_vectors_accepts_good(tmp_path: Path) -> None: p = tmp_path / "v.json" p.write_text(json.dumps(VECTORS), encoding="utf-8") v = load_vectors(p) - assert v["model"] == "urd-diac-base-1.0" + assert v["model"] == "urd-vocalized-base-1.0" assert validate_vectors(v) == [] diff --git a/tests/test_publish_model.py b/tests/test_publish_model.py index e931746a..c55e4601 100644 --- a/tests/test_publish_model.py +++ b/tests/test_publish_model.py @@ -17,13 +17,13 @@ def test_filename_from_metadata() -> None: - meta = {"id": "ara-diac-layerdrop-1.0", "precision": "int4"} - assert canonical_filename(meta) == "ara-diac-layerdrop-1.0-int4.zip" + meta = {"id": "ara-vocalized-layerdrop-1.0", "precision": "int4"} + assert canonical_filename(meta) == "ara-vocalized-layerdrop-1.0-int4.zip" def test_staging_path_cannot_leak() -> None: # a /tmp staging name like ld-int4.zip must never become the # published filename — the runtime resolver matches volume files # by the canonical pattern - meta = {"id": "ara-diac-layerdrop-1.0", "precision": "fp32"} + meta = {"id": "ara-vocalized-layerdrop-1.0", "precision": "fp32"} assert canonical_filename(meta) != "ld-fp32.zip" diff --git a/tools/bench_decode.py b/tools/bench_decode.py index 859496a7..2faecfee 100644 --- a/tools/bench_decode.py +++ b/tools/bench_decode.py @@ -39,7 +39,7 @@ def main() -> None: vectors_path = args.vectors if vectors_path is None: # vector files predate full version suffixes - # (urd-diac-base-vectors.json for urd-diac-base-1.0) + # (urd-diac-base-vectors.json for urd-vocalized-base-1.0) matches = sorted((REPO / "conformance").glob( f"{args.model_id.split('-')[0]}*{args.model_id.split('-')[1]}*-vectors.json")) vectors_path = matches[0] if matches else (