Kromoss: lodestones' Sharper MOSS-Image Fine-Tune

Introduction
MOSS-Image has its first big community fine-tune. lodestones, the trainer behind the Chroma image models, published Kromoss on Hugging Face this morning (October 19, about 01:30 UTC). It's a full fine-tune of OpenMOSS's 5B MOSS-Image-Base at 1024 px, released under Apache-2.0, and its main job is to fix the Base model's softness and blur.
It comes with its own 8-step turbo LoRA, and the files are laid out to drop straight into the native ComfyUI MOSS-Image workflows. If you already run MOSS locally, trying it means swapping one file.
We've been following MOSS-Image all week, from the open-weights launch to native ComfyUI support and lodestones' 8-step DMD LoRAs. Kromoss is the next step: new weights, not just a speed-up.
What Shipped
- Model: Kromoss, by lodestones
- Base: MOSS-Image-Base (OpenMOSS), full fine-tune of every transformer parameter
- Modality: text-to-image, 1024 px
- License: Apache-2.0 for the weights and the bundled inference code
- Checkpoint: update 2000 of the fine-tune (EMA weights), trained on 128k images
- Where to run it: ComfyUI (native MOSS-Image support) or diffusers with the bundled custom pipeline
It keeps the same architecture, text encoder (Qwen3.5-9B) and VAE (the small FLUX.2 decoder) as MOSS-Image-SFT, and the repo uses the same layout. The model card calls it a drop-in replacement.
The numbers
lodestones ran the 100-prompt PartiPrompts set and scored it with CLIP ViT-L/14:
- MOSS-Image-Base, 50 steps, CFG 3: 27.19
- MOSS-Image-Base plus LoRA, 8 steps, CFG 1: 27.53
- Kromoss, 50 steps, CFG 3: 26.88
- Kromoss plus LoRA, 8 steps, CFG 1: 27.82
The best score in the table is Kromoss running in turbo mode. One honest caveat: CLIP scores measure prompt match, not sharpness, and the full 50-step Kromoss run scores slightly under Base. The anti-blur claim lives in the side-by-side sheet on the model card, so judge it with your own eyes and your own prompts.
The 8-Step Turbo LoRA
The repo bundles 8-steps-dmd-lora.safetensors (about 1.19 GB), a data-space DMD distillation of MOSS-Image-Base. It's rank 128 / alpha 128 on every block's attention and feed-forward projections, stored in fp32 with kohya-style keys.
- Full model: flow-matching Euler, 50 steps, CFG 3, shift 5, negative branch with layer 22 skipped
- With the LoRA: flow-matching Euler, 8 steps, CFG 1, shift 5, no negative branch
The card has one firm rule: load the LoRA unmerged at strength 1. Don't bake it into the bf16 weights, because the change is close to bf16's rounding step and merging would wash it out.
How to Run It in ComfyUI
You need current ComfyUI with native MOSS-Image support. If the MOSS template crashed for you on v0.42.0, update first: v0.42.0 brought MOSS into a stable tag, and v0.42.1, tagged a few hours ago, fixes crashes some users hit in the MOSS image template workflow.
Grab the files from the repo and put them here:
diffusion_models/kromoss_bf16.safetensors(about 10.2 GB) goes inmodels/diffusion_models/and loads with Load Diffusion Modeltext_encoders/qwen3.5_9b_bf16.safetensors(about 19.3 GB) goes inmodels/text_encoders/and loads with Load CLIP, typemoss_imagevae/flux2-vae_small.safetensorsgoes inmodels/vae/and loads with Load VAE8-steps-dmd-lora.safetensorsgoes inmodels/loras/and loads with LoraLoaderModelOnly at strength 1
Then open a Comfy-Org MOSS-Image workflow and swap kromoss_bf16.safetensors in for moss_image_sft_bf16.safetensors. Keep 50 steps and CFG 3 for the full model. For turbo mode, add the LoRA and set your KSampler to euler / simple, 8 steps, CFG 1.
If you already have the text encoder and VAE from your MOSS setup, the only new big download is the 10 GB diffusion model.
Prefer diffusers?
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(
"lodestones/Kromoss",
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")
image = pipe(
"a tabby cat holding a sign that says KROMOSS",
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("kromoss.png")Bonus: Convert Your Own Fine-Tune
Kromoss ships convert_to_comfy.py, which turns any MOSS-Image diffusers transformer/ folder into ComfyUI's single-file format. It needs only torch and safetensors. According to the card, running it on MOSS-Image-SFT reproduces Comfy-Org's official file byte for byte, and a --compare flag checks keys, shapes and dtypes against a reference.
python convert_to_comfy.py path/to/transformer my_model_bf16.safetensorsThat's a quiet gift for anyone training MOSS checkpoints of their own.
Training Recipe
- Full fine-tune of every transformer parameter at 1024 px, with images under 896 px square dropped
- The MOSS-Image report's final-stage recipe, scaled to 64 images per update
- Hybrid Muon-AdamW optimizer, learning rate 9e-6, warmup 200
- Truncated logit-normal timesteps
- Final-block q/k-norm decay to one
- EMA 0.999, and the published weights are the EMA
Conclusion
Kromoss is exactly what an open model needs to grow up: a respected community trainer taking the base checkpoint, cleaning up its weak spot, and shipping it with a turbo LoRA and a converter so everyone else can do the same. It's an early checkpoint, so expect updates. If MOSS-Image's layout skills hooked you but the Base renders felt soft, this is the one file worth swapping in today.
Original Source
—Aurelia ♡
