Lora Merge LTX (QQ)
Turn five LTX LoRAs into one file without retraining
- model_with_loras
- merged_lora_path
Stacking LoRAs in LTX is free - until it isn't. Every applied LoRA costs you speed at sampling time, and when you've got four or five of them fighting in one pipeline the compute adds up. LoraMergeLTX is the "bake them into one file" node: it takes a model that's had multiple LTX LoRAs applied, fuses the effective weights into a single LoRA, and saves it to disk as a new safetensors. Next time you sample, you load one file instead of five.
It's part of siraxe/ComfyUI-WanVideoWrapper_QQ - the "(QQ)" Wan toolpack from sir_axe, a hobbyist who shares his experiments publicly. It lives in the KJNodes/ltxv menu because it's designed around the LTX video family, and it's really half of a two-node system: the companion node LTX2LoRASelect applies LoRAs with per-layer strengths and records the whole chain as metadata on the model; this node reads that chain back out.
How it works
The flow goes: LoadModelMeta → one or more LTX2LoRASelect nodes daisy-chained → LoraMergeLTX. Each LTX2LoRASelect stamps the model with an ltx2_lora_chain entry recording the LoRA filename and its strengths (overall, video layers, audio layers, and the video↔audio cross layers). This node walks that chain, computes each LoRA's effective contribution, sums them into a delta, then runs an SVD decomposition to factor the result back into up/down matrices at your chosen rank. That's the standard trick for merging adapters: the sum of the deltas is high-rank, and SVD compresses it back down.
The merge_on_model toggle is the accuracy/speed knob. Off (default) means pure LoRA-level SVD merging - fast, and fine when the LoRAs are similar in style. On means it reconstructs the full model weights, applies the LoRAs, then extracts the difference - more accurate, slower, and worth it when you're merging stylistically different LoRAs that would otherwise step on each other.
Inputs and outputs that matter
model_with_loras- the MODEL coming out of yourLTX2LoRASelectchain. If it has noltx2_lora_chainmetadata you'll get a clear error.rank- target rank of the merged LoRA, 1 to 512 (default 64). Higher preserves more detail but makes a bigger file; for a merged style LoRA 32–64 is a sane place to start.output_prefixandoutput_dir- filename prefix and where it lands. Defaultoutput_dirisloras, which is exactly what you want, because ComfyUI auto-discovers LoRAs from there.merge_on_model- the accuracy toggle above.
It's an output node with a single STRING output carrying the path of the merged file - there's nothing to wire forward; you run it once and then load the result like any other LoRA.
Installation
cd ComfyUI/custom_nodes
git clone https://github.com/siraxe/ComfyUI-WanVideoWrapper_QQ.git
Restart ComfyUI (or use ComfyUI Manager and search "WanVideoWrapper_QQ"). The pack's requirements.txt is empty, so nothing auto-installs - this node is pure torch + safetensors, which ComfyUI already ships. One gotcha from the README: the package renamed to ComfyUI-SA-Nodes-QQ in v1.3.4, so remove any old wanwrapper_qq folder to avoid duplicate-import warnings.
Common issues
The most common failure is running it without a LTX2LoRASelect chain - you get "No LoRA chain found in model options," which means the model didn't come from this pack's loader. Also note this is LTX-specific machinery; don't try to feed it a model from a standard ComfyUI LoraLoader. And remember the SVD rank isn't a quality guarantee: merging LoRAs that were trained for completely different tasks can just produce mush, no matter how clever the merge. Bake, sample, and judge the output like any other model - if it's mud, grab a better base pair of LoRAs rather than cranking the rank up.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model_with_loras | MODEL | The model with LoRAs applied (from LTX2LoRASelect). | |
| output_prefix | STRING | merged_lora | Prefix for the merged LoRA filename. |
| rank | INT | 641–512 | Target rank of the merged LoRA. |
| output_dir | STRING | loras | Output directory (relative to ComfyUI root). Use 'loras' for auto-discovery. |
| merge_on_model | BOOLEAN | false | Merge on model weights (more accurate) vs pure LoRA SVD merge (faster). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| merged_lora_path | STRING | — |