350 lines
14 KiB
YAML
350 lines
14 KiB
YAML
# =============================================================================
|
|
# LTX-2 Video-to-Audio (Foley) LoRA Training Configuration
|
|
# =============================================================================
|
|
#
|
|
# This configuration is for training LoRA adapters on the LTX-2 model for
|
|
# video-to-audio (Foley) generation. The model learns to generate audio
|
|
# conditioned on a frozen video signal via the transformer's built-in
|
|
# cross-modal attention.
|
|
#
|
|
# In this mode, video is provided as a frozen (clean, no noise, no loss)
|
|
# conditioning signal. The audio modality is the only generated output.
|
|
# Video influences audio generation through the transformer's video-to-audio
|
|
# cross-attention mechanism.
|
|
#
|
|
# Use this configuration when you want to:
|
|
# - Generate sound effects (Foley) for existing videos
|
|
# - Train audio generation conditioned on visual content
|
|
# - Create models that produce audio matching video content
|
|
#
|
|
# Dataset structure:
|
|
# preprocessed_data_root/
|
|
# ├── latents/ # Video latents (frozen conditioning input)
|
|
# ├── conditions/ # Text embeddings for each video
|
|
# └── audio_latents/ # Audio latents (VAE-encoded audio, generated output)
|
|
#
|
|
# =============================================================================
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# 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)
|
|
#
|
|
# For video-to-audio training, we target audio modules and the cross-modal
|
|
# attention that allows audio to attend to video features.
|
|
target_modules:
|
|
# Audio self-attention
|
|
- "audio_attn1.to_k"
|
|
- "audio_attn1.to_q"
|
|
- "audio_attn1.to_v"
|
|
- "audio_attn1.to_out.0"
|
|
# Audio cross-attention to text
|
|
- "audio_attn2.to_k"
|
|
- "audio_attn2.to_q"
|
|
- "audio_attn2.to_v"
|
|
- "audio_attn2.to_out.0"
|
|
# Audio feed-forward
|
|
- "audio_ff.net.0.proj"
|
|
- "audio_ff.net.2"
|
|
# Cross-modal attention: allows audio to attend to video 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"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Training Strategy Configuration
|
|
# -----------------------------------------------------------------------------
|
|
# Defines the video-to-audio (Foley) training approach using the unified
|
|
# flexible strategy. Video is frozen (no noise, sigma=0, excluded from loss)
|
|
# and conditions audio generation via the transformer's 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 frozen — it acts as conditioning for audio generation
|
|
# Frozen modalities get sigma=0, timestep=0, no noise, and no loss
|
|
video:
|
|
# Whether the model generates video (true) or uses it as frozen conditioning (false)
|
|
# When false, video is passed through the transformer clean and influences
|
|
# audio via cross-modal attention
|
|
is_generated: false
|
|
# Directory name (within preprocessed_data_root) containing video latents
|
|
latents_dir: "latents"
|
|
|
|
# Audio modality configuration
|
|
# Audio is the generated (denoised) output
|
|
audio:
|
|
# Whether the model generates audio (true) or uses it as frozen conditioning (false)
|
|
is_generated: true
|
|
# 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: >-
|
|
The sound of ocean waves crashing against rocky cliffs, with seagulls calling in the
|
|
distance and wind whistling through coastal grass.
|
|
conditions:
|
|
- type: video_to_audio
|
|
video: "/path/to/conditioning_video_1.mp4"
|
|
- prompt: >-
|
|
Footsteps echo in a marble hallway as a person walks steadily, with the distant hum of
|
|
air conditioning and occasional door closing sounds.
|
|
conditions:
|
|
- type: video_to_audio
|
|
video: "/path/to/conditioning_video_2.mp4"
|
|
|
|
# Negative prompt to avoid unwanted artifacts
|
|
negative_prompt: "worst quality, inconsistent motion, blurry, jittery, distorted"
|
|
|
|
# Validation dimensions [width, height, frames]
|
|
# Width/height resize the frozen video condition; frames and frame_rate set audio duration.
|
|
# 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_av" # "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
|
|
generate_audio: true
|
|
|
|
# Whether to generate video in validation samples
|
|
# Disabled for V2A since video is frozen conditioning, not generated
|
|
generate_video: false
|
|
|
|
# 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", "v2a", "foley" ]
|
|
|
|
# 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/v2a_lora"
|