Skip to content
CURRENT
-7.5 → -6 (+1.5) over 24 captures ATL @ GB spread -7.5 → -6 house House backtest last 10: 6–4 · 90-day all-market 55.3% (n=8163) · 22h ago Wire Peyton fumes over INT while 'Breaking Bad' star Bryan Cranston celebrates Wire Sources: Colts' Pierce out weeks; hoping for return midseason Wire Giants QB Jaxson Dart exits MNF game vs. Rams with knee injury
Access: Anonymous access. Content follows.
how-the-sausage-is-made

The Screen That Shows Your Backend Before Training Starts — on the Advanced Canvas

Read the price, role, and market first Pre-Train Preview on /build/[slug] names the exact backend a run will use, from a single side-effect-free probe, before training starts.

5 sections

Model Desk

The Shark Snip desk for model coverage. Every claim ships with its sample size and its interval, or it does not ship.

Key takeaways (from article sections)

  • One probe, four possible answers
  • A wrong guess costs more than no guess
  • The Receipts Drawer
  • FAQ
  • Where these numbers come from

Updated Sep 8, 2026 · Week 1 board.

  • Pre-Train Preview appears on the Advanced canvas at /build/[slug] the moment Train is clicked, before the run starts.
  • A single side-effect-free async function chooses the backend: it does not initialize TensorFlow.js and does not load Pyodide.
  • TF.js models climb WebGPU, then WebGL2, then WebGL1, then CPU; Python models route to Pyodide if available, or CPU if not.
  • The WebGPU check requests a real adapter only to confirm one exists, then tries to read the vendor and device name, wrapped so a failed read cannot break the probe.
  • A repository-wide search finds exactly two references to the preview component: its lazy import and its own test file; the guided /build root does not import it.
  • Whether a live training run actually lands on WebGPU instead of falling back to CPU is not yet recorded in telemetry.

Hitting Train on a saved model's Advanced canvas, part of Studio at /build, opens a modal that names the backend the run will use before any training code executes. The name comes from a single async function that answers three questions in order: does WebGPU exist, does WebGL2 exist, is CPU the only option left. Python models skip that ladder and route to Pyodide, or to CPU if Pyodide is unavailable. TF.js models climb the ladder from WebGPU to WebGL to CPU, stopping at the first one the browser confirms.

One probe, four possible answers

The header comment on the file states the helper is side-effect-free: it does not initialize TensorFlow.js, does not load Pyodide, and does not request a WebGPU adapter beyond the existence check. The actual engine only initializes later, inside the training worker, after the modal is read and Confirm is clicked.

The WebGPU check still requests a real adapter, the same request a live session would make. It also tries to read the vendor and device name so the modal can name the actual card, wrapped so that read can never break the probe. Some browsers gate that detail behind a flag; the code falls back to a generic line rather than failing the check. The WebGL side asks for a WebGL2 context first, then falls back to WebGL1, because WebGL2 tracks more closely with the backend TF.js wants to use.

A wrong guess costs more than no guess

A backend badge that guesses wrong sends a run into GPU-speed expectations and CPU-speed reality, with no warning until the run is already slow. Building the preview as a pure probe, instead of a short trial run of the engine, keeps the modal's answer tied to what the browser can do right now rather than what the team hopes it will do.

A second modal, a plain-language Pyodide explainer, sits one tap away for the Python side. It loads only when opened, the same lazy pattern the Advanced canvas uses for the preview itself, so neither modal adds weight to the page until a reader asks about the backend.

The Receipts Drawer

The tell here matches earlier posts in this series: a comment inside the file naming exactly what it will not do, not just what it will. Side-effect-free is a claim a reader can check against the code, unlike a line about speed. What the file cannot answer is whether a real session lands on WebGPU instead of dropping to plain CPU; that split sits in telemetry nobody has pulled yet.

FAQ

Where does Pre-Train Preview appear? Right on that canvas, at /build/[slug], the moment you click Train and before the run starts.

Does the backend check load TensorFlow.js or Pyodide to find its answer? No. The probe is side-effect-free; it checks what is available without initializing either engine.

How does it choose between WebGPU, WebGL, and CPU for a TF.js model? In that order. WebGPU first if available, then WebGL, then CPU as the fallback everyone has.

What happens for a Python model instead? It routes to Pyodide if available, or CPU if Pyodide is not available. The WebGPU/WebGL ladder does not apply to Python models.

Does the modal load its own explainer, or does the page carry it by default? It loads on demand. A separate Pyodide explainer modal is lazy-imported only when you open it from the Advanced canvas.

Where these numbers come from

Frequently asked questions

Where does Pre-Train Preview appear?
Right on that canvas, at /build/[slug], the moment you click Train and before the run starts.
Does the backend check load TensorFlow.js or Pyodide to find its answer?
No. The probe is side-effect-free; it checks what is available without initializing either engine.
How does it choose between WebGPU, WebGL, and CPU for a TF.js model?
In that order. WebGPU first if available, then WebGL, then CPU as the fallback everyone has.
What happens for a Python model instead?
It routes to Pyodide if available, or CPU if Pyodide is not available. The WebGPU/WebGL ladder does not apply to Python models.
Does the modal load its own explainer, or does the page carry it by default?
It loads on demand. A separate Pyodide explainer modal is lazy-imported only when you open it from the Advanced canvas.

Build a free model in 60 seconds →

Go →
4m read time
5 players/teams
8 key angles

Angles in this read

  • Edge meter Positive expected value is presented as a meter, not a guarantee.
  • Model sparkline Model output and projection movement get a tiny sparkline rhythm.
  • Probability bands Ranges and uncertainty are shown as bands rather than fake certainty.
  • Odds tick Micro tick movement reinforces live market and pricing language.
  • Line reveal Pretext-measured lines reveal without reflowing the article.
  • Entity chip Player and team names are surfaced as scannable chips.

This article's context stays anchored to Updated Sep, Pre-Train Preview and Pyodide. TF and model, builder and shark snip builder, all of which appear in the post itself.

Names and terms found in this article
Updated SepPre-Train PreviewPyodide. TFHitting TrainFAQ Wheremodelbuildershark snip builderproduct explainerbuild page
Share this guide Help another reader make a sharper decision.

Get picks in your inbox

One email, every slate — ranked edges, no touts. Unsubscribe any time.

Start free — pick a sport

Go →

Continue with evidence

Related reading and source status

Related Reads

Inside the Six-Stage Reveal When Training Finishes — on the Advanced Canvas — Shark Snip
Betting Tools

Inside the Six-Stage Reveal When Training Finishes — on the Advanced Canvas

A finished training run on /build/[slug] plays a fixed six-stage reveal, grade first, timed to the exact millisecond in the source.

Sep 11, 2026 5 min read
Eight Lattice Slots, and the 56 Modules That Can Fill Them — Shark Snip
Betting Tools

Eight Lattice Slots, and the 56 Modules That Can Fill Them

The /build board holds eight fixed slots filled from a live, growing list of pieces, not a four-tier gallery.

Sep 11, 2026 6 min read
The Templates, Frontiers, and Laws That Wire Your First Board — Shark Snip
Betting Tools

The Templates, Frontiers, and Laws That Wire Your First Board

Templates fills a proven board in one click, Open Frontiers ranks untried combinations by uncertainty and upside, and Laws lists the engine rules verbatim.

Sep 11, 2026 6 min read

query: loadMergedBlogPostCards + scoreRelated · n = 3

No data

No graded source picks match this article yet

The public.source_accuracy_scores 90-day query returned no rows for this article's inferred sport.