Creative Hardware

Someone Fit a Working Image Generator Onto a $1 Chip

Developer Tim (cpldcpu) squeezed a full diffusion transformer — training, quantization, and all — onto the RP2350 microcontroller inside a Raspberry Pi Pico 2, generating faces from scratch in under 20 seconds.

Generative image models are almost always framed as a GPU problem — bigger models, more VRAM, more compute. Developer Tim, who goes by cpldcpu, spent his project asking the opposite question: how small can a real image generator get, and can it run on hardware that costs about a dollar? The answer, detailed in his pico-faces project, is a genuine diffusion transformer running entirely on the RP2350 microcontroller inside a Raspberry Pi Pico 2 — no GPU, no cloud, no operating system.

A real diffusion model, radically shrunk

Pico-faces isn’t a toy simplification of diffusion — it’s the real architecture, just built at extreme scale-down. The model is a latent flow-matching diffusion transformer, trained on the FFHQ face dataset, that generates 128×128 RGB face images through 8 denoising steps guided by classifier-free guidance across five conditional classes (combinations of gender and smile). Two variants exist: a higher-quality version at roughly 2.9 million parameters and a faster one at 1.7 million — for scale, cpldcpu notes that’s about 4,000 times smaller than a production model like Flux. A separate variational autoencoder compresses images into a compact latent space for the transformer to work in, with weights quantized to 8-bit integers via a self-distillation process to keep the whole thing — model, conditioning tables, and VAE decoder together — under 4MB of flash and 520KB of RAM.

What it took to make a micro-model behave like a real one

The technical writeup is candid about how much of large-model diffusion engineering turned out to still matter at this scale: AdaLN-Zero conditioning (implemented via lookup tables instead of full MLP computation to save cycles), ReLU² activations for extra sparsity, sinusoidal positional embeddings, and weight streaming over DMA to work around the chip’s limited RAM. cpldcpu’s own conclusion is the most interesting finding here — “most optimizations helping large models were also necessary for this micro-model” — suggesting the techniques that make today’s frontier generative models efficient aren’t just conveniences for scale, they’re closer to fundamental requirements of the approach itself. The result runs on a dual-core Cortex-M33 overclocked to 300MHz, producing a finished image in 4.3 to 20 seconds depending on the variant, output either over USB or to a VGA monitor via a Pimoroni display adapter with Floyd-Steinberg dithering.