Stable Diffusion has a quantization problem. The standard post-training 8-bit approach that works fine for classification models falls apart on pixel-level prediction tasks — semantic segmentation, super-resolution, and now text-to-image generation all resist naive compression. The UNet at the heart of Stable Diffusion is computationally brutal, but it’s also packed with information from training on hundreds of millions of samples. There’s not much redundancy to strip away without breaking the output.

Intel’s OpenVINO team decided to stop fighting that reality and work with it. Their approach, detailed in a new technical walkthrough, pairs Quantization-Aware Training from the Neural Network Compression Framework (NNCF) with knowledge distillation, where the original full-precision model acts as a teacher while the quantized version trains as a student. They also threw in Exponential Moving Average for training stability and Token Merging — a technique Facebook Research originally built for Vision Transformers that merges redundant tokens before the expensive self-attention blocks. The result: 5.1x inference acceleration and a 4x model footprint reduction compared to PyTorch, running on plain CPUs.

The training setup is surprisingly accessible. Using gradient checkpointing and keeping the EMA model in RAM instead of VRAM, the whole optimization finishes in under a day on a single 24 GB GPU. They fine-tuned on the Pokemons dataset with just 4096 iterations — a tiny fraction of what the original model saw during training.

What’s notable here is the shift in strategy. Qualcomm tackled the same problem with AdaRound, a layer-wise knowledge distillation method. Intel’s bet is that if you’re going to fine-tune anyway, you might as well do full QAT and tune the quantization parameters directly. The stacking of quantization with token merging is also smart — the two optimizations compound rather than compete. For anyone deploying Stable Diffusion on edge devices or CPU-only servers, this is the kind of work that makes local inference actually viable instead of a slideware promise.