What it is
Drop in a photo and say what should change, or describe a new picture. The text encoder, the 32-block DiT and the VAE decoder all run on the NPU. The Radeon iGPU encodes the input photo while the NPU reads the prompt, and the CPU only does glue.
Models stay loaded between requests. The same prompt, seed and photo give the same bytes every time.
Ryzen AI 9 HX 375 (HP OmniBook Ultra 14). "tiny" is the laptop NPU build. A bigger sibling is coming :)
Pipeline
Red is the NPU, teal the iGPU, grey the CPU. The photo encode on the iGPU overlaps the text encoder, so it costs nothing. Text-to-image skips the photo branch.
Weights are bfp16: 8 values share one 8-bit exponent, 9 bytes per 8 values, laid out in the order the NPU cores read them. The conversion from the official weights runs once on your PC. What worked and what didn't is in AMD kernel hell.
Benchmarks
1024×1024, warm server unless noted.
| Model | Setup | Per image | |
|---|---|---|---|
| redline-tiny, text-to-image | Qwen-Image-2.1-Turbo (7B DiT + 8B encoder) | HX 375 NPU, 8 steps | 32–37 s |
| redline-tiny, edit | Qwen-Image-2.1-Turbo (7B DiT + 8B encoder) | HX 375 NPU, 8 steps | 44 s |
| redline-tiny, edit, cold | Qwen-Image-2.1-Turbo | HX 375 NPU, 8 steps, incl. all model loading | 66.5–69.8 s |
| VigenFlow, text-to-image | Qwen-Image-2.1-Turbo | Same laptop, 8 steps | 32.9–33.5 s |
| VigenFlow, edit | Qwen-Image-2.1-Turbo | Same laptop, 8 steps | 51–53 s |
| VigenFlow, edit, cold | Qwen-Image-2.1-Turbo | Same laptop, incl. all model loading | 74.8–75.6 s |
| Same edit on the CPU | Qwen-Image-2.1-Turbo | HX 375, PyTorch bf16 | 706 s |
| AMD/Stability NPU path (Amuse), PCWorld test | SD3 Medium (2B) | Ryzen AI 9 365 NPU, 20 steps | ~90 s |
| Same, HotHardware test | SD3 Medium (2B) | Ryzen AI Max+ 395 NPU, 1 MP + NPU upscale to 2048² | ~70 s |
VigenFlow was measured back to back on the same laptop, from the same input and starting noise. The other rows are not apples to apples: different models, step counts and chips. The SD3 Medium times are reviewers' measurements; AMD publishes no per-image timings for its NPU image models. The NPU is about 16× faster than the CPU on the same edit.
Gallery
Text-to-image on the NPU, 1024×1024, 8 steps, seed 0.





Requirements
- AMD Ryzen AI 300-series with an XDNA2 NPU. Tested on the Ryzen AI 9 HX 375 and the Ryzen AI 7 350; reports from other chips are welcome.
- 32 GB RAM. The NPU's buffers are pinned in system RAM, and the DiT alone peaks around 12 GB.
- Windows 11 with NPU driver 32.0.20101.3760 or newer (XRT 2.21), from AMD Software: Adrenalin Edition or your laptop maker. Not the
NPU_RAI_*_WHQL.zipdrivers from the Ryzen AI Software page: those are the older 32.0.203.x branch. - About 52 GB of disk.
Install
- Download the ZIP from GitHub and unzip it somewhere short, like
C:\redline-tiny. - Run
Install.cmd. It checks your PC and asks whether you already have the model and the NPU programs. Anything missing is only downloaded after it tells you what and how big. Packing the weights for the NPU takes a few minutes, once. - Double-click
redline-tinyon the desktop. The app opens in your browser.
Install.cmd -CheckOnly checks the chip, driver, RAM and disk without downloading anything.
Credits and licences
- Code: Apache-2.0. Some GEMM kernels are derived from AMD's mlir-aie examples (Apache-2.0 WITH LLVM-exception); everything is built with mlir-aie IRON and Peano.
- VigenFlow showed the way: the runtime-patched attention key count and the shape-generic VAE decoder programs come from it, rebuilt from scratch. 16 beers in debt.
- Model: Qwen-Image-2.1-Turbo by the Qwen team, under the Qwen Research License, non-commercial use only. The installer downloads the official files from Hugging Face.