# ============================================================================= # LTX-2 Audio-to-Video LoRA Training Configuration # ============================================================================= # # This configuration is for training LoRA adapters on the LTX-2 model for # audio-to-video generation. The model learns to generate videos conditioned # on a frozen audio signal via the transformer's built-in cross-modal attention. # # In this mode, audio is provided as a frozen (clean, no noise, no loss) # conditioning signal. The video modality is the only generated output. # Audio influences video generation through the transformer's audio-to-video # cross-attention mechanism. # # Use this configuration when you want to: # - Generate videos driven by audio content (e.g., music visualizations) # - Train audio-reactive video generation # - Create models that synchronize video with given audio # # Dataset structure: # preprocessed_data_root/ # ├── latents/ # Video latents (VAE-encoded videos) # ├── conditions/ # Text embeddings for each video # └── audio_latents/ # Audio latents (frozen conditioning input) # # ============================================================================= # ----------------------------------------------------------------------------- # Model Configuration # ----------------------------------------------------------------------------- # Specifies the base model to fine-tune and the training mode. model: # Path to the LTX-2 model checkpoint (.safetensors file) # This should be a local path to your downloaded model model_path: "path/to/ltx-2-model.safetensors" # Path to the text encoder model directory # For LTX-2, this is typically the Gemma-based text encoder text_encoder_path: "path/to/gemma-text-encoder" # Training mode: "lora" for efficient adapter training, "full" for full fine-tuning # LoRA is recommended for most use cases (faster, less memory, prevents overfitting) training_mode: "lora" # Optional: Path to resume training from a checkpoint # Can be a checkpoint file (.safetensors) or directory (uses latest checkpoint) load_checkpoint: null # ----------------------------------------------------------------------------- # LoRA Configuration # ----------------------------------------------------------------------------- # Controls the Low-Rank Adaptation parameters for efficient fine-tuning. lora: # Rank of the LoRA matrices (higher = more capacity but more parameters) # Typical values: 8, 16, 32, 64. Start with 32 for general fine-tuning. rank: 32 # Alpha scaling factor (usually set equal to rank) # The effective scaling is alpha/rank, so alpha=rank means scaling of 1.0 alpha: 32 # Dropout probability for LoRA layers (0.0 = no dropout) # Can help with regularization if overfitting occurs dropout: 0.0 # Which transformer modules to apply LoRA to # The LTX-2 transformer has separate attention and FFN blocks for video and audio: # # VIDEO MODULES: # - attn1.to_k, attn1.to_q, attn1.to_v, attn1.to_out.0 (video self-attention) # - attn2.to_k, attn2.to_q, attn2.to_v, attn2.to_out.0 (video cross-attention to text) # - ff.net.0.proj, ff.net.2 (video feed-forward) # # AUDIO MODULES: # - audio_attn1.to_k, audio_attn1.to_q, audio_attn1.to_v, audio_attn1.to_out.0 (audio self-attention) # - audio_attn2.to_k, audio_attn2.to_q, audio_attn2.to_v, audio_attn2.to_out.0 (audio cross-attention to text) # - audio_ff.net.0.proj, audio_ff.net.2 (audio feed-forward) # # AUDIO-VIDEO CROSS-ATTENTION MODULES (for cross-modal interaction): # - audio_to_video_attn.to_k, audio_to_video_attn.to_q, audio_to_video_attn.to_v, audio_to_video_attn.to_out.0 # (Q from video, K/V from audio - allows video to attend to audio features) # - video_to_audio_attn.to_k, video_to_audio_attn.to_q, video_to_audio_attn.to_v, video_to_audio_attn.to_out.0 # (Q from audio, K/V from video - allows audio to attend to video features) # # Using short patterns like "to_k" matches ALL attention modules (video, audio, and cross-modal). # For audio-video training, this is the recommended approach. target_modules: # Attention layers (matches both video and audio branches) - "to_k" - "to_q" - "to_v" - "to_out.0" # Uncomment below to also train feed-forward layers (can increase the LoRA's capacity): # - "ff.net.0.proj" # - "ff.net.2" # - "audio_ff.net.0.proj" # - "audio_ff.net.2" # ----------------------------------------------------------------------------- # Training Strategy Configuration # ----------------------------------------------------------------------------- # Defines the audio-to-video training approach using the unified flexible strategy. # Audio is frozen (no noise, sigma=0, excluded from loss) and conditions video # generation via the transformer's built-in cross-modal attention. training_strategy: # Strategy name: "flexible" for the unified conditioning framework # Supports all training modes (T2V, I2V, V2V, A2V, V2A, etc.) through # modality-specific configuration blocks. name: "flexible" # Video modality configuration # Video is the generated (denoised) output video: # Whether the model generates video (true) or uses it as frozen conditioning (false) is_generated: true # Directory name (within preprocessed_data_root) containing video latents latents_dir: "latents" # Audio modality configuration # Audio is frozen — it acts as conditioning for video generation # Frozen modalities get sigma=0, timestep=0, no noise, and no loss audio: # Whether the model generates audio (true) or uses it as frozen conditioning (false) # When false, audio is passed through the transformer clean and influences # video via cross-modal attention is_generated: false # Directory name (within preprocessed_data_root) containing audio latents latents_dir: "audio_latents" # ----------------------------------------------------------------------------- # Optimization Configuration # ----------------------------------------------------------------------------- # Controls the training optimization parameters. optimization: # Learning rate for the optimizer # Typical range for LoRA: 1e-5 to 1e-4 learning_rate: 1e-4 # Total number of training steps steps: 2000 # Batch size per GPU # Reduce if running out of memory batch_size: 1 # Number of gradient accumulation steps # Effective batch size = batch_size * gradient_accumulation_steps * num_gpus gradient_accumulation_steps: 1 # Maximum gradient norm for clipping (helps training stability) max_grad_norm: 1.0 # Optimizer type: "adamw" (standard) or "adamw8bit" (memory-efficient) optimizer_type: "adamw" # Learning rate scheduler type # Options: "constant", "linear", "cosine", "cosine_with_restarts", "polynomial" scheduler_type: "linear" # Additional scheduler parameters (depends on scheduler_type) scheduler_params: { } # Enable gradient checkpointing to reduce memory usage # Recommended for training with limited GPU memory enable_gradient_checkpointing: true # ----------------------------------------------------------------------------- # Acceleration Configuration # ----------------------------------------------------------------------------- # Hardware acceleration and memory optimization settings. acceleration: # Mixed precision training mode # Options: "no" (fp32), "fp16" (half precision), "bf16" (bfloat16, recommended) mixed_precision_mode: "bf16" # Model quantization for reduced memory usage # Options: null (none), "int8-quanto", "int4-quanto", "int2-quanto", "fp8-quanto", "fp8uz-quanto" quantization: null # Load text encoder in 8-bit precision to save memory # Useful when GPU memory is limited load_text_encoder_in_8bit: false # Offload optimizer state to CPU during validation video sampling and restore it after. # Frees VRAM for the VAE decoder when optimizer state is large (full fine-tune, high-rank # LoRA). No effect under FSDP (sharded state). offload_optimizer_during_validation: false # ----------------------------------------------------------------------------- # Data Configuration # ----------------------------------------------------------------------------- # Specifies the training data location and loading parameters. data: # Root directory containing preprocessed training data # Should contain: latents/, audio_latents/, and conditions/ preprocessed_data_root: "/path/to/preprocessed/data" # Number of worker processes for data loading # Used for parallel data loading to speed up data loading num_dataloader_workers: 2 # ----------------------------------------------------------------------------- # Validation Configuration # ----------------------------------------------------------------------------- # Controls validation sampling during training. # NOTE: Validation sampling use simplified inference pipelines and prioritizes speed over # maximum quality. For production-quality inference, use `packages/ltx-pipelines`. validation: # Validation samples — each sample describes a self-contained generation request. # Use 'conditions' to add conditioning (first_frame, prefix, suffix, reference, video_to_audio, etc.) # See docs/configuration-reference.md#validation-condition-types for the full list of condition types. samples: - prompt: >- A musician plays an acoustic guitar in a dimly lit recording studio, fingers moving across the fretboard with practiced ease. The warm amber light from a desk lamp illuminates the wooden guitar body. Sound-absorbing panels line the walls, and a microphone stands nearby on a boom arm. conditions: - type: audio_to_video audio: "/path/to/conditioning_audio_1.wav" - prompt: >- Rain falls steadily on a cobblestone street in a European town at dusk. Puddles form between the stones, creating ripples as new drops land. Old brick buildings line both sides of the narrow street, their facades glistening with moisture under warm streetlights. conditions: - type: audio_to_video audio: "/path/to/conditioning_audio_2.wav" # Negative prompt to avoid unwanted artifacts negative_prompt: "worst quality, inconsistent motion, blurry, jittery, distorted" # Output video dimensions [width, height, frames] # Width and height must be divisible by 32 # Frames must satisfy: frames % 8 == 1 (e.g., 1, 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, ...) video_dims: [ 576, 576, 89 ] # Frame rate for generated videos frame_rate: 25.0 # Random seed for reproducible validation outputs seed: 42 # Number of denoising steps for validation inference # Higher values = better quality but slower generation inference_steps: 30 # Generate validation videos every N training steps # Set to null to disable validation during training interval: 100 # Classifier-free guidance scale # Higher values = stronger adherence to prompt but may introduce artifacts guidance_scale: 4.0 # STG (Spatio-Temporal Guidance) parameters for improved video quality # STG is combined with CFG for better temporal coherence stg_scale: 1.0 # Recommended: 1.0 (0.0 disables STG) stg_blocks: [29] # Recommended: single block 29 stg_mode: "stg_v" # "stg_av" perturbs both audio and video, "stg_v" video only # Whether to generate audio in validation samples # Independent of training_strategy.audio.is_generated - you can generate audio # in validation even when not training the audio branch # For this audio-to-video config, false matches frozen audio conditioning (video-only synthesis). generate_audio: false # Generate video from the frozen audio condition generate_video: true # Skip validation at the beginning of training (step 0) skip_initial_validation: false # ----------------------------------------------------------------------------- # Checkpoint Configuration # ----------------------------------------------------------------------------- # Controls model checkpoint saving during training. checkpoints: # Save a checkpoint every N steps # Set to null to disable intermediate checkpoints interval: 250 # Number of most recent checkpoints to keep # Set to -1 to keep all checkpoints keep_last_n: -1 # Precision to use when saving checkpoint weights # Options: "bfloat16" (default, smaller files) or "float32" (full precision) precision: "bfloat16" # ----------------------------------------------------------------------------- # Flow Matching Configuration # ----------------------------------------------------------------------------- # Parameters for the flow matching training objective. flow_matching: # Timestep sampling mode # "shifted_logit_normal" is recommended for LTX-2 models timestep_sampling_mode: "shifted_logit_normal" # Additional parameters for timestep sampling timestep_sampling_params: { } # ----------------------------------------------------------------------------- # Hugging Face Hub Configuration # ----------------------------------------------------------------------------- # Settings for uploading trained models to the Hugging Face Hub. hub: # Whether to push the trained model to the Hub push_to_hub: false # Repository ID on Hugging Face Hub (e.g., "username/my-lora-model") # Required if push_to_hub is true hub_model_id: null # ----------------------------------------------------------------------------- # Weights & Biases Configuration # ----------------------------------------------------------------------------- # Settings for experiment tracking with W&B. wandb: # Enable W&B logging enabled: false # W&B project name project: "ltx-2-trainer" # W&B username or team (null uses default account) entity: null # Tags to help organize runs tags: [ "ltx2", "lora", "a2v" ] # Log validation media (video/audio) to W&B log_validation_videos: true # ----------------------------------------------------------------------------- # General Configuration # ----------------------------------------------------------------------------- # Global settings for the training run. # Random seed for reproducibility seed: 42 # Directory to save outputs (checkpoints, validation videos, logs) output_dir: "outputs/a2v_lora"