LTX Video 2 क्विकस्टार्ट¶
इस उदाहरण में, हम LTX‑2 video/audio VAE और चुने गए LTX‑2 version के matching Gemma text encoder का उपयोग करके LTX Video 2 LoRA प्रशिक्षण करेंगे।
हार्डवेयर आवश्यकताएँ¶
LTX Video 2 एक भारी 19B मॉडल है। यह निम्न को जोड़ता है: 1. Gemma3 / Gemma4: टेक्स्ट एन्कोडर। LTX-2.0 और LTX-2.3 Gemma3 उपयोग करते हैं; LTX-2.5 Gemma4 उपयोग करता है। 2. LTX‑2 Video VAE (audio conditioning के लिए Audio VAE भी)। 3. 19B Video Transformer: बड़ा DiT backbone।
यह सेटअप VRAM‑intensive है, और VAE pre‑caching मेमोरी usage को spike कर सकता है।
- नोट: शुरुआती VAE pre‑caching चरण में अधिक VRAM लग सकती है। caching चरण के लिए CPU offloading या बड़ा GPU चाहिए हो सकता है।
- टिप:
config.jsonमें"offload_during_startup": trueसेट करें ताकि VAE और text encoder एक साथ GPU पर लोड न हों, जिससे pre‑caching मेमोरी दबाव काफी कम हो जाता है। - सिस्टम RAM: बड़े रन के लिए 64GB+ अनुशंसित है; अधिक RAM caching में मदद करती है।
देखी गई परफॉर्मेंस और मेमोरी (फील्ड रिपोर्ट)¶
- बेसलाइन सेटिंग्स: 480p, 17 frames, batch size 2 (न्यूनतम वीडियो लंबाई/रिज़ॉल्यूशन)।
- RamTorch (text encoder सहित): AMD 7900XTX पर ~13 GB VRAM।
- NVIDIA 3090/4090/5090+ पर समान या बेहतर VRAM हेडरूम मिलना चाहिए।
- बिना offload (int8 TorchAO): ~29-30 GB VRAM; 32 GB हार्डवेयर अनुशंसित।
- सिस्टम RAM पीक: bf16 Gemma text encoder लोड करके int8 में क्वांटाइज़ करने पर ~46 GB (~32 GB VRAM)।
- सिस्टम RAM पीक: bf16 LTX-2 transformer लोड करके int8 में क्वांटाइज़ करने पर ~34 GB (~30 GB VRAM)।
- बिना offload (पूर्ण bf16): बिना किसी offload के ट्रेनिंग के लिए ~48 GB VRAM चाहिए।
- थ्रूपुट:
- A100-80G SXM4 पर ~8 sec/step (कम्पाइल बंद)।
- 7900XTX पर ~16 sec/step (लोकल रन)।
- A100-80G SXM4 पर 200 steps ~30 मिनट।
⚠️ Regional compilation को enabled रखने से पहले test करें।
dynamo_use_regional_compilationLTX Video 2 के लिए हमेशा speedup नहीं देता और compilation warm up होने के बाद भी steady-state throughput घटा सकता है। समान fixed batch, frame count और resolution पर eager तथा compiled runs की तुलना करें, और शुरुआती compilation steps के बजाय warmup के बाद के कई training steps से निर्णय लें।
पूर्वापेक्षाएँ¶
Python 3.12 इंस्टॉल होना सुनिश्चित करें।
इंस्टॉलेशन¶
pip install 'simpletuner[cuda]'
# CUDA 13 / Blackwell users (NVIDIA B-series GPUs)
pip install 'simpletuner[cuda13]' --extra-index-url https://download.pytorch.org/whl/cu130
अधिक उन्नत इंस्टॉलेशन विकल्पों के लिए INSTALL.md देखें।
वातावरण सेटअप¶
Web interface¶
http://localhost:8001 पर पहुँचें।Manual configuration¶
हेल्पर स्क्रिप्ट चलाएँ:
या उदाहरण कॉपी करके मैन्युअली संपादित करें:
Configuration parameters¶
LTX Video 2 के लिए key settings:
model_family:ltxvideo2model_flavour:dev(डिफ़ॉल्ट),dev-fp4,dev-fp8,2.3-dev,2.3-distilled,2.5-devया2.5-distilled।pretrained_model_name_or_path:Lightricks/LTX-2,dg845/LTX-2.3-Diffusers,dg845/LTX-2.3-Distilled-Diffusers,Lightricks/LTX-2.5या local.safetensorsफ़ाइल।train_batch_size:1। इसे तब तक न बढ़ाएँ जब तक आपके पास A100/H100 न हो।validation_resolution:512x768परीक्षण के लिए सुरक्षित डिफ़ॉल्ट है।720x1280(720p) संभव है लेकिन भारी है।validation_num_video_frames: VAE compression (4x) के साथ संगत होना चाहिए।- 5s (लगभग 12‑24fps पर):
61या49उपयोग करें। - सूत्र:
(frames - 1) % 4 == 0. validation_guidance:5.0.ltx2_validation_audio_guidance: validation के लिए optional separate audio CFG scale। unset रखने पर audio के लिएvalidation_guidancereuse होगा; LTX-2.5 AV validation में ComfyUI dual-CFG node defaults video CFG3.0और audio CFG7.0हैं।ltx2_validation_pipeline_mode: सामान्य validation के लिएtrained-stageरखें।spatial-upscaleLTX-2 का two-stage spatial upscaler path चलाता है: half-resolution latent generation, spatial latent upscaling, फिर full-resolution re-denoising।spatial-upscaleके लिएvalidation_resolution64 से divisible होना चाहिए।- Optional overrides:
ltx2_validation_spatial_upsampler_modelऔरltx2_validation_spatial_upsampler_filename। DefaultsLightricks/LTX-2.3औरltx-2.3-spatial-upscaler-x2-1.1.safetensorsहैं। frame_rate: डिफ़ॉल्ट 25 है।
LTX-2 2.0 variants एक .safetensors checkpoint के रूप में आते हैं जिनमें transformer, video VAE, audio VAE, और vocoder शामिल हैं।
LTX-2.3 के लिए, SimpleTuner model_flavour के आधार पर संबंधित Diffusers repo लोड करता है
(2.3-dev या 2.3-distilled)।
LTX-2.5 के लिए, SimpleTuner Diffusers repo path को Lightricks/LTX-2.5 मानता है और text encoder को Gemma4 से route करता है। यदि आप local single-file LTX-2.5 checkpoint लोड करते हैं, तो model_flavour को 2.5-dev या 2.5-distilled रखें; local path से override न करने पर SimpleTuner Lightricks/LTX-2.5 को component/config source के रूप में उपयोग करेगा।
LTX-2 AV validation का dual CFG सामान्य conditional और unconditional predictions उपयोग करता है और video/audio latent streams पर अलग-अलग scales लागू करता है। यह अपने-आप extra model pass नहीं जोड़ता। STG, modality guidance, या reference-audio identity guidance जैसे extra guidance features enabled होने पर अपना additional pass जोड़ते हैं।
वैकल्पिक: VRAM ऑप्टिमाइज़ेशन¶
VRAM headroom चाहिए तो:
- Musubi block swap: musubi_blocks_to_swap (4-8 से शुरू करें) और वैकल्पिक musubi_block_swap_device (डिफ़ॉल्ट cpu) सेट करें ताकि आख़िरी Transformer blocks CPU से स्ट्रीम हों। throughput घटेगा लेकिन peak VRAM कम होगा।
- VAE patch convolution: --vae_enable_patch_conv=true से LTX-2 VAE में temporal chunking सक्षम करें; थोड़ी speed कम होगी लेकिन peak VRAM घटेगा।
- VAE temporal roll: --vae_enable_temporal_roll=true से अधिक aggressive temporal chunking (अधिक speed hit)।
- VAE tiling: --vae_enable_tiling=true से बड़े resolution पर VAE encode/decode को tiles में चलाएँ।
वैकल्पिक: CREPA temporal regularizer¶
flicker कम करने और फ्रेम्स में विषय स्थिर रखने के लिए:
- Training → Loss functions में CREPA सक्षम करें।
- अनुशंसित प्रारंभिक मान: Block Index = 8, Weight = 0.5, Adjacent Distance = 1, Temporal Decay = 1.0.
- जब तक छोटा encoder न चाहिए, डिफ़ॉल्ट vision encoder (dinov2_vitg14, size 518) रखें (dinov2_vits14 + 224 छोटा विकल्प है)।
- पहली बार DINOv2 weights पाने के लिए network (या cached torch hub) चाहिए।
- Drop VAE Encoder केवल तब सक्षम करें जब आप पूरी तरह cached latents से प्रशिक्षण कर रहे हों; अन्यथा बंद रखें।
उन्नत प्रयोगात्मक विशेषताएँ¶
उन्नत प्रयोगात्मक विवरण दिखाएँ
SimpleTuner में प्रयोगात्मक फीचर्स शामिल हैं जो प्रशिक्षण की स्थिरता और प्रदर्शन को काफी बेहतर कर सकते हैं। * **[Scheduled Sampling (Rollout)](../experimental/SCHEDULED_SAMPLING.md):** exposure bias कम करता है और आउटपुट गुणवत्ता बढ़ाता है, क्योंकि यह प्रशिक्षण के दौरान मॉडल को अपने इनपुट्स खुद जनरेट करने देता है। > ⚠️ ये फीचर्स प्रशिक्षण के कंप्यूटेशनल ओवरहेड को बढ़ाते हैं। #### डेटासेट विचार वीडियो डेटासेट्स के लिए सावधानीपूर्वक सेटअप चाहिए। `config/multidatabackend.json` बनाएँ:[
{
"id": "my-video-dataset",
"type": "local",
"dataset_type": "video",
"instance_data_dir": "datasets/videos",
"caption_strategy": "textfile",
"resolution": 512,
"video": {
"num_frames": 61,
"min_frames": 61,
"frame_rate": 25,
"bucket_strategy": "aspect_ratio"
},
"repeats": 10
},
{
"id": "text-embeds",
"type": "local",
"dataset_type": "text_embeds",
"default": true,
"cache_dir": "cache/text/ltxvideo2",
"disabled": false
}
]
"audio": {
"auto_split": true,
"sample_rate": 16000,
"channels": 1,
"duration_interval": 3.0,
"allow_zero_audio": false
}
mkdir -p datasets/videos
</details>
# Place .mp4 / .mov files here.
# Place corresponding .txt files with same filename for captions.
उदाहरण कॉन्फ़िग देखें
7900XTX कॉन्फ़िग देखें (न्यूनतम VRAM उपयोग)
{
"base_model_precision": "int8-quanto",
"checkpoint_step_interval": 100,
"data_backend_config": "config/ltx2/multidatabackend.json",
"disable_benchmark": true,
"dynamo_mode": "",
"evaluation_type": "none",
"hub_model_id": "simpletuner-ltxvideo2-19b-t2v-lora-test",
"learning_rate": 0.00006,
"lr_warmup_steps": 50,
"lycoris_config": "config/lycoris_config.json",
"max_grad_norm": 0.1,
"max_train_steps": 200,
"minimum_image_size": 0,
"model_family": "ltxvideo2",
"model_flavour": "dev",
"model_type": "lora",
"num_train_epochs": 0,
"offload_during_startup": true,
"optimizer": "adamw_bf16",
"output_dir": "output/examples/ltxvideo2-19b-t2v.peft-lora",
"override_dataset_config": true,
"ramtorch": true,
"ramtorch_text_encoder": true,
"report_to": "none",
"resolution": 480,
"scheduled_sampling_reflexflow": false,
"seed": 42,
"skip_file_discovery": "",
"tracker_project_name": "lora-training",
"tracker_run_name": "example-training-run",
"train_batch_size": 2,
"vae_batch_size": 1,
"vae_enable_patch_conv": true,
"vae_enable_slicing": true,
"vae_enable_temporal_roll": true,
"vae_enable_tiling": true,
"validation_disable": true,
"validation_disable_unconditional": true,
"validation_guidance": 5,
"validation_num_inference_steps": 40,
"validation_num_video_frames": 81,
"validation_prompt": "🟫 is holding a sign that says hello world from ltxvideo2",
"validation_resolution": "768x512",
"validation_seed": 42,
"validation_using_datasets": false
}
[
{
"id": "my-audio-dataset",
"type": "local",
"dataset_type": "audio",
"instance_data_dir": "datasets/audio",
"caption_strategy": "textfile",
"audio": {
"sample_rate": 16000,
"channels": 2,
"duration_interval": 3.0,
"truncation_mode": "beginning"
},
"repeats": 10
},
{
"id": "text-embeds",
"type": "local",
"dataset_type": "text_embeds",
"default": true,
"cache_dir": "cache/text/ltxvideo2",
"disabled": false
}
]