Qwen-Image-2.1-viggle-turbo-4step-lora-r64.safetensors

Update:Sep 23, 2026 23:02|Published:Sep 23, 2026 23:02
0
0
0
Qwen-Image-2.1-viggle-turbo-4step-lora-r64.safetensors. --- license: other license name: qwen-research license link: LICENSE base model: Qwen/Qwen-Image-2.1 base model relation: ad…
Avatar
Gugugaga
Type
LoRA
Basic Model
Qwen-Image
Published time
Sep 23, 2026 23:02
File Signature
62c82ae5f0f3313a5eba24afa2720e90d1388f303a6be8137b72e4a3fb66b386
Qwen-Image-2.1-viggle-turbo-4step-lora-r64.safetensors
324.09 MB

license: other license_name: qwen-research license_link: LICENSE base_model: Qwen/Qwen-Image-2.1 base_model_relation: adapter library_name: diffusers pipeline_tag: text-to-image tags:

  • diffusers
  • lora
  • text-to-image
  • image-to-image
  • image-editing
  • distillation
  • dmd
  • turbo
  • few-step
  • qwen-image

Qwen-Image-2.1-viggle-turbo — v0.1 (preview)

Built with Qwen. A 4-step distilled student of Qwen/Qwen-Image-2.1, trained by Viggle with Distribution Matching Distillation. It does both text-to-image and instruction-driven editing with 1–3 reference images in 4 transformer passes instead of 40, with no classifier-free guidance.

Two students are shipped — pick one:

  • transformer/ — full fine-tuned transformer (bf16, 14.2 GB). Replaces the base transformer; exact, no adapter. This is what the demo Space runs by default and the one we currently recommend — in our qualitative comparison it edits more faithfully than the LoRA.
  • Qwen-Image-2.1-viggle-turbo-4step-lora-r64.safetensors — LoRA adapter (rank 64, 340 MB) loaded on top of the base transformer at runtime. Smaller download, slightly weaker.

Status: v0.1 preview, work in progress — this release still falls short of the base model. On complicated image editing (multi-reference composition, face swaps, identity-preserving edits, instructions with several constraints) it is clearly worse than the 40-step base model. Text-to-image at 4 steps is usable. We are still working on it and will update this repository as the distillation improves; treat the current weights as a preview, not a replacement for the base model.

What's inside

transformer/                                             # full fine-tuned transformer (config.json + bf16 safetensors)
Qwen-Image-2.1-viggle-turbo-4step-lora-r64.safetensors   # the LoRA adapter (rank 64, alpha 64), diffusers key format, bf16
peft/                                                    # the same adapter in peft key format, F32 as trained
scheduler/scheduler_config.json                          # base scheduler config with shift_terminal: null
LICENSE, NOTICE, README.md

Both students are step-400 EMA checkpoints of their respective runs (the full fine-tune adds a low-frequency teacher anchor to the DMD objective). The LoRA is never merged into the transformer — merging into bf16 is lossy, loading it at runtime is exact. Text encoder, VAE and processor are not redistributed; they load from the base repo.

Install

pip install -U torch "transformers>=5.17,<6" accelerate safetensors peft pillow
pip install "git+https://github.com/huggingface/diffusers.git@80c7ed262aeffbeb43ef13ae04baeb9b84515a69"

QwenImage21Pipeline is not in a released diffusers yet, hence the pinned git install. peft is required.

Usage

Load the full fine-tuned transformer (recommended)

import torch
from diffusers import QwenImage21Pipeline, QwenImage21Transformer2DModel, FlowMatchEulerDiscreteScheduler

transformer = QwenImage21Transformer2DModel.from_pretrained(
    "Viggle/Qwen-Image-2.1-viggle-turbo", subfolder="transformer", torch_dtype=torch.bfloat16
)
pipe = QwenImage21Pipeline.from_pretrained("Qwen/Qwen-Image-2.1", transformer=transformer, dtype=torch.bfloat16)
pipe.scheduler = FlowMatchEulerDiscreteScheduler.from_pretrained(
    "Viggle/Qwen-Image-2.1-viggle-turbo", subfolder="scheduler"
)
pipe.to("cuda")

… or load the LoRA instead

pipe = QwenImage21Pipeline.from_pretrained("Qwen/Qwen-Image-2.1", dtype=torch.bfloat16)
pipe.load_lora_weights(
    "Viggle/Qwen-Image-2.1-viggle-turbo",
    weight_name="Qwen-Image-2.1-viggle-turbo-4step-lora-r64.safetensors",
)
pipe.scheduler = FlowMatchEulerDiscreteScheduler.from_pretrained(
    "Viggle/Qwen-Image-2.1-viggle-turbo", subfolder="scheduler"
)
pipe.to("cuda")

Do not load the LoRA on top of the fine-tuned transformer — they are separate students.

Text to image

image = pipe(
    prompt="A studio portrait of an old fisherman mending a net, warm rim light, 85mm.",
    height=1024,
    width=1024,
    num_inference_steps=4,
    true_cfg_scale=1.0,                                   # no CFG (also the default)
    generator=torch.Generator("cuda").manual_seed(0),
).images[0]
image.save("out.png")

Image editing (1–3 reference images)

from diffusers.utils import load_image

See the full description on the original page

Gallery

No creation yet