Lightning v2 RL: 4-Step Qwen-Image 2.1, Refined by RL

ComfyUI Wikinews

LightX2V's Lightning v2 RL swaps the 67 MB adapter for a full Qwen-Image 2.1 transformer distilled to 4 steps and refined with reinforcement learning.

Lightning v2 RL is the LightX2V team's follow-up to Qwen-Image 2.1 Lightning, published on November 2, 2026. The earlier release was a 67 MB LoRA; v2 ships a full Qwen-Image 2.1 transformer trained to run in four steps at CFG 1.0 and then refined with reinforcement learning. It covers text-to-image, single-reference editing and multi-reference generation.
Dolphin at a burned shoreline, four steps

A 1024 x 1024 render from the four-step RL checkpoint, "Dolphin at a Burning Shoreline".

What changed from the LoRA

The October release attached a 67 MB adapter to the stock Qwen-Image 2.1 checkpoint and relied on a fixed sigma list at sampling time. v2 changes both halves of that setup:

  • Full transformer weights instead of an adapter: a single diffusion_pytorch_model.safetensors stored in FP32 (28.5 GB) with its own config.json, described in the model card as loadable in BF16 for inference. There is no LoRA to stack.
  • A reinforcement-learning stage after distillation. The card describes the checkpoint as the RL-refined version of Lightning v2, trained with LightX2V RL. Only the refined checkpoint is published, so the pre-RL v2 weights are not available for comparison.
  • Three tasks from one checkpoint: text-to-image, single-reference editing and multi-reference generation, which v1 also targeted.

The four-step schedule

The sampling configuration ships as inference_config.json, and it is not the uniform schedule the v1 LoRA used. v2 runs four sigmas of 1.0, 0.95418, 0.89508 and 0.704534, with true_cfg_scale at 1.0 and the KV cache enabled:

pipe.scheduler = FlowMatchEulerDiscreteScheduler(
    **inference_config["scheduler"],
)
image = pipe(
    prompt=prompt,
    width=1024,
    height=1024,
    sigmas=SIGMAS,                    # 1.0, 0.95418, 0.89508, 0.704534
    num_inference_steps=len(SIGMAS),
    true_cfg_scale=1.0,
    use_kv_cache=True,
)

Three steps sit above 0.89 and the fourth drops from 0.895 to 0.705 before the scheduler appends the terminal zero, so most of the denoising happens early. The README is explicit that setting num_inference_steps=4 alone does not reproduce this schedule, and that the stored sigmas are already shifted, so dynamic shifting must stay off.

Four steps against forty

The repository pairs every example with a 40-step run of the original Qwen-Image 2.1 weights, same prompt, same seed, same CFG 1.0 and 1024 x 1024 output.

Base model, 40 stepsLightning v2 RL, 4 steps
Qwen-Image 2.1, 40 stepsLightning v2 RL, 4 steps
Dolphin at a burned shorelineDolphin at a burned shoreline
Qwen-Image 2.1, 40 stepsLightning v2 RL, 4 steps
Weathered bicycle in the rainWeathered bicycle in the rain

Both prompts are long structured scene descriptions: the dolphin one runs through cloud colour, smoke plumes, charred beams, ember placement and dorsal fin lighting before it stops, the bicycle one through rust on each frame tube, spoke count and rain streaks. The card presents these as selected validation examples, not a benchmark, and warns that fine text, anatomy, object counts and precise reference preservation may still need checking.

Editing a single reference

For editing, the reference image goes in as the pipeline's image argument, in the same call that carries the instruction:

ReferenceBase model, 40 stepsLightning v2 RL, 4 steps
Reference frame40-step edit4-step edit

"Replace the bird flying in the upper-center sky with a flying dragon soaring at the same position and distance. … Keep everything else completely unchanged: the terraced stone architecture … the cascading waterfalls …"

The prompt pins the dragon to the bird's flight direction and then lists what must not move: stone galleries, rooftop gardens, waterfalls, palms, mist and the hazy sky. The second editing example in the repository swaps a guitarist's scene instead.

Multi-reference generation

The multi-reference path takes several images at once and addresses them by index inside the prompt (<image1>, <image2>), which is how the card keeps two references straight:

ReferencesBase model, 40 stepsLightning v2 RL, 4 steps
Canvas reference Object reference40-step composite4-step composite

"On <image1> (canvas), place the food bowl extracted from <image2> onto the wooden table … Render the added bowl and food in the same soft 3D illustration style as <image1> instead of the photorealistic style of <image2>. …"

The instruction carries scale, perspective, light direction and shadow direction, plus an explicit list of what to preserve from the canvas: the girl's face, her cardigan, the steaming cup, the fruit bowl, the shelf behind her. A second multi-reference example transfers a floral porcelain pattern onto a teapot in a portrait scene.

Availability

Weights: lightx2v/Qwen-Image-2.1-Lightning-v2-RL on Hugging Face. Base model: Qwen/Qwen-Image-2.1. Training and inference framework: ModelTC/LightX2V.

The published files are in Diffusers layout (QwenImage21Transformer2DModel, 32 layers, 32 heads), and the card's quick start loads them through QwenImage21Pipeline by replacing the pipeline's transformer. The repository does not include ComfyUI-format weights, and at release time there is no converted checkpoint, GGUF build or loader for it, so the ComfyUI route for Lightning remains the v1 LoRA.

Comments

Sign in with GitHub to join the discussion.

Loading comments…
Lightning v2 RL: 4-Step Qwen-Image 2.1, Refined by RL | ComfyUI Wiki