ChatR Labs Uncensored Omni — Quantized

Try the Playground Base model

Quantized builds at adapter weight 1.0, for text-to-image generation and image editing.

This repository ships quantized transformer weights only. The model is our rank-128 Omni adapter merged into Qwen/Qwen-Image-2.1 at LoRA strength 1.0, then quantized. The text encoder, processor and VAE are not included; take them from the base repository.

Download

File Format Layout Size Runtime
qwen-image-2.1-step90000-BF16.gguf GGUF BF16 297 14.23 GB ComfyUI, Diffusers
qwen-image-2.1-step90000-Q8_0.gguf GGUF Q8_0 297 7.69 GB ComfyUI, Diffusers
qwen-image-2.1-step90000-Q6_K.gguf GGUF Q6_K 297 6.00 GB ComfyUI, Diffusers
qwen-image-2.1-step90000-Q5_K_M.gguf GGUF Q5_K_M 297 5.21 GB ComfyUI, Diffusers
qwen-image-2.1-step90000-Q4_K_M.gguf GGUF Q4_K_M 297 4.47 GB ComfyUI, Diffusers
qwen-image-2.1-step90000-Q4_0.gguf GGUF Q4_0 297 4.20 GB ComfyUI, Diffusers
qwen-image-2.1-step90000-FP8-comfy.safetensors FP8 E4M3 265 7.12 GB ComfyUI only
qwen-image-2.1-step90000-INT8-ConvRot-comfy.safetensors INT8 ConvRot 265 7.26 GB ComfyUI only
qwen-image-2.1-step90000-NVFP4-comfy.safetensors NVFP4 265 4.20 GB ComfyUI only
qwen-image-2.1-step90000-FP8-torchao/ FP8 (torchao) 297 7.12 GB Diffusers only
qwen-image-2.1-step90000-NF4-bnb/ NF4 (bitsandbytes) 297 3.67 GB Diffusers only
qwen-image-2.1-step90000-INT8-bnb/ INT8 (bitsandbytes) 297 7.12 GB Diffusers only
qwen-image-2.1-step90000-BF16/ BF16 safetensors 297 14.23 GB Diffusers; ComfyUI (see BF16 workflow below)

File integrity information is in SHA256SUMS.

Which build should I use?

  • ComfyUI, one file, both workflows -> any GGUF. It also loads in Diffusers via from_single_file.
  • ComfyUI, native quant ops -> FP8, INT8 ConvRot or NVFP4.
  • Diffusers, smallest download -> NF4 (needs bitsandbytes).
  • Diffusers, best fidelity -> FP8 (torchao) (needs torchao).
  • Maximum fidelity overall -> BF16 GGUF, BF16 safetensors or Q8_0.
  • Diffusers without the gguf package -> the BF16 folder (plain from_pretrained).

The 297 and 265 layouts use different MLP representations: 265 uses the fused img_mlp.gate_up projection; 297 keeps the separate gate_layer / proj pair. A loader must support the selected layout. The BF16 ComfyUI workflow below was verified with the 297-tensor safetensors file and the native UNETLoader in ComfyUI 0.39.0; support should not be assumed for older or different loaders.

Recommended settings

These are the values from our inference grid search for the non-distilled model.

Setting Starting value
Base components Text encoder, processor and VAE from Qwen/Qwen-Image-2.1
Sampling steps 35
True CFG scale 5.0 (both text-to-image and editing)
Sampler er_sde with the simple scheduler (ComfyUI)
Negative prompt A single space: " "
Output resolution 768 x 1152 or 1024 x 1024
KV cache Enabled

An omitted or empty negative prompt disables true CFG even when true_cfg_scale is greater than 1. Use a single space if you do not need a specific negative prompt. This is a regular LoRA merge; it does not provide few-step distillation.

Usage with ComfyUI

