Instructions to use mlx-community/MOSS-Image-Base-bf16 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use mlx-community/MOSS-Image-Base-bf16 with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] hf download mlx-community/MOSS-Image-Base-bf16 --local-dir MOSS-Image-Base-bf16
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
mlx-community/MOSS-Image-Base-bf16
MLX (bf16) conversion of OpenMOSS-Team/MOSS-Image-Base (Apache-2.0) for Apple Silicon. MOSS-Image-Base is the pretrained checkpoint that MOSS-Image-SFT is fine-tuned from: same architecture and prompts, with less curated composition. It is the starting point for LoRA training. For generation, prefer MOSS-Image-SFT-bf16.
Model
MOSS-Image pairs a 5B single-stream DiT with the Qwen3.5-9B text encoder and the FLUX.2 VAE with BFL's small decoder. Its DiT design:
- 42 blocks with one shared adaLN modulation
- SiTU-GLU FFN
- 4-axis RoPE
What it does well
- Long text, in English and Chinese. Line breaks in the prompt are kept.
- JSON layout prompts that place text and objects by bounding box:
summary.captionplusitems, withbbox_format: "yxyx"andbbox_coord_space: "abs_centralized"(pixels, centred on the canvas, same size as the request).
The snapshot is a standard diffusers tree (transformer/ text_encoder/ tokenizer/ vae/ scheduler/):
- The transformer and text encoder are bf16, the VAE fp32. The files are byte-identical to upstream revision
1ceede80. - The PyTorch custom pipeline (
pipeline_moss_image.py) stays upstream.
Sampling
| Setting | Value |
|---|---|
| Sampler | Euler flow matching |
| Steps | 50 |
| Shift | 5 (snapped to the training grid) |
| CFG | 3, with block 22 skipped in the negative branch |
| Negative prompt | empty |
Parity (Swift/MLX port vs the PyTorch reference, fp32, TF32 off)
| Component | Result |
|---|---|
| Qwen3.5-9B encoder, final hidden state | relL2 4.8e-6 |
| DiT, one forward (12 timestep / prompt / skip-layer cases) | relL2 1.1e-6 – 5.3e-6 |
| Scheduler sigmas (4 – 50 steps) | bit-exact |
| FLUX.2 small decoder | relL2 1.2e-6 |
| bf16 end-to-end (8 steps) vs fp32 | inside PyTorch's own bf16 drift |
Memory and speed (M5 Max, 1024², 50 steps)
| DiT tier | Resident | Peak | Denoise |
|---|---|---|---|
| bf16 | 10.3 GB | 26.2 GB | 113 s (2.27 s/step) |
| int8 (quantized at load) | 5.6 GB | 21.5 GB | about the same |
- Every step runs two transformer forwards (CFG).
- The peak is set by the bf16 text encoder (16.8 GB). The port loads it per request and releases it before denoising.
- Sizes from 256² to 1456² by area work; width and height must be multiples of 16.
Use (Swift / MLXEngine)
import MLXMossImage
import MLXToolKit
let package = MossImageBasePackage(configuration: MossImageConfiguration(quant: .bf16)) // weights materialize on load
try await package.load()
let r = try await package.run(T2IRequest(prompt: "A hand-painted sign that reads OPEN LATE", width: 1024, height: 1024, seed: 42)) as! T2IResponse
Code: https://github.com/xocialize/moss-image-swift (Swift/MLX port, MIT).
Training data (from the upstream technical report)
- Sources: about 3.2 billion image-text records from 16 public datasets. About 98% come from ReLAION, OmniCorpus and DataComp.
- Filtering: AI-generated images were filtered out.
- Captions: written by Gemma 4 and a Qwen model.
- Rights: the report makes no rights statement for the data.
Review the technical report before you use the model.
License
The weights are Apache-2.0, as released by OpenMOSS. Components:
- Text encoder: Qwen3.5-9B, Apache-2.0.
- VAE: FLUX.2 small decoder (Black Forest Labs), Apache-2.0.
Quantized
Model tree for mlx-community/MOSS-Image-Base-bf16
Base model
OpenMOSS-Team/MOSS-Image-Base