Data and views
A JEPA learns by making different views of the same input agree in embedding space. Pick data, then look at the views it will train on.
Shapes
Ten procedurally drawn classes (circle, ring, stripes…). Labels are hidden from pretraining and only used by Evaluate.
Files stay on this device: they are decoded in the page and never uploaded. Limits: 2000 files, 20 MB each, 40 megapixels each. Images are resized to 32×32 for training.
Pick a folder of class sub-folders (cats/, dogs/…) and the sub-folder names become labels for Evaluate. Loose files have no labels.
The desktop backend reads the folder directly at full size; only folders you pick here are readable.
Desktop only. Short clips (.mp4, .webm, .gif…); frames, resolution and file size are capped while decoding. Sub-folder names become labels for Evaluate.
Numbers only, one column per channel, optional header row. The web demo previews series views; training on series needs the desktop app.
Augmentations
Views of one input
Image 0Original
2 global crops 30–100% of the image, 32 px
4 local crops 5–30% of the image, 16 px
Every view is predicted to land on the mean embedding of the global views. The encoder then sees each view resampled to 16×16.
Time series preview
Dataset sample
Click one to see its viewsPretrain
Prediction pulls every view onto the global-view centre; SIGReg keeps the batch of embeddings an isotropic Gaussian so they cannot collapse.
Run settings
Differences from desktop: the web projector is Linear(64→64)+GELU+Linear(64→16) with no BatchNorm, GELU is the exact erf form, inputs are standardized per channel, and SIGReg uses fewer directions per step.
Hardware card
Reading this device: cores, memory and the WebGPU adapter…
Dashed line: 1.05, the average value for a batch that really is Gaussian.
Linear warmup, then cosine decay.
Samples per second; each sample is 6 views.
Megabytes of JavaScript heap used by the page (Chromium only; the training worker has its own heap).
Health during training
Waiting for the first checkInspect the embeddings
Is the embedding cloud spread out and Gaussian, or has it collapsed? Explore it, then check the numbers.
No model to inspect yet. Train one on the Train tab; the explorer, collapse detector and neighbours fill in from it.
Collapse detector
No model yet
Train for a few steps, then press Refresh.
Isotropic means every bar the same height (dashed line = 1, the N(0, I) target).
Embedding explorer
PCA of backbone embeddingsDrag or use the arrow keys to rotate. Click a point for its nearest neighbours. Classes use five colours, drawn as filled dots or rings.
Nearest neighbours
cosine, backboneSaliency
|∂‖emb‖ / ∂pixel|Gradient of the embedding's length with respect to each pixel (largest over the colour channels), scaled from least to most important pixel: the stronger the tint, the more that pixel moves the embedding. Desktop runs with a ViT-tiny encoder add a third map: how much the last block's [CLS] token attends to each patch, averaged over heads.
Watch projections turn Gaussian
no snapshots yetProjector outputs of 256 fixed images along 3 fixed random directions, recorded during training. The curve is N(0, 1): SIGReg pulls every such projection toward it. A narrow spike means the embedding has not spread out yet.
Browse inputs
click for neighbours and saliencyEvaluate with a few labels
Freeze the encoder, fit a linear probe and a k-NN classifier on a small labeled subset, and score a held-out split.
Nothing to evaluate yet. Train a model first, then score it here with a few labels.
Probe settings
20% of the images are held out for scoring; the labeled subset comes from the rest.
- Linear probe: softmax regression on standardized features, full-batch Adam, 100 epochs.
- k-NN: cosine similarity, k = 20, majority vote, ties go to the nearest neighbour.
- Random-init: the same MLP, untrained.
- Supervised: the same MLP trained with cross-entropy on the same labeled subset.
Held-out accuracy
| Encoder | Linear probe | k-NN | Effective rank | SIGReg | Collapse check |
|---|---|---|---|---|---|
| Run an evaluation to fill this table. | |||||
Plan in a learned world model
A JEPA world model predicts the next embedding from the current one and an action. A planner searches for actions whose imagined embeddings reach the goal's embedding.
Planner settings
Loading world models…
Rollout
Not run| Policy | Steps | Final distance | Reached goal |
|---|---|---|---|
| Run the planner and the random policy to compare. | |||
Explain
Ask how something works. Answers are passages quoted from the project docs and your run log, with links to the source; nothing is generated.
Export
Everything is written in your browser and saved with a normal download. Weights are safetensors: plain tensors, no code.
Nothing trained to export yet. Train a model, or open saved weights below; the config and report are ready now.
Embeddings
Backbone embeddings (64-d) of every item, in dataset order, with labels when the dataset has them.
Trained weights
mlp-tiny as model.safetensors: backbone.net.* loads into the desktop MLPTiny; input normalization is folded into the first layer, so it takes raw [0, 1] pixels.
Run report
Config, metrics, evaluation, hardware card, seed, timestamps, browser and code version.
Reproducibility bundle
A zip of config.json, report.json, weights.safetensors, embeddings.npy and a README with the desktop command.
Run config
Matches the Data and Train tabsThe same JSON file format as the desktop app, so a config made here opens there. Edit it, then Validate checks it against config.schema.json and Apply sends it to the Data and Train tabs.