You Are the Model - Quick, Draw! diffusion
A tiny class-conditional diffusion model that draws 32x32 doodles, small enough to run a full 25-step DDIM sample in the browser.
It powers You Are the Model, a daily drawing puzzle where the player takes over the denoising loop: at each round you pick which noise prediction to apply, your choice is fed back into the real sampler, and a bad pick genuinely derails the drawing.
Model
| Architecture | class-conditional U-Net, epsilon prediction |
| Parameters | 1,525,761 (6.1 MB fp32) |
| Resolution | 32x32 grayscale, values in [-1, 1] |
| Classes | 24 (+1 null class for classifier-free guidance) |
| Noise schedule | cosine, 1000 train timesteps |
| Sampler | DDIM, 25 steps, guidance 3.0 |
| Trained | 60,000 steps, batch 256, AdamW, EMA 0.9995, bf16 |
| Hardware | NVIDIA GeForce RTX 3090, 1.43 h, about $0.221 |
Classes
cat, fish, flower, house, sailboat, smiley face, star, umbrella, envelope, t-shirt, ice cream, apple, banana, ladder, lightning, mountain, pants, wine glass, eyeglasses, snowman, car, airplane, hand, guitar
Files
| File | Purpose |
|---|---|
yatm_v2.onnx |
the browser asset - opset 17, dynamic batch |
yatm_v2.meta.json |
class list, sampler settings, parity numbers |
yatm_v2.abar.json |
cosine alpha-bar table, so the JS sampler matches exactly |
ema.pt |
EMA weights (PyTorch) |
samples.png |
fixed-seed sample sheet, one row per class |
eval.json |
classifier gate and guidance sweep |
metrics.jsonl |
training and validation curves |
config.resolved.json |
the exact resolved config and environment |
Inputs and outputs
x: float32 [batch, 1, 32, 32] noisy latent
t: int64 [batch] timestep, 0..999
y: int64 [batch] class index, or 24 for unconditional
-> eps: float32 [batch, 1, 32, 32]
Classifier-free guidance: run the batch twice (class and null) and combine with
eps = eps_null + w * (eps_class - eps_null).
Evaluation
A held-out CNN classifier (95.4% accurate on real test drawings) labels 99.9% of fixed-seed samples as the class they were conditioned on, at the best guidance scale of 3.0. Weakest class: car at 98.4%.
Python and ONNX Runtime agree to 4.1e-03 maximum absolute difference over
a full 25-step sample, so the browser and the training code produce the
same picture from the same seed.
Dataset and attribution
Trained on the Google Quick, Draw!
dataset (numpy_bitmap 28x28 drawings, padded to 32x32), which is released under
CC BY 4.0 by Google Creative Lab.
12,000 drawings per class were downloaded, filtered for empty and
over-inked drawings and exact duplicates, then split deterministically.
This model is released under the same CC BY 4.0 licence.