MOSS-Image (SFT) GGUF

GGUF builds of MOSS-Image (SFT), made by Moonbox for on-device use. Each precision is one file at the root of this repository; pick one by the memory you have. Only the model's own weights are converted: the other parts of the pipeline (text encoder, VAE, tokenizer) come from the original repository unless the section below says otherwise.

Files

The last column is how far each file is from the original BF16 weights: the relative RMS error of its dequantized weights, averaged over all parameters. Image-quality scores against BF16 outputs are added as each precision passes the image eval.

Precision File Size sha256 Checked against BF16
F16 moss-image-F16.gguf 10.17 GB f1c3f1d9fb5d 0.0000005 % (5.3e-9)
BF16 moss-image-BF16.gguf 10.17 GB 3b536d5ed977 exact
Q8_0 moss-image-Q8_0.gguf 5.69 GB 850308d0d7ff 0.52 %
Q6_K moss-image-Q6_K.gguf 4.53 GB dce216888fdd 1.7 %
Q5_K_M moss-image-Q5_K_M.gguf 4.04 GB 68a927d6a49e 3.1 %
Q4_K_M moss-image-Q4_K_M.gguf 3.57 GB f7139199aabb 5.7 %

How to run

These files are the MOSS-Image (SFT) diffusion transformer only. Text encoder (Qwen3.5 9B) and VAE are separate: Qwen3.5-9B-Q8_0.gguf from unsloth/Qwen3.5-9B-GGUF, flux2-vae.safetensors from Comfy-Org/MOSS-Image (vae/) = FLUX.2's VAE.

stable-diffusion.cpp (the runtime our benchmark uses, commit 465adf3):

sd-cli --diffusion-model moss-image-Q8_0.gguf --llm Qwen3.5-9B-Q8_0.gguf --vae flux2-vae.safetensors \n  --tokenizer tokenizer.json -p "a lovely cat holding a sign says 'moss-image.cpp'" --cfg-scale 3.0 -W 1024 -H 1024

Pass MOSS-Image's own tokenizer.json (from OpenMOSS-Team/MOSS-Image-SFT) with --tokenizer: Qwen3.5 uses a different vocabulary from the embedded one. Defaults: 50 steps, CFG 3, flow shift 5.

ComfyUI with ComfyUI-GGUF: the stock ComfyUI-GGUF loader does not know moss_image yet.

Which file: Q8_0 is the closest to the original at about half the size; Q6_K and Q5_K_M trade a little fidelity for memory; Q4_K_M is the smallest. BF16 / F16 are the unquantized weights.

License. Apache-2.0 (in this repository).

How these were made

From MOSS-Image (SFT) at revision f972bd4b4b: the original BF16 weights converted to GGUF F16 / BF16, then quantized with llama.cpp's llama-quantize. Every file was checked against the original before upload; the sha256 column above is what the files must hash to.

License

Apache-2.0. These files are a derivative of the original model and carry its license: it is copied in this repository, and it governs your use of these files. The original model card follows unchanged.


Original model card

MOSS-Image-SFT

MOSS-Image

Hugging Face ยท MOSS-Image-Base   Hugging Face ยท MOSS-Image-SFT   ModelScope ยท MOSS-Image-Base   ModelScope ยท MOSS-Image-SFT   GitHub   Hugging Face Spaces ยท Demo   MOSI API Platform   Homepage   Technical Report   arXiv: 2610.23374   Follow OpenMOSS on X   MOSS-Image QQ ไบคๆต็พค๏ผš755535143   MOSS-Builders Feishu Community   MOSS-Image Discord Community

User guide   ยท   ไธญๆ–‡็”จๆˆทๆŒ‡ๅ—   ยท   ComfyUI

MOSS-Image-Base and MOSS-Image-SFT

MOSS-Image-SFT is a supervised fine-tuned text-to-image model in the MOSS-Image family from OpenMOSS, derived from MOSS-Image-Base. It uses the same architecture and inference pipeline, supporting natural-language prompts, tag sequences, and JSON layouts for controlling text placement and object arrangement.

Base vs. SFT

In this example, SFT produces clearer text grouping and a more organized whiteboard layout.

MOSS-Image-Base MOSS-Image-SFT
MOSS-Image-Base MOSS-Image-SFT

