Pacific-i64's picture
Refine responsive connector curves
59ec633 verified
Raw
History Blame Contribute Delete
36.3 kB
<!doctype html>
<html lang="en" data-theme="dark">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Interactive companion for Token Identity as a Routing Signal for Residual MLP Experts.">
<title>Token Identity Routing — Interactive Paper</title>
<link rel="stylesheet" href="./visualize.css">
<script defer src="https://unpkg.com/lucide@1.17.0/dist/umd/lucide.js"></script>
<style>
html { background: var(--background); }
html > body {
width: 100%;
max-width: none;
margin: 0;
padding: clamp(14px, 2vw, 34px);
}
</style>
</head>
<body>
<div id="tr-paper-demo">
<style>
#tr-paper-demo {
--tr-gap: clamp(12px, 2.2vw, 22px);
color: var(--foreground);
width: 100%;
}
#tr-paper-demo * { box-sizing: border-box; }
#tr-paper-demo .tr-shell { display: grid; gap: var(--tr-gap); }
#tr-paper-demo .tr-topbar,
#tr-paper-demo .tr-brand,
#tr-paper-demo .tr-actions,
#tr-paper-demo .tr-tabs,
#tr-paper-demo .tr-chip-row,
#tr-paper-demo .tr-run-head,
#tr-paper-demo .tr-legend,
#tr-paper-demo .tr-node-head {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
#tr-paper-demo .tr-topbar { justify-content: space-between; }
#tr-paper-demo .tr-mark {
display: grid;
place-items: center;
width: 34px;
height: 34px;
border-radius: 10px;
color: var(--primary);
background: color-mix(in srgb, var(--primary) 12%, transparent);
}
#tr-paper-demo .tr-brand-copy { display: grid; gap: 1px; }
#tr-paper-demo .tr-brand-copy strong { font-weight: 500; letter-spacing: .08em; }
#tr-paper-demo .tr-brand-copy span { color: var(--muted-foreground); }
#tr-paper-demo .tr-hero {
display: grid;
grid-template-columns: minmax(0, 1.35fr) minmax(250px, .65fr);
gap: var(--tr-gap);
align-items: end;
padding: clamp(10px, 2vw, 18px) 0;
}
#tr-paper-demo .tr-hero-copy { display: grid; gap: 12px; }
#tr-paper-demo .tr-kicker {
color: var(--muted-foreground);
letter-spacing: .12em;
text-transform: uppercase;
}
#tr-paper-demo .tr-hero h2 {
margin: 0;
max-width: 760px;
font-size: clamp(1.7rem, 4.6vw, 3.25rem);
line-height: 1.02;
letter-spacing: -.045em;
font-weight: 500;
}
#tr-paper-demo .tr-hero p {
margin: 0;
max-width: 680px;
color: var(--muted-foreground);
}
#tr-paper-demo .tr-note {
border-left: 2px solid var(--primary);
padding-left: 12px;
color: var(--muted-foreground);
}
#tr-paper-demo .tr-tabs {
border-bottom: 1px solid var(--border);
padding-bottom: 10px;
}
#tr-paper-demo .tr-tab[aria-selected="true"] {
color: var(--primary-foreground);
background: var(--primary);
}
#tr-paper-demo .tr-view { display: none; }
#tr-paper-demo .tr-view.is-active { display: grid; gap: var(--tr-gap); }
#tr-paper-demo .tr-overview {
grid-template-columns: minmax(0, 1.45fr) minmax(230px, .55fr);
align-items: stretch;
}
#tr-paper-demo .tr-architecture {
min-height: 370px;
position: relative;
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-template-rows: repeat(7, minmax(36px, auto));
gap: 10px;
padding: 18px 0;
}
#tr-paper-demo .tr-lines {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
pointer-events: none;
color: var(--border);
}
#tr-paper-demo .tr-lines .active {
color: var(--viz-series-1);
transition: color .2s ease, stroke-width .2s ease;
stroke-width: 2.5;
}
#tr-paper-demo .tr-node {
position: relative;
z-index: 1;
display: grid;
align-content: center;
gap: 4px;
min-width: 0;
padding: 12px;
border: 1px solid var(--border);
border-radius: 12px;
background: color-mix(in srgb, var(--card) 88%, transparent);
color: var(--card-foreground);
}
#tr-paper-demo .tr-node strong { font-weight: 500; }
#tr-paper-demo .tr-node span { color: var(--muted-foreground); }
#tr-paper-demo .tr-node.route-active {
border-color: var(--viz-series-1);
background: color-mix(in srgb, var(--viz-series-1) 12%, var(--card));
}
#tr-paper-demo .tr-context { grid-column: 2 / 7; grid-row: 1 / 2; }
#tr-paper-demo .tr-token { grid-column: 8 / 12; grid-row: 1 / 2; }
#tr-paper-demo .tr-shared { grid-column: 1 / 6; grid-row: 3 / 5; }
#tr-paper-demo .tr-table { grid-column: 9 / 13; grid-row: 3 / 5; }
#tr-paper-demo .tr-experts {
grid-column: 6 / 9;
grid-row: 3 / 5;
display: grid;
gap: 6px;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
#tr-paper-demo .tr-expert {
display: grid;
place-items: center;
min-height: 42px;
border-radius: 8px;
border: 1px solid var(--border);
color: var(--muted-foreground);
background: color-mix(in srgb, var(--muted) 45%, transparent);
transition: background .2s ease, color .2s ease, border-color .2s ease;
}
#tr-paper-demo .tr-expert.route-active {
color: var(--foreground);
border-color: var(--viz-series-1);
background: color-mix(in srgb, var(--viz-series-1) 18%, transparent);
}
#tr-paper-demo .tr-sum {
grid-column: 5 / 9;
grid-row: 6 / 7;
place-self: center;
width: 46px;
height: 46px;
border-radius: 50%;
text-align: center;
padding: 0;
font-size: 1.3rem;
}
#tr-paper-demo .tr-output { grid-column: 9 / 13; grid-row: 6 / 7; }
#tr-paper-demo .tr-side { display: grid; gap: 12px; align-content: start; }
#tr-paper-demo .tr-metric-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
#tr-paper-demo .tr-route-detail { min-height: 52px; }
#tr-paper-demo .tr-routing-layout,
#tr-paper-demo .tr-results-layout,
#tr-paper-demo .tr-compare-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--tr-gap);
}
#tr-paper-demo .tr-token-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
}
#tr-paper-demo .tr-token-btn { justify-content: center; }
#tr-paper-demo .tr-token-btn.is-selected {
background: var(--primary);
color: var(--primary-foreground);
}
#tr-paper-demo .tr-route-matrix {
display: grid;
grid-template-columns: 70px repeat(4, minmax(0, 1fr));
gap: 7px;
align-items: center;
}
#tr-paper-demo .tr-route-cell {
display: grid;
place-items: center;
min-height: 38px;
border-radius: 8px;
background: color-mix(in srgb, var(--muted) 55%, transparent);
color: var(--muted-foreground);
}
#tr-paper-demo .tr-route-cell.is-on {
background: color-mix(in srgb, var(--viz-series-1) 20%, transparent);
color: var(--foreground);
}
#tr-paper-demo .tr-result-chart {
min-height: 250px;
display: flex;
align-items: end;
gap: 22px;
padding: 30px 18px 24px;
border-bottom: 1px solid var(--border);
position: relative;
}
#tr-paper-demo .tr-bar-group {
flex: 1;
display: grid;
grid-template-columns: repeat(2, minmax(24px, 60px));
justify-content: center;
gap: 8px;
align-items: end;
height: 190px;
position: relative;
}
#tr-paper-demo .tr-bar {
border-radius: 8px 8px 2px 2px;
min-height: 20px;
background: color-mix(in srgb, var(--viz-series-2) 58%, var(--muted));
position: relative;
transition: height .25s ease;
}
#tr-paper-demo .tr-bar.routed {
background: color-mix(in srgb, var(--viz-series-1) 68%, var(--muted));
}
#tr-paper-demo .tr-bar span {
position: absolute;
left: 50%;
bottom: calc(100% + 7px);
transform: translateX(-50%);
color: var(--foreground);
white-space: nowrap;
}
#tr-paper-demo .tr-bar-label {
position: absolute;
top: calc(100% + 9px);
left: 0;
right: 0;
text-align: center;
color: var(--muted-foreground);
}
#tr-paper-demo .tr-legend { justify-content: center; }
#tr-paper-demo .tr-swatch {
width: 10px;
height: 10px;
border-radius: 3px;
background: color-mix(in srgb, var(--viz-series-2) 58%, var(--muted));
}
#tr-paper-demo .tr-swatch.routed {
background: color-mix(in srgb, var(--viz-series-1) 68%, var(--muted));
}
#tr-paper-demo .tr-generation {
min-height: 172px;
white-space: pre-wrap;
overflow-wrap: anywhere;
}
#tr-paper-demo .tr-caret {
display: inline-block;
width: 1px;
height: 1em;
margin-left: 2px;
vertical-align: -.12em;
background: var(--primary);
animation: tr-blink .8s steps(1) infinite;
}
#tr-paper-demo .tr-prompt-row {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 10px;
align-items: end;
}
#tr-paper-demo .tr-status { color: var(--muted-foreground); }
#tr-paper-demo .tr-status.is-live { color: var(--foreground); }
@keyframes tr-blink { 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
#tr-paper-demo .tr-caret { animation: none; }
}
@media (max-width: 680px) {
#tr-paper-demo .tr-hero,
#tr-paper-demo .tr-overview,
#tr-paper-demo .tr-routing-layout,
#tr-paper-demo .tr-results-layout,
#tr-paper-demo .tr-compare-grid {
grid-template-columns: 1fr;
}
#tr-paper-demo .tr-actions { display: none; }
#tr-paper-demo .tr-architecture { min-height: 440px; }
#tr-paper-demo .tr-context { grid-column: 1 / 8; }
#tr-paper-demo .tr-token { grid-column: 8 / 13; }
#tr-paper-demo .tr-shared { grid-column: 1 / 6; grid-row: 3 / 5; }
#tr-paper-demo .tr-experts { grid-column: 6 / 10; grid-row: 3 / 5; }
#tr-paper-demo .tr-table { grid-column: 10 / 13; grid-row: 3 / 5; }
#tr-paper-demo .tr-sum { grid-column: 4 / 7; }
#tr-paper-demo .tr-output { grid-column: 7 / 13; }
#tr-paper-demo .tr-token-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
#tr-paper-demo .tr-prompt-row { grid-template-columns: 1fr; }
}
@media (max-width: 430px) {
#tr-paper-demo .tr-tabs { gap: 6px; }
#tr-paper-demo .tr-tab { padding-inline: 9px; }
#tr-paper-demo .tr-architecture {
display: flex;
flex-direction: column;
min-height: auto;
}
#tr-paper-demo .tr-lines, #tr-paper-demo .tr-sum { display: none; }
#tr-paper-demo .tr-node,
#tr-paper-demo .tr-context,
#tr-paper-demo .tr-token,
#tr-paper-demo .tr-shared,
#tr-paper-demo .tr-table,
#tr-paper-demo .tr-experts,
#tr-paper-demo .tr-output {
width: 100%;
}
#tr-paper-demo .tr-route-matrix { grid-template-columns: 54px repeat(4, minmax(0, 1fr)); }
}
</style>
<div class="tr-shell">
<header class="tr-topbar">
<div class="tr-brand">
<span class="tr-mark"><i data-lucide="git-branch" aria-hidden="true"></i></span>
<span class="tr-brand-copy">
<strong>COMPLEXITY</strong>
<span class="text-small">Research companion</span>
</span>
</div>
<nav class="tr-actions" aria-label="Research links">
<a class="btn btn-ghost" href="https://www.complexity-ai.fr/papers/token-identity-routing-residual-experts.pdf" target="_blank" rel="noopener noreferrer"><i data-lucide="file-text" aria-hidden="true"></i> Paper</a>
<a class="btn btn-ghost" href="https://github.com/Complexity-ML/tmlr-paper-pool" target="_blank" rel="noopener noreferrer"><i data-lucide="package-open" aria-hidden="true"></i> Supplement</a>
<a class="btn btn-ghost" href="https://github.com/Complexity-ML/tmlr-paper-pool" target="_blank" rel="noopener noreferrer"><i data-lucide="github" aria-hidden="true"></i> Code</a>
</nav>
</header>
<section class="tr-hero">
<div class="tr-hero-copy">
<span class="tr-kicker text-small">Interactive architecture study</span>
<h2>Token identity as a routing signal for residual MLP experts</h2>
<p>Explore how a fixed lexical lookup selects a narrow residual parameter subspace while a shared dense SwiGLU path handles contextual computation.</p>
<div class="tr-chip-row">
<span class="viz-badge">306.5M parameters</span>
<span class="viz-badge">8B training tokens</span>
<span class="viz-badge">fixed top-2 routing</span>
</div>
</div>
<div class="tr-note text-small">
Interactive companion — not additional experimental evidence.
</div>
</section>
<nav class="tr-tabs" aria-label="Interactive paper sections">
<button class="btn tr-tab" type="button" role="tab" aria-selected="true" data-view="overview">Architecture</button>
<button class="btn tr-tab" type="button" role="tab" aria-selected="false" data-view="routing">Routing lab</button>
<button class="btn tr-tab" type="button" role="tab" aria-selected="false" data-view="results">Results</button>
<button class="btn tr-tab" type="button" role="tab" aria-selected="false" data-view="compare">Live compare</button>
</nav>
<section class="tr-view tr-overview is-active" data-panel="overview" role="tabpanel">
<div>
<div class="tr-chip-row" aria-label="Select a token">
<span class="text-small text-muted">Token</span>
<button class="btn tr-token-choice is-selected" type="button" data-token="routing">routing</button>
<button class="btn tr-token-choice" type="button" data-token="context">context</button>
<button class="btn tr-token-choice" type="button" data-token="expert">expert</button>
<button class="btn tr-token-choice" type="button" data-token="shared">shared</button>
</div>
<div class="tr-architecture" role="img" aria-label="The contextual hidden state enters both a shared SwiGLU branch and two selected residual experts. Token identity controls only the fixed route table.">
<svg class="tr-lines" aria-hidden="true">
<path data-from=".tr-context" data-from-anchor="bottom" data-to=".tr-shared" data-to-anchor="top" fill="none" stroke="currentColor" stroke-width="1.5"/>
<path class="active" data-from=".tr-context" data-from-anchor="bottom" data-to=".tr-experts" data-to-anchor="top" fill="none" stroke="currentColor"/>
<path class="active" data-from=".tr-token" data-from-anchor="bottom" data-to=".tr-table" data-to-anchor="top" fill="none" stroke="currentColor"/>
<path class="active" data-from=".tr-table" data-from-anchor="left" data-to=".tr-experts" data-to-anchor="right" fill="none" stroke="currentColor" stroke-dasharray="7 7"/>
<path data-from=".tr-shared" data-from-anchor="bottom" data-to=".tr-sum" data-to-anchor="left" fill="none" stroke="currentColor" stroke-width="1.5"/>
<path class="active" data-from=".tr-experts" data-from-anchor="bottom" data-to=".tr-sum" data-to-anchor="top" fill="none" stroke="currentColor"/>
<path class="active" data-from=".tr-sum" data-from-anchor="right" data-to=".tr-output" data-to-anchor="left" fill="none" stroke="currentColor"/>
</svg>
<div class="tr-node tr-context">
<strong>Contextual hidden state <em>x<sub>t</sub></em></strong>
<span class="text-small">The same contextual vector enters both branches</span>
</div>
<div class="tr-node tr-token route-active">
<strong>Token identifier <em>t</em></strong>
<span class="text-small" data-token-id>routing · tokenizer ID 22447</span>
</div>
<div class="tr-node tr-shared">
<strong>Shared SwiGLU</strong>
<span class="text-small">Width 3,840 · all tokens · contextual computation</span>
</div>
<div class="tr-node tr-table route-active">
<strong>Fixed route table <em>r<sub>l</sub>(t)</em></strong>
<span class="text-small">Selects two of four experts</span>
</div>
<div class="tr-node tr-experts route-active">
<strong style="grid-column:1/-1">Residual experts</strong>
<span class="tr-expert" data-expert="0">E0</span>
<span class="tr-expert route-active" data-expert="1">E1</span>
<span class="tr-expert route-active" data-expert="2">E2</span>
<span class="tr-expert" data-expert="3">E3</span>
</div>
<button class="btn tr-sum" type="button" data-tooltip="Element-wise branch sum" aria-label="Add the branch outputs">+</button>
<div class="tr-node tr-output">
<strong>Feed-forward output</strong>
<span class="text-small">Shared path + 0.5 E<span data-route-a>1</span> + 0.5 E<span data-route-b>2</span></span>
</div>
</div>
</div>
<aside class="tr-side">
<div class="tr-metric-grid">
<div class="card viz-stat">
<span class="text-muted text-small">Matched pair</span>
<span class="viz-stat-value">306.5M</span>
<span class="text-small">trainable parameters</span>
</div>
<div class="card viz-stat">
<span class="text-muted text-small">Primary run</span>
<span class="viz-stat-value">8B</span>
<span class="text-small">FineWeb-Edu tokens</span>
</div>
</div>
<div class="card tr-route-detail">
<div class="tr-node-head">
<i data-lucide="route" aria-hidden="true"></i>
<strong>Selected route</strong>
</div>
<p data-route-copy>“routing” selects E1 + E2 in layer 1. The primary route is checkpoint-derived; the published inference runtime derives the cyclic secondary route.</p>
</div>
<div class="card">
<strong>Scope of evidence</strong>
<p class="text-muted">One matched 306.5M run pair. The result is reported as an observation, not a claim of statistical significance.</p>
</div>
</aside>
</section>
<section class="tr-view" data-panel="routing" role="tabpanel">
<div class="tr-routing-layout">
<div>
<div class="tr-run-head">
<div>
<strong>Layer-specific deterministic routes</strong>
<div class="text-small text-muted">Checkpoint-derived tokenizer IDs and fixed top-2 assignments.</div>
</div>
</div>
<div class="tr-token-grid" style="margin-top:12px">
<button class="btn tr-token-btn is-selected" type="button" data-lab-token="routing">routing</button>
<button class="btn tr-token-btn" type="button" data-lab-token="context">context</button>
<button class="btn tr-token-btn" type="button" data-lab-token="expert">expert</button>
<button class="btn tr-token-btn" type="button" data-lab-token="shared">shared</button>
<button class="btn tr-token-btn" type="button" data-lab-token="token">token</button>
<button class="btn tr-token-btn" type="button" data-lab-token="model">model</button>
<button class="btn tr-token-btn" type="button" data-lab-token="dense">dense</button>
<button class="btn tr-token-btn" type="button" data-lab-token="learned">learned</button>
</div>
</div>
<div class="card">
<div class="tr-route-matrix" aria-label="Expert assignment matrix">
<span></span><span class="text-small text-center">E0</span><span class="text-small text-center">E1</span><span class="text-small text-center">E2</span><span class="text-small text-center">E3</span>
<span class="text-small">Layer 1</span><span class="tr-route-cell" data-cell="1-0"></span><span class="tr-route-cell is-on" data-cell="1-1">0.5</span><span class="tr-route-cell is-on" data-cell="1-2">0.5</span><span class="tr-route-cell" data-cell="1-3"></span>
<span class="text-small">Layer 6</span><span class="tr-route-cell" data-cell="6-0"></span><span class="tr-route-cell" data-cell="6-1"></span><span class="tr-route-cell is-on" data-cell="6-2">0.5</span><span class="tr-route-cell is-on" data-cell="6-3">0.5</span>
<span class="text-small">Layer 12</span><span class="tr-route-cell is-on" data-cell="12-0">0.5</span><span class="tr-route-cell" data-cell="12-1"></span><span class="tr-route-cell" data-cell="12-2"></span><span class="tr-route-cell is-on" data-cell="12-3">0.5</span>
<span class="text-small">Layer 18</span><span class="tr-route-cell" data-cell="18-0"></span><span class="tr-route-cell" data-cell="18-1"></span><span class="tr-route-cell is-on" data-cell="18-2">0.5</span><span class="tr-route-cell is-on" data-cell="18-3">0.5</span>
</div>
</div>
</div>
<div class="tr-note text-small" data-lab-detail>Token “routing” follows a reproducible, layer-specific route. A different occurrence of the same token keeps the same route, while its hidden-state input still changes with context.</div>
</section>
<section class="tr-view" data-panel="results" role="tabpanel">
<div class="tr-results-layout">
<div>
<div class="tr-run-head">
<div>
<strong>Last common evaluation point</strong>
<div class="text-small text-muted">Fixed evaluation stream from the FineWeb-Edu training split · lower is better</div>
</div>
</div>
<div class="tr-result-chart" role="img" aria-label="Evaluation NLL: dense 2.9482, token-routed 2.9329.">
<div class="tr-bar-group">
<div class="tr-bar" style="height:81%"><span>2.9482</span></div>
<div class="tr-bar routed" style="height:68%"><span>2.9329</span></div>
<div class="tr-bar-label text-small">Evaluation NLL</div>
</div>
<div class="tr-bar-group">
<div class="tr-bar" style="height:75%"><span>1.00×</span></div>
<div class="tr-bar routed" style="height:96%"><span>0.79×</span></div>
<div class="tr-bar-label text-small">Training throughput</div>
</div>
</div>
<div class="tr-legend text-small" style="margin-top:30px">
<span class="tr-swatch"></span><span>Dense</span>
<span class="tr-swatch routed"></span><span>Token-routed</span>
</div>
</div>
<div class="card">
<table class="table table-sm">
<thead>
<tr><th>Measurement</th><th class="text-end">Dense</th><th class="text-end">Routed</th></tr>
</thead>
<tbody>
<tr><td>Parameters</td><td class="text-end">306.5M</td><td class="text-end">306.5M</td></tr>
<tr><td>Evaluation NLL</td><td class="text-end">2.9482</td><td class="text-end">2.9329</td></tr>
<tr><td>NLL difference</td><td class="text-end"></td><td class="text-end">−0.0153</td></tr>
<tr><td>Training tokens</td><td class="text-end">8B</td><td class="text-end">8B</td></tr>
<tr><td>Seeds</td><td class="text-end">1</td><td class="text-end">1</td></tr>
</tbody>
</table>
<p class="text-small text-muted">Single-seed matched-run observation. Evaluation is not held out; downstream multiple-choice differences are within one reported standard error.</p>
</div>
</div>
</section>
<section class="tr-view" data-panel="compare" role="tabpanel">
<div class="tr-prompt-row">
<label class="form-label">
Prompt
<input class="form-control" data-prompt value="Machine learning is a branch of artificial intelligence that" />
</label>
<button class="btn btn-primary" type="button" data-run>
<i data-lucide="play" aria-hidden="true"></i> Run comparison
</button>
</div>
<div class="tr-compare-grid">
<div class="card">
<div class="tr-run-head">
<strong>Dense-306</strong>
<span class="viz-badge" data-dense-state>ready</span>
</div>
<p class="tr-generation" data-dense-output aria-live="polite">Dense output will stream here token by token.</p>
</div>
<div class="card">
<div class="tr-run-head">
<strong>TR-MOE-306</strong>
<span class="viz-badge" data-routed-state>ready</span>
</div>
<p class="tr-generation" data-routed-output aria-live="polite">Token-routed output will stream here token by token.</p>
</div>
</div>
<div class="tr-status text-small" data-status>Public CPU inference · SSE streaming · qualitative comparison only</div>
</section>
</div>
<script>
(() => {
const root = document.getElementById("tr-paper-demo");
if (!root) return;
const routes = {
routing: { id: 22447, layers: [[1, 2], [2, 3], [3, 0], [2, 3]] },
context: { id: 4057, layers: [[0, 1], [1, 2], [2, 3], [0, 1]] },
expert: { id: 5217, layers: [[0, 1], [1, 2], [2, 3], [0, 1]] },
shared: { id: 5586, layers: [[3, 0], [0, 1], [1, 2], [3, 0]] },
token: { id: 23394, layers: [[3, 0], [0, 1], [1, 2], [3, 0]] },
model: { id: 2181, layers: [[0, 1], [1, 2], [2, 3], [0, 1]] },
dense: { id: 8581, layers: [[0, 1], [1, 2], [2, 3], [0, 1]] },
learned: { id: 4273, layers: [[0, 1], [1, 2], [2, 3], [0, 1]] }
};
const tabs = [...root.querySelectorAll(".tr-tab")];
const panels = [...root.querySelectorAll(".tr-view")];
const architecture = root.querySelector(".tr-architecture");
const lineLayer = root.querySelector(".tr-lines");
const anchorPoint = (element, anchor, bounds) => {
const rect = element.getBoundingClientRect();
const points = {
top: { x: rect.left + rect.width / 2, y: rect.top },
right: { x: rect.right, y: rect.top + rect.height / 2 },
bottom: { x: rect.left + rect.width / 2, y: rect.bottom },
left: { x: rect.left, y: rect.top + rect.height / 2 }
};
const point = points[anchor] || points.bottom;
return { x: point.x - bounds.left, y: point.y - bounds.top };
};
const updateConnectorPaths = () => {
if (!architecture || !lineLayer || !architecture.offsetParent) return;
const bounds = architecture.getBoundingClientRect();
if (!bounds.width || !bounds.height) return;
lineLayer.setAttribute("viewBox", `0 0 ${bounds.width} ${bounds.height}`);
lineLayer.querySelectorAll("[data-from][data-to]").forEach((path) => {
const from = architecture.querySelector(path.dataset.from);
const to = architecture.querySelector(path.dataset.to);
if (!from || !to) return;
const start = anchorPoint(from, path.dataset.fromAnchor, bounds);
const end = anchorPoint(to, path.dataset.toAnchor, bounds);
const dx = end.x - start.x;
const dy = end.y - start.y;
let d;
if (Math.abs(dx) > Math.abs(dy)) {
const direction = Math.sign(dx) || 1;
const bend = Math.min(Math.max(16, Math.abs(dx) * 0.42), Math.abs(dx) / 2);
d = `M ${start.x} ${start.y} C ${start.x + direction * bend} ${start.y}, ${end.x - direction * bend} ${end.y}, ${end.x} ${end.y}`;
} else {
const direction = Math.sign(dy) || 1;
const bend = Math.min(Math.max(16, Math.abs(dy) * 0.42), Math.abs(dy) / 2);
d = `M ${start.x} ${start.y} C ${start.x} ${start.y + direction * bend}, ${end.x} ${end.y - direction * bend}, ${end.x} ${end.y}`;
}
path.setAttribute("d", d);
});
};
tabs.forEach((tab) => {
tab.addEventListener("click", () => {
tabs.forEach((item) => item.setAttribute("aria-selected", String(item === tab)));
panels.forEach((panel) => panel.classList.toggle("is-active", panel.dataset.panel === tab.dataset.view));
if (tab.dataset.view === "overview") requestAnimationFrame(updateConnectorPaths);
});
});
if (architecture && "ResizeObserver" in window) {
const connectorResizeObserver = new ResizeObserver(() => requestAnimationFrame(updateConnectorPaths));
connectorResizeObserver.observe(architecture);
}
window.addEventListener("resize", updateConnectorPaths);
document.fonts?.ready.then(updateConnectorPaths);
requestAnimationFrame(updateConnectorPaths);
const updateArchitecture = (token) => {
const route = routes[token];
if (!route) return;
const pair = route.layers[0];
root.querySelector("[data-token-id]").textContent = `${token} · tokenizer ID ${route.id}`;
root.querySelector("[data-route-a]").textContent = String(pair[0]);
root.querySelector("[data-route-b]").textContent = String(pair[1]);
root.querySelector("[data-route-copy]").textContent =
`“${token}” selects E${pair[0]} + E${pair[1]} in layer 1. The primary route is checkpoint-derived; the published inference runtime derives the cyclic secondary route.`;
root.querySelectorAll("[data-expert]").forEach((expert) => {
expert.classList.toggle("route-active", pair.includes(Number(expert.dataset.expert)));
});
root.querySelectorAll(".tr-token-choice").forEach((button) => {
button.classList.toggle("is-selected", button.dataset.token === token);
});
};
root.querySelectorAll(".tr-token-choice").forEach((button) => {
button.addEventListener("click", () => updateArchitecture(button.dataset.token));
});
const updateMatrix = (token) => {
const route = routes[token];
if (!route) return;
const layers = [1, 6, 12, 18];
layers.forEach((layer, layerIndex) => {
const [a, b] = route.layers[layerIndex];
for (let expert = 0; expert < 4; expert += 1) {
const cell = root.querySelector(`[data-cell="${layer}-${expert}"]`);
const active = expert === a || expert === b;
cell.classList.toggle("is-on", active);
cell.textContent = active ? "0.5" : "—";
}
});
root.querySelectorAll(".tr-token-btn").forEach((button) => {
button.classList.toggle("is-selected", button.dataset.labToken === token);
});
root.querySelector("[data-lab-detail]").textContent =
`Token “${token}” (ID ${route.id}) follows these routes in the published inference runtime. Primary routes come from the checkpoint; cyclic secondary routes are deterministic.`;
};
root.querySelectorAll(".tr-token-btn").forEach((button) => {
button.addEventListener("click", () => updateMatrix(button.dataset.labToken));
});
const COMPARE_ENDPOINT = "https://pacific-i64-compare-306.hf.space/v1/compare";
let activeController = null;
const consumeSSE = async (response, onEvent) => {
if (!response.body) throw new Error("Streaming response body is unavailable.");
const reader = response.body.getReader();
const decoder = new TextDecoder();
let buffer = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const lines = buffer.split("\n");
buffer = lines.pop() || "";
for (const line of lines) {
const trimmed = line.trim();
if (!trimmed.startsWith("data:")) continue;
const payload = trimmed.slice(5).trim();
if (payload === "[DONE]") return;
try {
onEvent(JSON.parse(payload));
} catch {
// Ignore malformed transport fragments.
}
}
}
};
root.querySelector("[data-run]").addEventListener("click", async () => {
const runButton = root.querySelector("[data-run]");
const denseOutput = root.querySelector("[data-dense-output]");
const routedOutput = root.querySelector("[data-routed-output]");
const denseState = root.querySelector("[data-dense-state]");
const routedState = root.querySelector("[data-routed-state]");
const status = root.querySelector("[data-status]");
const prompt = root.querySelector("[data-prompt]").value.trim();
if (activeController) {
activeController.abort();
activeController = null;
runButton.textContent = "Run comparison";
denseState.textContent = "stopped";
routedState.textContent = "stopped";
status.textContent = "Generation stopped.";
status.classList.remove("is-live");
return;
}
if (!prompt) {
status.textContent = "Enter a prompt before running the comparison.";
return;
}
const controller = new AbortController();
activeController = controller;
denseOutput.textContent = "";
routedOutput.textContent = "";
denseState.textContent = "connecting";
routedState.textContent = "connecting";
runButton.textContent = "Stop generation";
status.textContent = "Connecting to both public 306.5M CPU endpoints…";
status.classList.add("is-live");
try {
const response = await fetch(COMPARE_ENDPOINT, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
prompt,
max_tokens: 128,
temperature: 0.7,
stream: true
}),
signal: controller.signal
});
if (!response.ok) {
const detail = (await response.text()).slice(0, 240);
throw new Error(`Compare endpoint returned HTTP ${response.status}${detail ? `: ${detail}` : ""}`);
}
denseState.textContent = "streaming";
routedState.textContent = "streaming";
status.textContent = "Receiving two real SSE streams token by token…";
await consumeSSE(response, (event) => {
if (event.error) {
if (event.type === "dense") denseState.textContent = "error";
if (event.type === "tr_moe") routedState.textContent = "error";
return;
}
if (!event.text) return;
if (event.type === "dense") denseOutput.textContent += event.text;
if (event.type === "tr_moe") routedOutput.textContent += event.text;
});
denseState.textContent = denseOutput.textContent ? "complete" : "no output";
routedState.textContent = routedOutput.textContent ? "complete" : "no output";
status.textContent = "Comparison complete · qualitative output only";
} catch (error) {
if (error.name === "AbortError") return;
denseState.textContent = "unavailable";
routedState.textContent = "unavailable";
status.textContent = `Inference temporarily unavailable: ${error.message}`;
} finally {
if (activeController === controller) activeController = null;
runButton.textContent = "Run comparison";
status.classList.remove("is-live");
}
});
window.addEventListener("DOMContentLoaded", () => {
globalThis.lucide?.createIcons({ attrs: { width: 16, height: 16 } });
}, { once: true });
})();
</script>
</div>
</body>
</html>