Lightning v2 RL: 4-Step Qwen-Image 2.1, Refined by RL
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.
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.safetensorsstored in FP32 (28.5 GB) with its ownconfig.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 steps | Lightning v2 RL, 4 steps |
|---|---|
![]() | ![]() |
| Dolphin at a burned shoreline | Dolphin at a burned shoreline |
![]() | ![]() |
| Weathered bicycle in the rain | Weathered 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:
| Reference | Base model, 40 steps | Lightning v2 RL, 4 steps |
|---|---|---|
![]() | ![]() | ![]() |
"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:
| References | Base model, 40 steps | Lightning v2 RL, 4 steps |
|---|---|---|
![]() | ![]() | ![]() |
"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.