Quick start

Use Python 3.10 or later and an NVIDIA GPU with CUDA support. Install a PyTorch 2.9 or later build compatible with your CUDA environment, then install:

pip install "diffusers>=0.38" "transformers>=5.3" "accelerate>=1.10" "safetensors>=0.6" "Pillow>=10"
import torch
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained(
    "OpenMOSS-Team/MOSS-Image-SFT",
    custom_pipeline="pipeline_moss_image",
    trust_remote_code=True,
    torch_dtype={"default": torch.bfloat16, "vae": torch.float32},
)
pipe.scheduler = type(pipe.scheduler).from_config(pipe.scheduler.config)
pipe.to("cuda")

prompt = '''A wide view of a refrigerator beside a kitchen counter with a fruit bowl. A small sticky note on the refrigerator door is handwritten in Chinese:
"่ฎฐๅพ—ไนฐ็‰›ๅฅถๅ’Œ้ธก่›‹๏ผ
็‰›ๅฅถไธค็›’๏ผŒ้ธก่›‹ไธ€ๆ‰“ใ€‚
้กบไพฟๅธฆไธ€่ข‹้ขๅŒ…ใ€‚"'''

image = pipe(
    prompt,
    height=1024,
    width=1024,
    num_inference_steps=50,
    guidance_scale=3.0,
    uncond_skip_layers=[22],
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("refrigerator_note.png")

The model and custom pipeline code are downloaded and cached automatically. You can also pass a complete local model directory to from_pretrained. The transformer and text encoder use bfloat16; the VAE and initial noise use float32. The bundled VAE uses the FLUX.2 small decoder.

For the Gradio interface, CPU offload, and compilation options, follow the project quick start. For ComfyUI, search for MOSS-Image in ComfyUI Manager to install the native plugin. Integration into the official ComfyUI repository is in progress. See the installation and usage guide and example workflow.

Sampling settings

Setting Default
Sampler Flow-matching Euler
Steps 50
CFG 3
Shift 5
Layer skipping Negative branch, layer index 22 (zero-based)
Negative prompt Empty

The default guidance uses two transformer forwards per step. Pass uncond_skip_layers=[] to disable negative-branch skipping, or set negative_prompt to provide a negative prompt. Python API image dimensions must be positive multiples of 16.

See the user guide for resolution, sampling, prompt, and LoRA training recommendations.

Prompt enhancer skill

The MOSS-Image Prompt Enhancer turns image ideas into detailed captions or spatial Layout prompts. It is designed for GPT-6-family agents with local file and Python tools. The bundled script converts pixel-coordinate drafts into compact JSON with integer centered coordinates; it does not call an image-generation service.

Install the skill folder in your agent's skills directory, then invoke $moss-image-prompt-enhancer with your image idea, desired caption or Layout output, and any canvas dimensions. Paste the compiled result into MOSS-Image's positive prompt; for Layout, use the same generation dimensions.

Layout-to-image generation

Pass a JSON layout as the prompt to describe the scene, rendered text, objects, and their positions. Layouts use summary.caption and items, with bbox_format: "yxyx" and bbox_coord_space: "abs_centralized".

With the Python API, serialize the layout using json.dumps(layout, ensure_ascii=False) and pass it to pipe. In Gradio, paste the JSON into the Prompt field and set the matching image dimensions. See the layout format and example.

Layouts can also support controlled editing and user-friendly layout tools. Edit text, element descriptions, and bounding boxes to adjust image content and composition in a structured way.

Layout control

Showcase

Examples overview

Examples overview 2

Citation

@misc{ai2026mossimagetechnicalreport,
      title={MOSS-Image Technical Report},
      author={MOSI. AI},
      year={2026},
      eprint={2610.23374},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2610.23374},
}

License and acknowledgements

The model weights and bundled inference code are released under the Apache License, Version 2.0.

We thank the Diffusers, Qwen, and FLUX teams.

Downloads last month
7
GGUF
Model size
5B params
Architecture
moss_image
Hardware compatibility
Log In to add your hardware

4-bit

5-bit

6-bit

8-bit

16-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for moonbox-dev/MOSS-Image-SFT-GGUF

Quantized
(54)
this model

Paper for moonbox-dev/MOSS-Image-SFT-GGUF