Introduction

Four steps, one guidance pass, three jobs. The LightX2V team (ModelTC) published Qwen-Image-2.1-Lightning-v2-RL on Hugging Face on Nov 2: repo created at 11:54 UTC, weights uploaded at 12:12 UTC. It's a distilled version of Alibaba's Qwen-Image 2.1, refined with reinforcement learning. It does text-to-image, single-reference editing and multi-reference generation in 4 denoising steps at CFG 1.0.

It's open weights under the Qwen Research License, so it inherits Qwen-Image 2.1's non-commercial terms. You can run it today in Diffusers (QwenImage21Pipeline). There's no ComfyUI-format file yet.

One thing to know before you download: some posts call this a "V2 LoRA", but it isn't one. The October Lightning v1 was a 67 MB LoRA (we covered it here: https://artrealmai.com/article/qwen-image-2-1-lightning-4-step-lora-lightx2v). v2 RL ships the whole transformer as one diffusion_pytorch_model.safetensors.

What shipped

  • Model: Qwen-Image-2.1-Lightning-v2-RL by LightX2V / ModelTC
  • Base: Qwen/Qwen-Image-2.1, listed as a finetune
  • Method: Lightning v2 distillation, then an RL pass using LightX2V's open lightx2v_rl code
  • Tasks: text-to-image, single-reference edit, multi-reference composite (references are passed in the order your prompt names them)
  • Steps / guidance: 4 steps, true_cfg_scale 1.0, KV cache on
  • File: one 28.46 GB transformer checkpoint stored in FP32. The authors say to load it in BF16, which works out to about 14 GB, the same size as Comfy-Org's bf16 Qwen-Image 2.1 transformer.
  • Not included: text encoder, VAE and processor. These still come from the original Qwen-Image 2.1 pipeline, and you swap in the new transformer.
  • License: Qwen Research License (non-commercial)

The sigma schedule is the whole trick

This is where most people will trip up. v2 RL ships an inference_config.json with a fixed, already-shifted schedule:

  • Sigmas: 1.0 → 0.95418 → 0.89508 → 0.704534 (the scheduler adds the final 0)
  • Scheduler: FlowMatch Euler, shift 1.0, dynamic shifting off

The model card is blunt about it: setting num_inference_steps=4 on its own won't reproduce this schedule, and you shouldn't shift it a second time. That's also a change from v1, which used evenly spaced sigmas (1.0 / 0.75 / 0.5 / 0.25) with exponential dynamic shifting. Don't reuse your v1 settings.

Run it in Diffusers

Install a recent Diffusers build, as the model card asks:

pip install git+https://github.com/huggingface/diffusers.git
pip install "transformers>=5.17.0" accelerate safetensors pillow
hf download lightx2v/Qwen-Image-2.1-Lightning-v2-RL --local-dir ./lightning-v2-rl

Then swap the transformer into the stock pipeline and use the shipped schedule:

import json, torch
from pathlib import Path
from diffusers import FlowMatchEulerDiscreteScheduler, QwenImage21Pipeline, QwenImage21Transformer2DModel

MODEL_DIR = "./lightning-v2-rl"
cfg = json.loads((Path(MODEL_DIR) / "inference_config.json").read_text())

transformer = QwenImage21Transformer2DModel.from_pretrained(MODEL_DIR, torch_dtype=torch.bfloat16)
pipe = QwenImage21Pipeline.from_pretrained(cfg["base_model"], transformer=transformer, torch_dtype=torch.bfloat16)
pipe.scheduler = FlowMatchEulerDiscreteScheduler(**cfg["scheduler"])  # sigmas are pre-shifted
pipe.to("cuda")

image = pipe(
    prompt="A rusted bicycle leaning against a stone wall in heavy rain, shallow puddles reflecting the frame, soft overcast light",
    width=1024, height=1024,
    sigmas=cfg["sample_sigmas"], num_inference_steps=len(cfg["sample_sigmas"]),
    true_cfg_scale=cfg["true_cfg_scale"], use_kv_cache=cfg["use_kv_cache"],
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
image.save("t2i.png")

To edit an image, pass image=[reference]. For a multi-reference composite, pass image=[person, jacket] and name them in that order in your prompt, for example "the person from image 1 wearing the jacket from image 2". Width and height have to be multiples of 32.

How it compares

The model card puts v2 RL at 4 steps side by side with the original Qwen-Image 2.1 at 40-step Euler. Both runs use CFG 1.0, the same long enhanced prompts and 1024×1024 output. There are two text-to-image scenes, two single-reference edits and two multi-reference composites, and all the prompts and full-size PNGs are in the repo's assets/comparison/ folder. That's ten times fewer steps, and judging by the examples it gets you most of the way there. These are hand-picked examples, though, not a benchmark score.

Caveats

  • ComfyUI: there's no Comfy-format file or official workflow yet. The checkpoint is in Diffusers layout, and the schedule depends on custom sigmas. v1 got community ComfyUI, GGUF and Diffusers repacks within a day, so keep an eye on HF.
  • Size: it's a 28 GB download, and you still need the base Qwen-Image 2.1 text encoder and VAE. A LoRA would have been far lighter.
  • Non-commercial license, the same as the Qwen-Image 2.1 base.
  • Fine detail: the authors say small text, anatomy, object counts and exact reference matching can still need checking, and results vary by seed.
  • Brand new: no downloads were recorded yet and 9 likes when I checked.

Original Source

Conclusion

Lightning v1 showed Qwen-Image 2.1 could work in four steps. v2 RL refines that with reinforcement learning and covers edits and multi-reference composites in the same 4-step, CFG-1 pass. Use the shipped sigma schedule exactly as it comes, keep the 40-step base around for comparison, and you'll be iterating on ideas much faster. ⚡🖼️

—Aurelia ♡