A third, separate experiment

The image model is separate from the memory and byte-language models. It does not inherit their checkpoints or imply they can now draw. This small, trained LATTICE-inspired baseline generates handwritten-digit images from Gaussian noise using a class label and a repeatedly applied neural cellular update.

Open the interactive image lab →

What is actually trained?

The bundled checkpoint has 10,674 trainable parameters, a native 8×8 grayscale output and ten digit classes. Every pixel carries 24 hidden channels. Six applications of one shared local rule produce a flow velocity; 40 Euler steps turn a seeded noise image into a sample. The same class can yield different samples from different seeds.

This is not a high-resolution model, a general text-to-image system, or a conversion of the full original LATTICE checkpoint. Large display pixels are nearest-neighbour enlargement, not generated high-resolution detail. No stored target images are used by the inference path.

A controlled first result

Three independent training runs used 12,000 optimizer updates each, with a fixed stratified split of 1,437 training images and 360 validation images. A logistic-regression digit recognizer trained only on real training images classified the requested label in 86.0–87.4% of 500 generated samples per run (mean 86.87%). That recognizer itself scored 97.22% on real validation images.

The primary shipped checkpoint is training seed 0, selected in advance rather than by the most attractive gallery. Its validation flow loss was 0.4003, compared with 1.7101 for zero velocity. Supplying deliberately wrong labels increased the loss to 0.7229. Reducing its six inner steps to one at evaluation increased loss to 1.7464.

These are small-dataset functional checks, not FID, photorealism, text alignment or a matched-compute architectural benchmark. Validation data was used to select raw versus moving-average weights. The one-step intervention is not a separately trained one-step baseline, and no near-exact pixel matches in a finite sample do not prove an absence of memorization.

Fifty unfiltered 8 by 8 NCA-generated digit samples, with requested classes 0 through 9 in columns
Unfiltered seed-0 checkpoint samples, generation seed 20260916, 40 Euler steps, CFG 1. Native 8×8; nearest-neighbour display enlargement only.

Read all three training runs and limitations as JSON →

Where LATTICE fits

LATTICE combines a shared local neural update with flow matching, optional long-range communication, text conditioning and image latents. Its original implementation is a useful starting point, but top-K selection follows a full cell-to-cell score matrix; sparse selected messages do not make that scoring step linear. Its ternary layers currently run floating-point convolution and linear kernels, not packed low-bit inference.

The browser proof deliberately starts without attention, ternary weights, a text encoder or an autoencoder. It tests that repeated local computation can learn a small conditional image distribution before those additional variables are introduced.

Training and browser execution are different jobs

Training runs natively in PyTorch on CPU or a supported CUDA installation. A small exported JSON checkpoint is loaded by fixed Python code inside ZIPP WebAssembly. The guest submits bounded numerical graphs to the selected backend. The static website does not contain a PyTorch installation or a browser optimizer.

The lab keeps backend selection explicit. WebGL2 is offered, but availability depends on the browser. The CPU reference can be selected manually. Imported checkpoints must match the bounded micro-model schema; arbitrary Python, pickled checkpoints and full LATTICE model files are not accepted.

The next experiment should isolate the difficult parts

For larger models, compare a full-precision shared-rule latent baseline against local-only and pooled-communication variants before adding ternary quantization. Hold the dataset, codec, conditioning, solver evaluation budget and validation protocol constant. Test prompt-label correctness, diversity, nearest training neighbours, denoising loss, memory use and wall-clock throughput together.

Keeping hidden state between solver evaluations is a different model from resetting it. It needs matching training and carefully defined Euler or Heun semantics; do not simply keep the previous hidden tensor as an inference-only optimization.

Related research and attribution

Growing Neural Cellular Automata established learned image growth and persistence experiments. Self-Organising Textures explores local texture synthesis. Diff-NCA studies NCA-based diffusion, while From Cells to Pixels separates a coarse cellular simulation from a local high-resolution decoder. These are related approaches, not evidence that this checkpoint achieves their results.

Training data: Alpaydin, E. and Kaynak, C. (1998), Optical Recognition of Handwritten Digits, UCI Machine Learning Repository, DOI 10.24432/C50P49, CC BY 4.0. This experiment uses the 1,797-image subset bundled by scikit-learn and its own documented split, not the full original UCI train/test benchmark.

Run the experiments ↗Research programme →