# Qwen-Image 2.1 + Lightning 4-step LoRA, ComfyUI (hosts and paths removed). Date of measurement: 2026-10-15. # Engine: ComfyUI 0.39.0 commit 46493d824fd7eac25a741e505159e4c9e0ef0ebd + ComfyUI-GGUF commit 6ea2651e (small local patch for a qwen_image architecture fallback), # container nvcr.io/nvidia/pytorch:26.07-py3 (digest sha256:2140e699b3beaf7f96a0081fd9c9406bc3832b435cdb60dfa2d261f7d2f34a1c), torch 2.13.0a0. # Files (sha256 in -sha256.txt): unsloth/Qwen-Image-2.1-GGUF qwen-image-2.1-Q4_K_M.gguf and Q5_K_M.gguf; Comfy-Org text encoder qwen3vl_8b_w4a8 and bf16 VAE; # LoRA lightx2v/Qwen-Image-2.1-Lightning at revision 6b0a1176327c01522a44276c5da67331a025b6fc (pytorch_lora_weights.safetensors, rank 16). # Main runs: server started with --cache-none, so every job runs all nodes (text encoder, sampler, VAE) and reloads the models: python main.py --cache-none --disable-api-nodes --port 18600 # Warm-cache runs: same server without --cache-none, seed 42 + index so that the sampler really runs; first (warm) run excluded. # Benchmark (bench.py, stdlib only): per arm and per prompt 1 warm run + 3 measured runs; prompts text / photo / illustration (see *-arm-settings-and-medians.json); # seed 42, 1024x1024, euler, scheduler simple, CFG 1.0; median wall time over the 9 measured runs. python bench.py q4km_lightning4 UnetLoaderGGUF qwen-image-2.1-Q4_K_M.gguf --lora qwen-image-2.1-lightning-4step.safetensors --steps 4 --shift 2.0005 python bench.py q5km_lightning4 UnetLoaderGGUF qwen-image-2.1-Q5_K_M.gguf --lora qwen-image-2.1-lightning-4step.safetensors --steps 4 --shift 2.0005 python bench.py q4km_base25 UnetLoaderGGUF qwen-image-2.1-Q4_K_M.gguf # reference: 25 steps, no LoRA, no shift node python bench.py q5km_base25 UnetLoaderGGUF qwen-image-2.1-Q5_K_M.gguf # Lightning workflow: UnetLoaderGGUF -> LoraLoaderModelOnly (strength 1.0) -> ModelSamplingAuraFlow (shift 2.0005 = exp(mu), mu 0.6935, the dynamic shift of the LoRA README for 1024x1024) -> KSampler (4 steps). # Image similarity (PSNR/SSIM against the Q4_K_M 25-step image) with compare.py; repeats with the same seed are bit-identical (max pixel difference 0.0).