VRGDG LTX Speed Character Lora Training
Train an LTX character LoRA without leaving the graph
- model
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- image11
- image12
- image13
- image14
- image15
- image16
- image17
- image18
- image19
- image20
- model
- latest_state_path
- log_path
- video_filename_prefix
- output_name
- completed_steps
- total_target_steps
This is the heavyweight of the pack, and the name is doing real work: it's a character-LoRA trainer for LTX video models that runs inside ComfyUI, pointed at a musubi install. Drop in a handful of reference images, give each a caption, and the node builds a training dataset, runs the trainer, and hands back a MODEL with your freshly-trained LoRA applied to it. If you've ever looked at LTX character-LoRA training tutorials - the kind that involve separate Python environments and a folder full of scripts - you'll recognize this as someone wrapping that whole mess in a node.
The two big dependencies
The node needs three things to be true before it can do anything:
- musubi-tuner-ltx2, installed somewhere on disk. The
musubi_rootinput (defaultA:/MUSUBI/musubi-tuner-ltx2) points at it. Musubi is one of the real trainers people use for LTX, and the pack assumes a specific folder layout. - The LTX-2.3 checkpoint.
ltx2_checkpointdefaults toA:/MUSUBI/models/ltx2/ltx-2.3-22b-dev.safetensors- that's the 22B LTX-2.3 model, the one whose release the community credit with making LTX actually competitive. - The Gemma text encoder.
gemma_rootdefaults toA:/MUSUBI/models/gemma3. This is the exact text encoder that caused so much pain on LTX-2/2.3 launch - it's huge, and offloading it badly was the #1 source of OOMs. This node has real answers for that (below).
Notice all those A:/MUSUBI/... defaults. This node was born on a Windows machine with a specific drive layout. You will be editing every path the first time you run it.
The inputs that matter
image_count(1–20) and the dynamicimage1…image20inputs with matchingcaption_1…caption_20fields - your training set. This is the modern no-text-encoder-training approach: you caption the reference images, the node writes them into a dataset folder insideworkspace_dir, and the trainer consumes it.workspace_diris the node's scratch space: cache, output, logs, config, and that managed dataset all live there.resolution_width/resolution_height- training bucket resolution, default 1256×1256. LTX-2.3 needs dimensions divisible by 32; the node steps by 8, so pick carefully.blocks_to_swap- how many transformer blocks to push to CPU. 0 is fastest if your VRAM allows it; on a 12–16GB card you'll be setting this to something real.cache_strategy-auto(reuse the cached text embeddings),force(rebuild them),skip(don't create them). Since text-encoder caching is the single biggest speed lever in modern training,autois the right default - the Gemma pass is the expensive one.gemma_load_in_4bit- loads Gemma in 4-bit during caching. Lowers VRAM more than 8-bit but slower and less stable; this is your OOM escape hatch.clear_memory_before_gemma- flushes Comfy and CUDA memory before the Gemma cache stage. Leave it on.strength_model- how strongly the newest trained LoRA is applied back onto the returned MODEL (default 1.0).run_name/output_name- logs and output naming.
Outputs: model (your trained model), latest_state_path, log_path, video_filename_prefix, output_name, and completed_steps / total_target_steps so you can see training progress in the graph.
Install and the honest expectations
The node itself ships with the pack (Manager → "vrgamedev", or git clone into custom_nodes), but musubi and the model files are on you - the README doesn't set up the trainer, and this node has no download toggle. Plan on: a musubi-tuner-ltx2 clone, the 22B LTX-2.3 checkpoint (that's ~25GB fp8), and a Gemma 3 model. Expect the first run to be slow and memory-hungry, and budget a full pass at blocks_to_swap = 0 with your whole VRAM free.
The take: this is a "for this author's workflow" node more than a general training harness. If you already live in musubi and know its scripts, you may find the node more restrictive than your scripts. If you're new, though, it removes the scariest part - dataset layout and the trainer command line - and gives you progress numbers in the graph. It's opinionated, but for character LoRAs on LTX it's a real path from reference images to a working model.
Inputs (56)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| workspace_dir | STRING | A:/MUSUBI/Training/SpeedCharacterLoraTraining | Workspace folder for cache, output, logs, config, and the managed dynamic dataset. |
| run_name | STRING | SpeedCharacterLoraTrainingRun | Run name used for logs. |
| output_name | STRING | SpeedCharacterLoraTraining | LoRA output name used for checkpoints and downstream preview naming. |
| image_count | INT | 41–20 | How many dynamic image inputs and caption fields to show. |
| resolution_width | INT | 125664–4096 | Training bucket width. Pick the resolution preset you want to train at. |
| resolution_height | INT | 125664–4096 | Training bucket height. Pick the resolution preset you want to train at. |
| blocks_to_swap | INT | 00–64 | How many transformer blocks to swap to CPU. 0 is fastest if VRAM allows it. |
| clear_memory_before_gemma | BOOLEAN | true | Clears Comfy and CUDA memory before the Gemma cache stage. |
| cache_strategy | COMBO | auto | Cache behavior. auto reuses cache when present, force rebuilds, skip bypasses cache creation. |
| strength_model | FLOAT | 1.00-100–100 | Strength used when applying the newest trained LoRA back onto the returned MODEL. |
| musubi_root | STRING | A:/MUSUBI/musubi-tuner-ltx2 | Root folder of your musubi install. |
| ltx2_checkpoint | STRING | A:/MUSUBI/models/ltx2/ltx-2.3-22b-dev.safetensors | Path to the LTX-2.3 DiT checkpoint. |
| gemma_root | STRING | A:/MUSUBI/models/gemma3 | Path to the Gemma model root used by this preset. |
| gemma_recovery_mode | BOOLEAN | false | Experimental. If enabled, the node will try alternate Gemma cache settings after the normal path fails. |
| gemma_load_in_4bit | BOOLEAN | false | Loads Gemma in 4-bit mode during text encoder caching. This lowers VRAM more than 8-bit, but can be slower or less stable. |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| image5opt | IMAGE | — | |
| image6opt | IMAGE | — | |
| image7opt | IMAGE | — | |
| image8opt | IMAGE | — | |
| image9opt | IMAGE | — | |
| image10opt | IMAGE | — | |
| image11opt | IMAGE | — | |
| image12opt | IMAGE | — | |
| image13opt | IMAGE | — | |
| image14opt | IMAGE | — | |
| image15opt | IMAGE | — | |
| image16opt | IMAGE | — | |
| image17opt | IMAGE | — | |
| image18opt | IMAGE | — | |
| image19opt | IMAGE | — | |
| image20opt | IMAGE | — | |
| caption_1opt | STRING | — | |
| caption_2opt | STRING | — | |
| caption_3opt | STRING | — | |
| caption_4opt | STRING | — | |
| caption_5opt | STRING | — | |
| caption_6opt | STRING | — | |
| caption_7opt | STRING | — | |
| caption_8opt | STRING | — | |
| caption_9opt | STRING | — | |
| caption_10opt | STRING | — | |
| caption_11opt | STRING | — | |
| caption_12opt | STRING | — | |
| caption_13opt | STRING | — | |
| caption_14opt | STRING | — | |
| caption_15opt | STRING | — | |
| caption_16opt | STRING | — | |
| caption_17opt | STRING | — | |
| caption_18opt | STRING | — | |
| caption_19opt | STRING | — | |
| caption_20opt | STRING | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| latest_state_path | STRING | — |
| log_path | STRING | — |
| video_filename_prefix | STRING | — |
| output_name | STRING | — |
| completed_steps | INT | — |
| total_target_steps | INT | — |