| # Wan Models Training - Optimal Defaults Configuration | |
| # This file contains the recommended default values for Wan model training | |
| # Supports all Wan models: T2V, I2V, T2I, FLF2V, Fun-Control, and Wan 2.2 Advanced models | |
| # Based on Wan documentation and best practices | |
| # Training Mode Selection | |
| training_mode = "LoRA Training" # The installed Wan backend supports LoRA/network training. | |
| # Wan Model Selection - REQUIRED | |
| task = "t2v-14B" # REQUIRED: Wan model type (t2v-14B, t2v-1.3B, i2v-14B, t2i-14B, flf2v-14B, t2v-1.3B-FC, t2v-14B-FC, i2v-14B-FC, t2v-A14B, i2v-A14B) | |
| # Model Settings - REQUIRED FIELDS MUST BE SET BY USER | |
| dit = "" # REQUIRED: Path to DiT checkpoint (.safetensors) | |
| vae = "" # REQUIRED: Path to VAE checkpoint (Wan2.1_VAE.pth or wan_2.1_vae.safetensors) | |
| t5 = "" # REQUIRED: Path to T5 text encoder (umt5-xxl-enc-bf16.safetensors) | |
| clip = "" # REQUIRED ONLY for i2v-14B, flf2v-14B, i2v-14B-FC models. Path to CLIP vision encoder (models_clip_open-clip-xlm-roberta-large-vit-huge-14.safetensors) | |
| dataset_config = "" # Path to dataset TOML configuration (required if using "Use TOML File" mode) | |
| dataset_config_mode = "Generate from Folder Structure" # Default to auto-generate from folder structure | |
| # Wan 2.2 Advanced Models (A14B) - Dual Model System | |
| dit_high_noise = "" # [WAN 2.2 ONLY] Path to high noise DiT model for Wan 2.2 Advanced models (t2v-A14B, i2v-A14B) | |
| timestep_boundary = 0.0 # [WAN 2.2 ONLY] Timestep boundary for dual model system. Auto-detected from model config if not set | |
| offload_inactive_dit = false # [WAN 2.2 ONLY] Offload inactive DiT to CPU to save VRAM during dual model training | |
| use_pinned_memory_for_block_swap = false # Use Pinned Memory for Block Swapping: Uses more system RAM but speeds up training. The speed up maybe significant depending on system settings. To work, go to Advanced Graphics settings in System > Display > Graphics as in tutorial video and disable Hardware-Accelerated GPU Scheduling and restart your PC. Only effective when blocks_to_swap > 0 | |
| block_swap_h2d_only = false # LoRA only; requires blocks_to_swap > 0 and gradient_checkpointing; use standard swap for Wan 2.2 dual-DiT | |
| block_swap_ring_size = 2 # 2 overlaps transfer/compute; 1 minimizes VRAM | |
| # Folder Structure Settings (used when dataset_config_mode = "Generate from Folder Structure") | |
| parent_folder_path = "" # REQUIRED when using folder structure mode: Path to parent folder containing training images/videos | |
| dataset_resolution_width = 960 # Target width for training. Optimal resolutions: 960×960, 1280×720, 720×1280 | |
| dataset_resolution_height = 960 # Target height for training. Optimal resolutions: 960×960, 1280×720, 720×1280 | |
| dataset_caption_extension = ".txt" # Extension for caption files | |
| create_missing_captions = true # Auto-create empty captions for images without caption files | |
| caption_strategy = "folder_name" # How to handle missing captions: "folder_name" or "empty" | |
| dataset_batch_size = 1 # Batch size for dataset processing | |
| dataset_enable_bucket = false # Enable bucketing for variable aspect ratios | |
| dataset_bucket_no_upscale = false # Prevent upscaling in bucket mode | |
| dataset_cache_directory = "cache_dir" # Directory for caching processed data | |
| generated_toml_path = "" # Path where generated TOML will be saved (auto-set) | |
| # Video-specific Settings (for T2V, I2V, FLF2V models) | |
| num_frames = 81 # Number of frames for video training (81 is default for Wan models) | |
| one_frame = false # Enable one-frame training mode for image-like training on video models | |
| # Video Frame Extraction Settings | |
| frame_extraction = "head" # Frame extraction method: "head" (recommended), "chunk", "slide", "uniform", "full" | |
| frame_stride = 1 # Step size for sliding window extraction (used with "slide" method) | |
| frame_sample = 1 # Number of samples to extract (used with "uniform" method) | |
| # Dataset generation target_frames (written into generated dataset TOML for video datasets) | |
| target_frames = 81 # Target video frame count for dataset generation (saved as target_frames=[N]). Must be N*4+1 (1,5,9,...,81) | |
| auto_normalize_target_frames = true # Scan dataset and clamp Target Frames to the minimum video length found (then round to N*4+1) | |
| max_frames = 129 # Maximum number of frames to extract from any video (used with "full" method) | |
| source_fps = 0 # Original video FPS for frame rate conversion (0=auto-detect) | |
| # Data Types and Precision | |
| dit_dtype = "bfloat16" # DiT model data type. bfloat16=best quality, float16=faster | |
| text_encoder_dtype = "bfloat16" # T5 text encoder data type | |
| vae_dtype = "bfloat16" # VAE data type | |
| clip_vision_dtype = "bfloat16" # CLIP vision encoder data type | |
| # Memory Optimization Settings | |
| fp8_base = false # Enable FP8 for DiT model to reduce VRAM usage (requires fp8_scaled=true) | |
| fp8_scaled = false # REQUIRED when fp8_base=true, provides better quality than standard FP8 | |
| fp8_t5 = false # Enable FP8 for the T5 text encoder to reduce VRAM usage | |
| blocks_to_swap = 0 # 0=disabled. Max varies by model. Higher values save more VRAM but require more RAM | |
| # VAE Optimization Settings | |
| vae_tiling = false # Enable spatial tiling to reduce VRAM usage during VAE operations | |
| vae_chunk_size = 0 # 0=auto/disabled. Higher=faster but more VRAM | |
| vae_spatial_tile_sample_min_size = 0 # 0=disabled. 256=typical. Auto-enables vae_tiling if set | |
| # Flow Matching Settings (Wan uses Flow Matching instead of diffusion) | |
| timestep_sampling = "uniform" # Timestep sampling method: "uniform", "sigmoid", "shift" | |
| discrete_flow_shift = 1.0 # Discrete flow shift parameter | |
| weighting_scheme = "none" # Loss weighting scheme: "none", "mode" | |
| logit_mean = 0.0 # Logit mean for timestep sampling | |
| logit_std = 1.0 # Logit standard deviation for timestep sampling | |
| mode_scale = 1.29 # Mode scale for weighting scheme | |
| # Advanced Timestep Parameters | |
| sigmoid_scale = 1.0 # Scale factor for sigmoid timestep sampling | |
| min_timestep = 0 # Minimum timestep constraint (0=no constraint) | |
| max_timestep = 1000 # Maximum timestep constraint (1000=no constraint) | |
| preserve_distribution_shape = false # Preserve original distribution when using min/max constraints | |
| num_timestep_buckets = 0 # 0=disabled. 4-10=bucketed sampling for uniform distribution | |
| # Training Settings | |
| sdpa = true # Use PyTorch's scaled dot product attention (recommended) | |
| flash_attn = false # Use Flash Attention (requires installation) | |
| sage_attn = false # Use Sage Attention (inference only) | |
| xformers = false # Use xFormers attention | |
| split_attn = false # Split attention computation to reduce peak memory use | |
| use_legacy_sdpa = false # Force the older PyTorch SDPA path instead of automatic verified acceleration | |
| max_train_steps = 90000 # Maximum training steps | |
| max_train_epochs = 200 # Maximum training epochs | |
| max_data_loader_n_workers = 2 # Number of data loader workers | |
| persistent_data_loader_workers = true # Keep data loader workers persistent | |
| seed = 99 # Random seed for reproducibility | |
| gradient_checkpointing = true # Enable gradient checkpointing to save VRAM | |
| gradient_accumulation_steps = 1 # Number of gradient accumulation steps | |
| full_bf16 = false # EXPERIMENTAL: Store gradients in BF16 to save VRAM (currently disabled in backend) | |
| full_fp16 = false # EXPERIMENTAL: Store gradients in FP16 to save VRAM (currently disabled in backend) | |
| # Optimizer Settings | |
| optimizer_type = "adamw8bit" # Optimizer type (adamw8bit recommended for memory efficiency) | |
| optimizer_args = [] # Additional optimizer arguments | |
| learning_rate = 1e-4 # Learning rate (1e-4 is good default for Wan models) | |
| max_grad_norm = 1.0 # Maximum gradient norm for clipping | |
| lr_scheduler = "constant" # Learning rate scheduler type | |
| lr_warmup_steps = 0 # Number of warmup steps (0=no warmup) | |
| lr_decay_steps = 0 # Number of decay steps (0=no decay) | |
| lr_scheduler_num_cycles = 1 # Number of scheduler cycles | |
| lr_scheduler_power = 1.0 # Scheduler power parameter | |
| lr_scheduler_timescale = 0 # Scheduler timescale (0=auto) | |
| lr_scheduler_min_lr_ratio = 0.0 # Minimum learning rate ratio | |
| lr_scheduler_type = "" # Additional scheduler type | |
| lr_scheduler_args = [] # Additional scheduler arguments | |
| # Network Settings (LoRA Mode Only - Ignored in DreamBooth Mode) | |
| no_metadata = false # Disable metadata saving | |
| network_weights = "" # Path to pretrained LoRA weights to continue training | |
| network_module = "networks.lora_wan" # Network module for LoRA (auto-set based on training mode) | |
| network_dim = 16 # LoRA network dimension/rank (16 recommended for Wan models) | |
| network_alpha = 16.0 # LoRA alpha parameter (typically equal to network_dim) | |
| network_dropout = 0.0 # LoRA dropout rate (0.0=no dropout) | |
| network_args = [] # Additional network arguments | |
| training_comment = "" # Training comment for metadata | |
| dim_from_weights = false # Extract dimensions from existing weights | |
| scale_weight_norms = 0.0 # Scale weight norms (0.0=disabled) | |
| base_weights = "" # Path to base LoRA weights to merge | |
| base_weights_multiplier = 1.0 # Multiplier for base weights | |
| # Save/Load Settings | |
| output_dir = "" # Output directory for saved models | |
| output_name = "my-wan-lora" # Base filename for saved models | |
| resume = "" # Path to checkpoint to resume training from | |
| save_precision = "bf16" # LoRA output dtype; BF16 keeps files about half the size of FP32 | |
| save_every_n_epochs = 10 # Save checkpoint every N epochs | |
| save_every_n_steps = 0 # Save checkpoint every N steps (0=disabled) | |
| save_last_n_epochs = 0 # Keep only last N epoch checkpoints (0=keep all) | |
| save_last_n_epochs_state = 0 # Keep only last N epoch states (0=keep all) | |
| save_last_n_steps = 0 # Keep only last N step checkpoints (0=keep all) | |
| save_last_n_steps_state = 0 # Keep only last N step states (0=keep all) | |
| save_state = false # Save training state | |
| save_state_on_train_end = false # Save state when training ends | |
| mem_eff_save = false # Memory efficient saving for DreamBooth fine-tuning mode | |
| # Caching Settings - Latents | |
| caching_latent_device = "cuda" # Device for latent caching | |
| caching_latent_batch_size = 4 # Batch size for latent caching | |
| caching_latent_num_workers = 8 # Number of workers for latent caching | |
| caching_latent_skip_existing = true # Skip existing cached latents | |
| caching_latent_keep_cache = true # Keep cache after training | |
| caching_latent_debug_mode = "" # Debug mode for latent caching | |
| caching_latent_console_width = 80 # Console width for debug output | |
| caching_latent_console_back = "" # Console background for debug | |
| caching_latent_console_num_images = 0 # Number of images in debug console (0=no limit) | |
| # Caching Settings - Text Encoder | |
| caching_teo_text_encoder1 = "" # Optional T5 override for caching; empty uses the model T5 path | |
| caching_teo_text_encoder2 = "" # Reserved optional second text encoder path | |
| caching_teo_device = "cuda" # Device for text encoder caching | |
| caching_teo_fp8_llm = false # Use FP8 for T5 text encoder caching | |
| caching_teo_batch_size = 16 # Batch size for text encoder caching | |
| caching_teo_num_workers = 8 # Number of workers for text encoder caching | |
| caching_teo_skip_existing = true # Skip existing cached outputs | |
| caching_teo_keep_cache = true # Keep cache after training | |
| # Torch compile (optional) | |
| compile = false | |
| compile_backend = "inductor" | |
| compile_mode = "default" | |
| compile_dynamic = "auto" # "auto" | "true" | "false" | |
| compile_fullgraph = false | |
| compile_cache_size_limit = 0 # 0 = use PyTorch default | |
| # Accelerate Launch Settings | |
| mixed_precision = "bf16" # Mixed precision training (bf16 recommended for Wan) | |
| multi_gpu = false # Enable multi-GPU training | |
| gpu_ids = "0" # GPU IDs for distributed training | |
| num_processes = 1 # Number of processes for distributed training | |
| num_machines = 1 # Number of machines for distributed training | |
| num_cpu_threads_per_process = 2 # CPU threads per process | |
| main_process_port = 0 # Port for distributed communication (0=auto) | |
| dynamo_backend = "no" # PyTorch dynamo backend (no=disabled) | |
| dynamo_mode = "" # Dynamo optimization mode | |
| dynamo_use_fullgraph = false # Use fullgraph mode for dynamo | |
| dynamo_use_dynamic = false # Use dynamic mode for dynamo | |
| extra_accelerate_launch_args = "" # Additional accelerate launch arguments | |
| # Logging Settings | |
| logging_dir = "" # Directory for training logs | |
| log_prefix = "" # Prefix for log files | |
| log_tracker_name = "" # Name for experiment tracking | |
| wandb_run_name = "" # Weights & Biases run name | |
| log_tracker_config = "" # Configuration for experiment tracking | |
| wandb_api_key = "" # Weights & Biases API key | |
| log_config = false # Log configuration to tracker | |
| # DDP Settings (Distributed Training) | |
| ddp_timeout = 0 # DDP timeout in minutes (0=default) | |
| ddp_gradient_as_bucket_view = false # Use gradient as bucket view | |
| ddp_static_graph = false # Use static graph for DDP | |
| # Sample Generation Settings | |
| sample_every_n_steps = 0 # Generate samples every N steps (0=disabled) | |
| sample_every_n_epochs = 0 # Generate samples every N epochs (0=disabled) | |
| sample_at_first = false # Generate samples before training starts | |
| sample_prompts = "" # Path to file with sample prompts | |
| disable_prompt_enhancement = false # true = use prompt file exactly as written (no auto-added defaults) | |
| # Default Sample Parameters for Video Generation | |
| sample_width = 960 # Sample video width. Optimal resolutions: 960×960, 1280×720, 720×1280 | |
| sample_height = 960 # Sample video height. Optimal resolutions: 960×960, 1280×720, 720×1280 | |
| sample_num_frames = 81 # Number of frames in sample videos | |
| sample_steps = 20 # Number of inference steps for samples | |
| sample_guidance_scale = 7.0 # Default WAN training sample CFG scale (written as --l in enhanced prompts) | |
| sample_seed = 99 # Seed for sample generation (-1=random) | |
| sample_negative_prompt = "" # Default negative prompt for samples | |
| # Metadata Settings | |
| metadata_author = "" # Author metadata | |
| metadata_description = "" # Description metadata | |
| metadata_license = "" # License metadata | |
| metadata_tags = "" # Tags metadata | |
| metadata_title = "" # Title metadata | |
| metadata_reso = "" # Optional resolution metadata, e.g. 960,960 | |
| metadata_arch = "" # Optional custom architecture metadata | |
| # HuggingFace Settings | |
| huggingface_repo_id = "" # HuggingFace repository ID | |
| huggingface_token = "" # HuggingFace API token | |
| huggingface_repo_type = "" # Repository type | |
| huggingface_repo_visibility = "" # Repository visibility | |
| huggingface_path_in_repo = "" # Path within repository | |
| save_state_to_huggingface = false # Save training state to HuggingFace | |
| resume_from_huggingface = "" # Optional Hugging Face resume specification | |
| async_upload = false # Use async upload to HuggingFace | |