Sana Sprint 0.6B 1024px GGUF
Conversions of Sana Sprint 0.6B for the Sana implementation in Loina's stable-diffusion.cpp fork.
The default is Q8_0. Its denoiser is only 68 MB larger than Q6_K and had the lowest error and fastest execution among the quantized variants in the small CPU diagnostics. This is a provisional choice based on numerical fidelity and size; 1024px visual quality and mobile performance have not been validated.
| File | Decimal size |
|---|---|
sana-sprint-bf16.gguf |
1187.3 MB |
sana-sprint-q4_k_m.gguf |
506.5 MB |
sana-sprint-q5_k_m.gguf |
541.9 MB |
sana-sprint-q6_k.gguf |
579.5 MB |
sana-sprint-q8_0.gguf |
647.4 MB |
dc-ae-f16.gguf (encoder + decoder) |
625.1 MB |
dc-ae-decoder-f16.gguf (text-to-image only) |
318.8 MB |
dc-ae-q8_0.gguf (optional mixed Q8 encoder + decoder) |
399.5 MB |
The full Q8 package needs four artifacts: the Q8 denoiser, full DC-AE, tokenizer.json, and BafS's Gemma 2 2B IT Q4_K_M. The model artifacts total 3.015 GB; the standalone CPU package including its CLI is about 3.056 GB. For text-to-image only, use the smaller decoder file (2.750 GB including the CLI). Download only the denoiser variant you intend to use.
Quantization
These are protected conversions, not uniform quantization of every tensor. Normalization weights remain F32. Biases, modulation tables, timestep and guidance embeddings, caption projections, and input/output projections retain their source floating precision. BF16 linear weights use F32 arithmetic in the Sana runtime to avoid rounding their activations to BF16. Depthwise convolution weights retain their source precision and are executed through the F16 convolution kernels.
Q6_K, Q5_K_M and Q4_K_M use Q8_0 for the first two and last two transformer blocks and the cross-attention key/value projections. Self-attention query/key/value projections and the feed-forward output projections use Q6_K. The remaining projections use the variant's main K-quant type. The _M recipes are specific to this Sana model.
Sana's 1152/2880-column matrices are not divisible by 256. K-quant files contain zero-padded input columns, with matching activation padding in the Sana runtime. The K-quant files require the padded-projection Sana implementation in the Loina fork. They cannot be used by an implementation that assumes the original physical matrix dimensions.
The BF16 file uses BF16 weights with F32 normalization. Conversions and packing use scripts/prepare_sana.py in Loina's stable-diffusion.cpp fork; the Sana changes must be present in the runtime build. See quantization.json for hashes, exact tensor-type counts, the recipe and diagnostic results.
The optional Q8 DC-AE quantizes only its 108 attention and pointwise projection weights. Spatial and grouped convolutions, biases, and input/output layers stay F16; normalization stays F32. It reduced the full DC-AE from 625.1 to 399.5 MB. On 64px fixtures, encoder latent relative RMS error was about 2%, decoder pixel PSNR was 55.9 dB against PyTorch, and complete image reconstruction PSNR was 38.9 dB relative to FP16. The FP16 file remains the default to preserve img2img input encoding. Using Q8 DC-AE reduces the model package to 2.790 GB (about 2.831 GB including the CLI).
Generate
Use a build containing Sana Sprint support:
sd-cli --diffusion-model sana-sprint-q8_0.gguf \
--llm gemma-2-2b-it-q4_k_m.gguf \
--tokenizer tokenizer.json --vae dc-ae-f16.gguf \
--sampling-method scm --cfg-scale 1 --guidance 4.5 \
--steps 2 --width 1024 --height 1024 \
-p "a red fox in a snowy forest" -o fox.png
Use 1–4 SCM steps and image dimensions divisible by 32. Negative prompts are ignored, matching Sana Sprint's distilled guidance. For image-to-image, add -i input.png --strength 0.75 and use dc-ae-f16.gguf. No additional denoiser or prompt encoder is needed. Strength selects the starting trigflow angle continuously; lower values preserve more of the input, 1 starts from full noise, and 0 returns the resized input without inference. The decoder-only file is useful for text-to-image but cannot encode an input image. Instruction-based editing and inpainting are not validated.
Validation and licenses
The pretrained 28-layer denoiser was compared with PyTorch using precomputed embeddings: F32 linear arithmetic with F16 depthwise convolution produced an RMS error of 0.00613. The full FP16 encoder matched a separate 64×64 PyTorch reference with relative RMS error 0.000836. The FP16 pretrained decoder produced an RMS error of 0.000148 on a separate 64px test. Zero-padding produced identical unquantized outputs. All four quantized variants loaded and produced finite outputs in three diagnostic cases. SCM matched Diffusers within 1.2e-7 for 1, 2 and 4 steps. A 128px CPU pipeline smoke test completed, and img2img strength 0, 0.25, 0.75 and 1 passed CPU and Vulkan pipeline checks. A 1024px Vulkan render stopped because available shared memory was below the runtime requirement. These checks do not establish 1024px visual quality or phone performance.
Sana weights retain their Apache-2.0 license. The DC-AE model is MIT licensed. Gemma and its tokenizer are subject to the Gemma Terms of Use. Gemma weights are linked separately and are not included in this repository.