|
| 1 | += How we measure |
| 2 | + |
| 3 | +Every quality number we publish is measured, recorded, and can be |
| 4 | +re-derived by anyone. This page explains how. |
| 5 | + |
| 6 | +== Where numbers come from |
| 7 | + |
| 8 | +Each model's accuracy figure comes from a fixed evaluation protocol, |
| 9 | +run on the complete test set, and is recorded in a public results log: |
| 10 | +https://github.com/interscript/interscript-ml/blob/main/docs/RESULTS.md[docs/RESULTS.md]. |
| 11 | +The log records the number, a confidence interval where the protocol |
| 12 | +supports one, and a checksum of the exact training labels used. |
| 13 | + |
| 14 | +When a number turned out to be wrong, we corrected it in public. One |
| 15 | +example: the Arabic model ara-diac-small-2.0 was first published with a |
| 16 | +score of 4.82. Two independent re-measurements of the released files |
| 17 | +agreed on a different value, 5.08, and the original number was |
| 18 | +withdrawn (the correction entry in the results log explains what |
| 19 | +changed and what it affected). |
| 20 | + |
| 21 | +== Re-deriving our results |
| 22 | + |
| 23 | +The pieces are public: |
| 24 | + |
| 25 | +* The benchmark: https://huggingface.co/datasets/Misraj/SadeedDiac-25[SadeedDiac-25] |
| 26 | +* The scoring tool: `pip install interscript-ml-tools[sadeed]` |
| 27 | +* Our raw predictions for every published run: the |
| 28 | + https://github.com/interscript/interscript-ml/releases/tag/frontier-predictions-v1[frontier-predictions-v1] |
| 29 | + release |
| 30 | +* The teacher checkpoints behind the training results: the |
| 31 | + https://github.com/interscript/interscript-ml/releases/tag/teachers-arabic-v1[teachers-arabic-v1] |
| 32 | + release |
| 33 | + |
| 34 | +To re-score one of our runs: |
| 35 | + |
| 36 | +``` |
| 37 | +pip install interscript-ml-tools[sadeed] |
| 38 | +interscript-sadeed-eval score \ |
| 39 | + --preds <predictions file> \ |
| 40 | + --data Misraj/SadeedDiac-25 |
| 41 | +``` |
| 42 | + |
| 43 | +The tool reproduces the published numbers exactly; that is how the |
| 44 | +incorrect 4.82 above was found. |
| 45 | + |
| 46 | +== Cross-runtime correctness |
| 47 | + |
| 48 | +The same model file must produce the same output in TypeScript, |
| 49 | +Python, and Ruby. We check this with a shared corpus of reference |
| 50 | +inputs and outputs (the |
| 51 | +https://github.com/interscript/interscript-ml/releases/tag/golden-v1[golden-v1] |
| 52 | +release), generated from the released artifacts themselves. |
| 53 | + |
| 54 | +The guarantee has a measured boundary. Models stored at full precision |
| 55 | +(fp32, fp16) produce byte-identical output on every machine we tested. |
| 56 | +Quantized models (int8, int4) run faster and smaller, but on different |
| 57 | +CPU types their outputs can differ slightly: tiny numerical |
| 58 | +differences flip decisions that the model is nearly undecided on. For |
| 59 | +those models the guarantee is quality-level, not byte-level, and each |
| 60 | +artifact carries its measured quality difference from the full |
| 61 | +precision version in its metadata. |
| 62 | + |
| 63 | +== Negative results |
| 64 | + |
| 65 | +Not every approach worked. Attempts to close the quality gap between |
| 66 | +the small student models and their teachers by adding more classical |
| 67 | +training text, changing the text mixture, or training on the model's |
| 68 | +own mistakes all failed, with measurements recorded in the results |
| 69 | +log. We publish these alongside the successes because they define what |
| 70 | +the current models are and are not. |
0 commit comments