Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions src/pages/ml.astro
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,50 @@ const clientModels = [
</div>
</section>

<!-- ════════════════════════════════════════════════════════════════
THE INSTRUMENT — why the numbers can be trusted
════════════════════════════════════════════════════════════════ -->
<section class="section" id="instrument">
<div class="container contract-grid">
<div>
<p class="eyebrow">The instrument</p>
<h2>Every trap we fell into, now a rule.</h2>
<p class="section-deck">
Measurement discipline isn't ceremony — each of these rules exists because the naive
version produced a wrong number we nearly shipped. They are why a number on this page
means the same thing next month, on another machine.
</p>
</div>
<ul class="contract-facts instrument-facts">
<li>
<strong>Full evaluation sets, only.</strong> Five measured instances where evaluating
on a domain-neighborhood subset overstated student quality — worst case 3.2× (a claimed
0.72pp gap that was 2.28pp on the full set).
</li>
<li>
<strong>The decode protocol is part of the number.</strong> Beam-4 with length
normalization inflated a student's PER 4.2× over greedy on the same artifact (12.06
vs 2.85) — every published row names its decode.
</li>
<li>
<strong>Identical numbers must mean identical data.</strong> Label provenance is
content-hashed into every run record; a reproduced figure is only evidence of
reproducibility when the input pipeline is versioned.
</li>
<li>
<strong>CIs, not point estimates.</strong> Paired sentence-level bootstrap on every
verdict, deterministic seed — deltas come with their intervals.
</li>
<li>
<strong>Checksummed end to end.</strong> The index ships with a sha256 sidecar, every
zip member is verified on load, and a margins gate watches what the CER gate cannot
see — silent quantization flips (keeping the output head in fp32 cut them 36× at
+0.4% size).
</li>
</ul>
</div>
</section>

<!-- ════════════════════════════════════════════════════════════════
THE CONTRACT — IMF v1
════════════════════════════════════════════════════════════════ -->
Expand Down
14 changes: 13 additions & 1 deletion src/pages/neural.astro
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ import Base from "../layouts/Base.astro"
<option value="ara-diac-small-1.0-int8">Arabic diacritization — 1.0 (int8, 264 MB)</option>
<option value="tha-g2p-small-1.0">Thai G2P — small (int8, 202 MB)</option>
</select>
<p class="tier-hint">
Full-set numbers for every tier — the leaderboard and the client ladder — on
<a href="/ml#leaderboard">the neural layer page</a>.
</p>

<label for="input">Input</label>
<textarea id="input" rows="4" dir="auto">السلام عليكم ورحمة الله</textarea>
Expand All @@ -41,6 +45,14 @@ import Base from "../layouts/Base.astro"
</Base>

<style>
.tier-hint {
font-size: 0.8125rem;
opacity: 0.72;
margin: 0.4rem 0 1.25rem;
}
.tier-hint a {
text-decoration: underline;
}
.progress-track {
height: 8px;
background: rgba(128, 128, 128, 0.25);
Expand Down Expand Up @@ -91,7 +103,7 @@ import Base from "../layouts/Base.astro"
<script>
import { imf } from "interscript/ml"

const ASSET_INDEX = "https://api.interscript.org/v1/assets/index-v3/models-index.yaml"
const ASSET_INDEX = "https://api.interscript.org/v1/assets/index-v5/models-index.yaml"

const $ = (id: string) => document.getElementById(id)!
let current: { dispose?(): Promise<void> } | null = null
Expand Down