Embeddable · no server
Live ML you can put on any page.
Each widget below trains in your browser, on your GPU. Press Run to see it; press Copy to take the one line that drops it into your blog, your docs, your course — no server, no sign-up. Like a Gradio demo, minus the server.
An MLP bends a boundary to fit two moons · open the lesson →
The causal-attention matrix as a heatmap · open the lesson →
Six 3×3 filters, drawn at initialisation · open the lesson →
Adam training a tiny problem · open the lesson →
Three rates, three fates: diverge, converge, crawl · open the lesson →
The gradient shrinking with depth · open the lesson →
Activations before and after · open the lesson →
The random mask that regularises · open the lesson →
The SVD's singular values, plotted · open the lesson →
Logits turned into a distribution · open the lesson →
Two vectors and the angle between them · open the lesson →
How shapes stretch to meet · open the lesson →
Loss coming down over steps · open the lesson →
A gradient read straight off the graph · open the lesson →
Each row centred on its own · open the lesson →
Which positions attend to which · open the lesson →
A signal and its frequencies · open the lesson →
A curve learned to fit points · open the lesson →
An image squeezed through a bottleneck · open the lesson →
A tiny change that flips the label · open the lesson →
Text, one character at a time · open the lesson →
Samples stacked into a batch · open the lesson →
The smallest end-to-end run · open the lesson →
How it embeds
One line, and it runs on your reader's GPU
The Copy button on each card hands you an <iframe> — nothing else to
install or host. It trains in the reader's browser; on a browser without WebGPU it says
so in a sentence rather than breaking. Want one of your own? Write a cell in the
playground, or start from a lesson and
embed its code.
<iframe src="https://playidea-lab.github.io/borch/site/embed/embed.html?lesson=mini-transformer&cell=4"
width="100%" height="480" style="border:0"></iframe>
Two honest notes: the reader needs WebGPU (Chrome/Edge 113+, Firefox 141+, Safari 26+) — without it the widget says so, it does not break. And a host page that is itself cross-origin-isolated (rare; most blogs are not) will block the frame — ordinary pages are fine.