Qwen-Image-Edit-2511 β€” Lightning 8-step (merged, BF16)

This is Qwen/Qwen-Image-Edit-2511 (~20B MMDiT image-editing model) with the 8-step Lightning distillation LoRA from lightx2v/Qwen-Image-Edit-2511-Lightning (Qwen-Image-Edit-2511-Lightning-8steps-V1.0-bf16) fused into the base weights and re-saved as a standard diffusers pipeline in BF16.

The point of merging is serving: inference engines (e.g. vllm-omni's /v1/images/edits) that don't support per-request LoRA can serve this like any ordinary model β€” the serving layer never has to know about the LoRA. Run it with num_inference_steps=8 for fast, near-distilled-quality edits.

  • Pipeline: QwenImageEditPlusPipeline (diffusers 0.38.0)
  • Precision: BF16
  • On-disk size: ~54 GB (transformer ~39 GB across 5 shards + text_encoder ~15.8 GB + vae 0.24 GB + configs)
  • License: Apache-2.0 (both the base model and the Lightning LoRA are Apache-2.0)

Why this repo exists

It's a convenience artifact: a single from_pretrained-able directory so a fresh GPU box (e.g. a cloud VM) can pull the ready-to-serve 8-step model in one step, instead of downloading the base model + LoRA and running the merge locally. The merge was done offline with fuse_lora() (see Reproduce below).

Recommended inference settings (virtual try-on / image edit)

setting value
num_inference_steps 8
true_cfg_scale 1.0 (CFG off β†’ forward passes = step count)
resolution 1024px
inputs 1 person image + 1–3 garment images (model hard cap = 4 images total)

Usage β€” diffusers

import torch
from diffusers import DiffusionPipeline
from diffusers.utils import load_image

pipe = DiffusionPipeline.from_pretrained(
    "swordKoala/Qwen-Image-Edit-2511-Lightning-8step-merged",
    torch_dtype=torch.bfloat16,
).to("cuda")

image = load_image("person.jpg")
out = pipe(
    image=image,
    prompt="Put the garment on the person, photorealistic, preserve identity.",
    num_inference_steps=8,
    true_cfg_scale=1.0,
).images[0]
out.save("result.png")

Full BF16 load needs ~50 GB+ of VRAM on a single GPU (L40S 48GB is borderline and may need CPU offload / FP8; A100 80GB, H100 80GB, RTX PRO 6000 Blackwell 96GB load it cleanly).

Usage β€” vllm-omni (OpenAI-compatible /v1/images/edits)

docker run -d --name qwen-serve-8step --gpus all --ipc=host --shm-size=16g   -p 8100:8000   -v /models/Qwen-Image-Edit-2511-Lightning-8step-merged:/models/qwen-merged:ro   --entrypoint bash vllm/vllm-omni:latest   -c 'exec vllm serve /models/qwen-merged --omni         --served-model-name Qwen/Qwen-Image-Edit-2511 --host 0.0.0.0 --port 8000'

Reproduce the merge

import torch
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained("Qwen/Qwen-Image-Edit-2511", torch_dtype=torch.bfloat16)
pipe.load_lora_weights(".../Qwen-Image-Edit-2511-Lightning-8steps-V1.0-bf16.safetensors")
pipe.fuse_lora()
pipe.unload_lora_weights()
pipe.save_pretrained("Qwen-Image-Edit-2511-Lightning-8step-merged")

Measured latency (reference)

On an NVIDIA GB10 / DGX Spark (213 TFLOPS BF16 dense, vllm-omni, 1024px, CFG off):

steps single garment (2 imgs) 3 garments (4 imgs)
4 16.0s 34.7s
8 31.0s 65.9s

Latency is ~linear in step count (β‰ˆ 1.1s + 3.73s Γ— steps). Faster GPUs scale roughly with BF16 dense TFLOPS (this workload is compute-bound, not bandwidth-bound).

Credits

Merged weights redistributed under Apache-2.0.

Downloads last month
10
Safetensors
Model size
20B params
Tensor type
BF16
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for swordKoala/Qwen-Image-Edit-2511-Lightning-8step-merged

Finetuned
(78)
this model