ComfyUI/models/
|-- diffusion_models/    qwen-image-2.1-step90000-Q5_K_M.gguf
|-- text_encoders/       <Qwen-Image-2.1 text encoder>
`-- vae/                 <Qwen-Image-2.1 VAE>
  • GGUF: Unet Loader (GGUF) -> pick the file. Works for both text-to-image and editing.
  • Comfy native: Load Diffusion Model -> pick a -comfy.safetensors file.
  • Editing: encode the reference image with Text Encoder (Qwen-Image) in edit mode; the latent comes from that node.
  • Sampler: er_sde, scheduler simple, 35 steps, CFG 5.0.

Text-to-image workflow: BF16 transformer, INT8 text encoder, BF16 VAE

Download workflow_example.json and drag it into ComfyUI, or open it with the workflow Load command. This is a ComfyUI UI workflow for text-to-image generation. It uses an EmptyLatentImage and does not require reference images.

The tested environment is ComfyUI 0.39.0 (commit b0b7435), with frontend 1.53.6. Use this version or a compatible build with the native TextEncodeQwenImage21, QwenImage21Cache and INT8 ConvRot text-encoder support. All nine nodes in this workflow are built into the tested ComfyUI version.

Download the following three components and place them at these paths relative to your ComfyUI folder:

Component Download Local path expected by the workflow
BF16 transformer ChatR Labs BF16 safetensors models/diffusion_models/chatrlabs_qwen_image21_step90000_bf16.safetensors
INT8 ConvRot text encoder Comfy-Org Qwen3-VL-8B models/text_encoders/qwen3vl_8b_int8_convrot.safetensors
BF16 VAE Comfy-Org Qwen-Image-2.1 VAE models/vae/qwen_image_2.1_vae_bf16.safetensors

Rename the downloaded transformer from diffusion_pytorch_model.safetensors to chatrlabs_qwen_image21_step90000_bf16.safetensors; its weights are unchanged. Refresh the model lists or restart ComfyUI, then check the selections in UNETLoader, CLIPLoader (type qwen_image) and VAELoader. Here, BF16 refers to the transformer and VAE; the text encoder is INT8 ConvRot.

Saved setting Value
Steps / CFG 35 / 5.0
Sampler / scheduler er_sde / simple
Seed / seed control 12347 / fixed
Width / height / batch size 1728 / 1728 / 1
Denoise 1.0
Negative prompt A single space: " "
KV cache device / dtype auto / default

Edit the prompt in TextEncodeQwenImage21, set the output dimensions in EmptyLatentImage, and adjust the seed in KSampler as needed before queuing. The saved 1728 x 1728 resolution is this example's setting; larger images require more memory than the starting resolutions above. SaveImage writes to ComfyUI/output/ with the saved prefix sample_0006_seed12347; update the prefix for your own runs. The workflow's SHA-256 is included in SHA256SUMS.

Usage with Diffusers

GGUF

import torch
from diffusers import QwenImage21Pipeline, QwenImage21Transformer2DModel, GGUFQuantizationConfig

transformer = QwenImage21Transformer2DModel.from_single_file(
    "qwen-image-2.1-step90000-Q5_K_M.gguf",
    quantization_config=GGUFQuantizationConfig(compute_dtype=torch.bfloat16),
    config="Qwen/Qwen-Image-2.1",
    subfolder="transformer",
    torch_dtype=torch.bfloat16,
)
pipe = QwenImage21Pipeline.from_pretrained(
    "Qwen/Qwen-Image-2.1", transformer=transformer, torch_dtype=torch.bfloat16,
)
pipe.enable_model_cpu_offload()

FP8 / NF4 / INT8 folders

import torch
from diffusers import QwenImage21Pipeline, QwenImage21Transformer2DModel

transformer = QwenImage21Transformer2DModel.from_pretrained(
    "chatrlabs/Qwen-Image-2.1-Uncensored-Omni-Quantized",
    subfolder="qwen-image-2.1-step90000-FP8-torchao",
    torch_dtype=torch.bfloat16,
)
pipe = QwenImage21Pipeline.from_pretrained(
    "Qwen/Qwen-Image-2.1", transformer=transformer, torch_dtype=torch.bfloat16,
)

The INT8 build stores its non-quantized tensors in FP16, so load both the transformer and the pipeline with torch_dtype=torch.float16.

Text to image

image = pipe(
    prompt="A blue ceramic mug on a wooden table by a window, soft morning light, product photography",
    negative_prompt=" ",
    width=1024,
    height=1024,
    num_inference_steps=35,
    true_cfg_scale=5.0,
    use_kv_cache=True,
    generator=torch.Generator("cuda").manual_seed(42),
).images[0]
image.save("generated.png")

Image editing

from PIL import Image

reference = Image.open("generated.png").convert("RGBA")
image = pipe(
    image=[reference],
    prompt="Change the mug to green, keep everything else unchanged",
    negative_prompt=" ",
    width=1024,
    height=1024,
    output_resolution=1024,
    num_inference_steps=35,
    true_cfg_scale=5.0,
    use_kv_cache=True,
    generator=torch.Generator("cuda").manual_seed(45),
).images[0]
image.save("edited.png")

Keep VAE tiling off: tiled decoding adds visible vertical colour streaks.

Benchmark

We compared both public checkpoints from this training run with the original Qwen-Image-2.1 base model, using the same prompts, seed and settings (35 steps, CFG 5.0). This repository is step 90,000 (benchmarked as the BF16 LoRA fused at strength 1.0; the quantized files were not scored separately). Scores are 0–100, higher is better, ± one standard error.

Benchmark Base Step 32,000 (LoRA v0.1) Step 90,000 (Quantized)
Adult prompt adherence (960 images) 85.1 ± 0.9 87.4 ± 0.8 89.7 ± 0.7
Anatomy (960 images) 70.3 ± 1.4 67.7 ± 1.4 69.4 ± 1.4
General SFW prompts (300 PartiPrompts) 79.8 ± 2.0 75.8 ± 2.2 79.6 ± 2.0
  • Prompt adherence on adult content improves with training: +2.3 at step 32,000 and +4.6 at step 90,000 over the base model (both significant).
  • On ordinary SFW prompts, step 32,000 is 4.0 points below the base model; step 90,000 is within noise of it.
  • Neither checkpoint improves anatomy over the base model.

Scores come from AI judges (Qwen3.8-27B for adherence, Gemma 4 31B for anatomy) on a held-out test set that does not overlap the training data. See BENCHMARK.md for per-caption-length and per-category results, the exact judge questions, and limitations.

Memory and performance

Measured on a single RTX 5090 (32 GB), 35 steps, er_sde, 768 x 1152:

Build Peak VRAM Time per image (text to image) Time per image (edit)
BF16 ~14 GB ~28 s ~32 s
Q5_K_M ~8 GB ~28 s ~32 s
NVFP4 ~4 GB ~30 s ~34 s

Editing and ControlNet runs add reference and control latents; budget a few GB more. The BF16 pipeline does not fit comfortably beside a full text encoder on a 24 GB card - use CPU offload there.

These are individual timings, not comparative quality benchmarks.

Quantization details

Property Value
Base Qwen-Image-2.1
Adapter ChatR Labs rank-128 Omni LoRA, merged at strength 1.0
Training checkpoint Step 90000
Adapted modules 224
Diffusers-layout tensors 297
Comfy-layout tensors 265
GGUF tool ComfyUI-GGUF convert.py, per-block quantization
Comfy FP8 TensorCoreFP8E4M3Layout, per-tensor scale, 229 modules
Comfy INT8 ConvRot convrot, group size 256, 224 modules
Comfy NVFP4 TensorCoreNVFP4Layout, 192 fused modules
Diffusers FP8 torchao Float8WeightOnlyConfig, per-row scale
Diffusers NF4 bitsandbytes 4-bit NF4 with double quantization
Diffusers INT8 bitsandbytes 8-bit

The text encoder and VAE are untouched in every build; differences between builds come from the transformer only.

About "uncensored"

The checkpoints and example code do not add a prompt filter or output safety checker. The name describes the intended release, not a guarantee that every requested concept will be rendered. Results depend on the prompt, the build you load, and the application running it.

Source and license

  • Released by: ChatR Labs
  • Base model: Qwen/Qwen-Image-2.1
  • Modification: ChatR Labs merged a rank-128 adapter into the base transformer at strength 1.0 and produced GGUF, FP8, INT8, NVFP4 and NF4 builds. This repository distributes quantized transformer weights only.
  • License: Qwen Research License Agreement. Use is limited to non-commercial research and evaluation unless separately licensed by the upstream rights holder.
  • Checksums: SHA256SUMS

Built with Qwen. This is a community fine-tune by ChatR Labs, independent of the upstream Qwen team.

Infrastructure Support

GPU compute used for the development and evaluation of this release was provided by Chatr AI.

We thank the Chatr AI team for supporting this research release.

Downloads last month
49,053
GGUF
Model size
7B params
Architecture
qwen_image21
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 chatrlabs/Qwen-Image-2.1-Uncensored-Omni-Quantized

Quantized
(171)
this model