VRGDG LTX Audio Video LoRA Train Chunk
Train an LTX 2.3 Audio-Video LoRA From a Single Short Clip
- model
- model
- latest_state_path
- log_path
- video_filename_prefix
- output_name
- completed_steps
- total_target_steps
This is the heavy one. VRGDG_LTXAudioVideoLoraTrainChunk runs a musubi-tuner training chunk for LTX-2.3 audio-video LoRAs - i.e., it trains a LoRA that captures a voice and a look from short clips that have audio embedded. It's the node VRGameDevGirl uses to build her own LTX character/singer LoRAs, and it's genuinely different from image LoRA training: LTX is a 22B audio+video model, so the trainer has to handle frame buckets, audio buckets, a Gemma text-encoder cache, block swapping for VRAM, and an FP8 base-model path. All of that is surfaced here as knobs, but you don't have to touch most of them.
The workflow is: point it at a folder of short training videos (with audio), pick a training profile (a recipe bundle), and it caches the Gemma text embeddings, trains with musubi-tuner for a chunk of steps, and copies a Comfy-compatible LoRA into your ComfyUI loras folder. It can even apply the new LoRA back onto the MODEL you pass in, so the output model is immediately ready to sample with.
The inputs that matter
You will not tune all 30+ fields. The key ones:
- dataset_videos_dir - folder of training videos (or a parent it organizes into a
videossubfolder). - workspace_dir - working folder for caches, logs, configs, and checkpoints.
- av_profile - the recipe switch, and the most important knob:
fast_short_clip(default) - quick test on one short video.step200- same recipe, 200-step chunk budget, lighter repeats.balanced- stronger middle ground.full_video- trains on the whole clip, slowest.overnight_full_video- tuned for a longer clip at lower res and smaller frame windows so it can run overnight on a midrange GPU.
- use_profile_defaults - on by default; the profile controls the recipe bundle. Turn off only if you want to hand-tune everything.
- resolution_width / resolution_height - 768×512 default; 512 is faster, bigger costs VRAM.
- target_frames - comma-separated frame buckets, default
17,33; the trainer rounds to the required N×4+1 buckets. - steps_per_run - steps before saving this chunk (100 default).
- total_target_steps - overall budget (400 default).
- network_dim / network_alpha - LoRA rank and alpha, both 16 default. Bump to 32 if the result is too weak.
- blocks_to_swap - transformer blocks offloaded to CPU (2 default). Raise only if you OOM; lower if you have VRAM to spare.
- lora_target_preset - which layers get adapters:
t2v(fastest baseline),v2v(adds FFN),audio, orfull. - musubi_root / ltx2_checkpoint / gemma_root - paths to your musubi-tuner install, the LTX-2.3 audio-video checkpoint, and the Gemma model files. The defaults point at
A:/MUSUBI/...- that's the author's own machine layout, and you must change these to your paths. - copy_latest_to_comfy_loras - on by default, copies the trained LoRA into ComfyUI's
lorasfolder.
Outputs: model (base model with the latest LoRA optionally applied via strength_model), plus latest_state_path, log_path, video_filename_prefix, output_name, completed_steps, and total_target_steps for tracking/continuation.
Install & the real requirements
You need three things: the pack, a musubi-tuner-ltx2 install (use VRGDG_MusubiTunerInstaller to get it), and the model files - an LTX-2.3 22B audio-video checkpoint and the Gemma text encoder. Expect tens of gigabytes of downloads and a machine with serious VRAM (the author's overnight_full_video profile exists specifically because midrange GPUs can't do the rest).
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl
pip install -r requirements.txt
Common issues
- Training is way slower / OOMs immediately: you're not on
overnight_full_videoorfast_short_clipwith a midrange card. Pick the profile that matches your hardware; raiseblocks_to_swaponly when you actually run out of memory. - LoRA is too weak: bump
network_dimto 32, ortotal_target_stepsup. One 10-second clip can't learn much -num_repeats(8 default) exists to get more signal out of that single clip. - Captions missing: turn on
create_captionswith acaption_textfallback, or the trainer has nothing to pair with your frames. - Text-encoder cache errors: leave
clear_memory_before_gemmaon - the Gemma cache step is where most failures happen because VRAM is full of other models.gemma_recovery_modeis the experimental fallback if the normal path still fails.
Honest take: this is an expert node for a demanding workflow, not a beginner toy. But it's the closest thing to "train your own LTX audio-video LoRA with one button" that exists, and once you accept that the first run is mostly downloads and the second run is mostly waiting, it works. The musubi-tuner angle also matters: LTX-2.3 LoRA training is where the LTX ecosystem actually lives right now, and this is a well-wired path into it.
Inputs (39)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Base model to return downstream with the latest trained LoRA optionally applied. | |
| dataset_videos_dir | STRING | Folder containing your training videos, or a parent folder that will be organized into a videos subfolder. | |
| workspace_dir | STRING | Working folder for cache, logs, config files, checkpoints, and training state. | |
| run_name | STRING | LTXAVChunkRun | Name prefix used for the log file. |
| output_name | STRING | LTXAVChunkRun | Name prefix used for saved LoRA files and state folders. |
| av_profile | COMBO | fast_short_clip | Training recipe switch. fast_short_clip is the default quick test for one short video. step200 keeps the same fast_short_clip recipe but sets a 200-step chunk budget with lighter repeats. balanced is a stronger middle ground. full_video trains on the whole clip and is the slowest. overnight_full_video is tuned for a longer clip using smaller frame windows, lower resolution, and light swapping so it can run overnight on a midrange GPU. |
| use_profile_defaults | BOOLEAN | true | When enabled, the selected profile controls the AV recipe bundle instead of the manual fields below. Turn this off if you want to hand-tune every value. |
| resolution_width | INT | 76864–8192 | Training bucket width in pixels. 768 is a good fast default for a single short clip. Smaller values like 512 are faster; larger values cost more VRAM and time. |
| resolution_height | INT | 51264–8192 | Training bucket height in pixels. 512 pairs well with 768x512 for a quick short-clip run. Use a lower height for faster experiments. |
| target_frames | STRING | 17,33 | Comma-separated frame buckets to train on. For a 10-second clip, 17 and 33 frames are a good fast starting point. The trainer rounds values to the required N*4+1 frame buckets. |
| frame_extraction | COMBO | head | How frames are selected from each video. head uses only the first target_frames window and is the fastest choice for a short single-clip LoRA. full uses the entire video, but is much slower and should be capped with max_frames. |
| max_frames | INT | 491–4096 | Safety cap used when frame_extraction is full. 49 keeps the run short and prevents a 10-second clip from turning into a long heavy sample. It does not affect head/chunk/slide/uniform. |
| target_fps | FLOAT | 25.01–240 | Target FPS used during caching/training. 25.0 is the standard LTX rate and works well for most short clips with audio. |
| steps_per_run | INT | 1001–100000 | How many steps to train before saving and stopping this chunk. 100 is a fast check-run default for a single short clip. |
| total_target_steps | INT | 4001–1000000 | Total training budget across all chunks. 400 is a fast starter value for one short video; increase later only if you need more adaptation. |
| network_dim | INT | 161–2048 | LoRA rank. 16 is a good quick-training default for one short clip. Use 32 if the result is too weak. |
| network_alpha | INT | 161–2048 | LoRA alpha. Usually keep this equal to the rank for a simple fast baseline. |
| blocks_to_swap | INT | 20–64 | How many transformer blocks to offload to CPU. Lower is faster if you have enough VRAM. Raise this only if you run out of memory. |
| separate_audio_buckets | BOOLEAN | true | Keeps audio and non-audio items in separate batches. Safe to leave on and useful if your dataset ever mixes audio and silent clips. |
| clear_memory_before_gemma | BOOLEAN | true | Unloads ComfyUI models and clears memory before Gemma caching. Leave this on unless you know your workspace is already empty. |
| lora_target_preset | COMBO | t2v | Which transformer layers get LoRA adapters. t2v is the fastest useful baseline. v2v adds FFN layers. full is the heaviest and produces the largest adapter. |
| fp8_base | BOOLEAN | true | Use the FP8 base-model loading path. Leave this on for speed and lower VRAM. |
| fp8_scaled | BOOLEAN | true | Quantize non-FP8 checkpoints into FP8 at load time. Turn this off if your checkpoint file is already FP8, usually visible from the filename. |
| learning_rate_preset | COMBO | 1e-4 | Quick preset for the training learning rate. 1e-4 is a strong starter value for a short 10-second clip. |
| learning_rate | FLOAT | 0.00011e-8–1 | Custom learning rate used only when the preset is set to Custom. |
| num_repeats | INT | 81–1000 | How many times each video-caption pair is repeated in the dataset. Higher repeats help a single clip produce enough training signal without needing a huge number of source videos. |
| cache_strategy | COMBO | auto | Auto rebuilds cache only when the node detects the cache is missing or stale. Force always rebuilds. Skip assumes the cache is already correct. |
| copy_latest_to_comfy_loras | BOOLEAN | true | Copies the latest Comfy-compatible LoRA into the ComfyUI loras folder after training. |
| keep_only_comfy_lora | BOOLEAN | false | If enabled, deletes the standard .safetensors LoRA files after a matching .comfy.safetensors file exists. |
| strength_model | FLOAT | 1.00-100–100 | Strength used if the node applies the latest LoRA back onto the output model. |
| create_captions | BOOLEAN | false | Creates missing .txt caption files automatically from the caption_text field. Leave this off if your videos already have captions. |
| caption_text | STRING | Fallback caption text used only when create_captions is on and a video has no caption file. | |
| add_trigger_word | BOOLEAN | false | Prepends trigger_text to every caption. Useful when you want a fixed concept token. |
| trigger_text | STRING | Trigger word or phrase to prepend to captions when add_trigger_word is enabled. | |
| musubi_root | STRING | A:/MUSUBI/musubi-tuner-ltx2 | Root folder of your musubi-tuner-ltx2 install. |
| ltx2_checkpoint | STRING | A:/MUSUBI/models/ltx2/ltx-2.3-22b-dev.safetensors | Path to the base LTX audio-video checkpoint used for caching and training. |
| gemma_root | STRING | A:/MUSUBI/models/gemma3 | Folder containing the Gemma model files used for text encoder caching. |
| gemma_load_in_4bit | BOOLEAN | false | Loads Gemma in 4-bit mode instead of 8-bit. This reduces VRAM further, but can be slower or a little less stable. |
| gemma_recovery_mode | BOOLEAN | false | Experimental. If enabled, the node will try alternate Gemma cache settings after the normal path fails. |
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 | — |