🎬 Trening LoRA dla wideo WAN

⚠️ W trwaniu intensywnych prac rozwojowych
Ta konfiguracja wciąż jest eksperymentalna.
Używaj jej jako źródła inspiracji dla generowania widea opartego na sieciach WAN (T2V/I2V/V2V/S2V), a nie gotowego rozwiązania produkcyjnego.

Jeśli chcesz przyczynić się do naszego eksperymentu z WAN Video Training, skontaktuj się z nami tutaj: Kontakty wsparcia.

Zamów serwer GPU dla Wide Area Network (WAN) Video


🧩 1. Konfiguracja środowiska

Utwórz czyste środowisko Python za pomocą Conda (zalecane) lub venv:

bash
# 1) Conda / Virtual Environment
conda create -n wan22 python=3.10 -y
conda activate wan22

# 2) Install PyTorch (CUDA 12.x Build)
pip install --upgrade torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install xformers accelerate transformers datasets peft bitsandbytes==0.43.3 safetensors einops
pip install opencv-python pillow tqdm

# 3) Clone Trainer
git clone https://github.com/Wan-Video/DiffSynth-Studio.git
cd DiffSynth-Studio
pip install -r requirements.txt || true
cd ..

💡 Porada: Na kartach graficznych NVIDIA A100, zawsze używaj precyzji BF16 dla stabilnego i efektywnego trenowania.


🧠 2. Konfiguracja modelu

Umieść pliki z wagami modelu WAN 2.2 (w zależności od zadania: T2V, I2V, V2V, S2V), wraz z plikami VAE oraz kodera tekstowego, w oczekiwanych katalogach trenera — lub podaj je ręcznie za pomocą flagi --model_name_or_path

Przykłady:

bash
--model_name_or_path Wan-AI/Wan2.2-T2V-A14B   # Text-to-Video
--model_name_or_path Wan-AI/Wan2.2-I2V-A14B   # Image-to-Video

🎞 3. Przygotowanie zbioru danych

Plik zestawu danych w formacie JSONL z jednym rekordem na klip wideo.

Przykładowy format:

json
{"video": "/data/myset/clip_0001.mp4", "prompt": "a cozy coffee shop scene at golden hour", "fps": 24, "seconds": 4, "resolution": "1280x720"}
{"video": "/data/myset/clip_0002.mp4", "prompt": "rainy neon city street, cinematic", "fps": 24, "seconds": 4, "resolution": "1280x720"}

📘 Uwagi:

  • Dla Tekst-do-Wideo (T2V), można odwoływać się do zdjęć statycznych, klatek lub wideo próbnego. Wymagane są prompt oraz specyfikacje celu (klatki na sekundę/fps, sekundy, rozdzielczość).

  • Zapisz swoje zbiory danych jako:

    • /data/wan22/train.jsonl
    • /data/wan22/val.jsonl

⚙️ 4. accelerate Konfiguracja

Uruchomienie jednorazowe:

bash
accelerate config default

Lub zdefiniuj ręcznie w ~/.cache/huggingface/accelerate/default_config.yaml:

yaml
compute_environment: LOCAL_MACHINE
distributed_type: NO
mixed_precision: bf16
num_processes: 1
gpu_ids: "0"
dynamo_backend: NO

👉 W przypadku treningu na wielu GPU, ustaw:

yaml
distributed_type: MULTI_GPU

🚀 5. Precyzyjne dostrajanie LoRA (Przykład A100 40GB)

🧩 Tekst na wideo (720p, 4 sek., BF16)

bash
conda activate wan22
cd DiffSynth-Studio

accelerate launch \
  train_wan_lora.py \
  --model_name_or_path "Wan-AI/Wan2.2-T2V-A14B" \
  --output_dir /data/wan22_lora_out \
  --dataset_json /data/wan22/train.jsonl \
  --resolution 720 --fps 24 --clip_seconds 4 \
  --train_batch_size 1 \
  --gradient_accumulation_steps 8 \
  --max_train_steps 20000 \
  --learning_rate 1e-4 --warmup_steps 500 \
  --lora_rank 64 --lora_alpha 64 \
  --use_bf16 --enable_xformers --gradient_checkpointing \
  --checkpointing_steps 1000 \
  --validation_json /data/wan22/val.jsonl --validation_steps 2000

🖼 Obraz do Wideo (I2V)

Zmień tylko model:

bash
--model_name_or_path "Wan-AI/Wan2.2-I2V-A14B"

🔧 6. Zalecane optymalizacje dla A100

Sytuacja Zalecana korekta
Dużo pamięci VRAM Zwiększ --train_batch_size do 2 lub użyj --lora_rank 96–128
Ograniczona pamięć VRAM Zwiększ --gradient_accumulation_steps to 12–16
LoRA dla postaci/stylów 6 tys.–12 tys. kroków, rangą 32–64
Precyzja Zawsze preferuj BF16 nad FP16
Optymalizacja Włącz --gradient_checkpointing + --enable_xformers

💾 7. Wznawianie treningu / Punkty kontrolne

bash
accelerate launch train_wan_lora.py \
  ... (same parameters) \
  --resume_from_checkpoint "/data/wan22_lora_out/checkpoint-10000"

🧠 8. Wnioskowanie / Testowanie

Większość procesów WAN (CLI, ComfyUI, itp.) obsługuje bezpośrednie ładowanie adapterów LoRA.

Przykład CLI:

bash
python infer_wan.py \
  --model_name_or_path "Wan-AI/Wan2.2-T2V-A14B" \
  --lora_path "/data/wan22_lora_out" \
  --prompt "cozy coffee shop at golden hour, bokeh" \
  --negative_prompt "distorted faces, artifacts" \
  --resolution 720 --fps 24 --seconds 4 \
  --output /data/wan22/samples/test001.mp4 \
  --use_bf16 --enable_xformers

💡 ComfyUI: Użyj WAN Loadera → załącz LoRA(y) → wygeneruj swoje wideo testowe.


🧮 9. Trening Multi-GPU (Ten Sam Host)

Wykorzystaj wiele GPU (np. 2× A100 40GB) w celu szybszego dostrajania.

bash
accelerate config  # set distributed_type=MULTI_GPU, num_processes=2
accelerate launch \
  --multi_gpu \
  train_wan_lora.py \
  ... (same parameters) \
  --train_batch_size 1 --gradient_accumulation_steps 8

W przypadku konfiguracji z 4 lub więcej GPU, włącz --seq_parallel jeśli obsługiwane — znacznie zmniejsza obciążenie VRAM.


⚡ 10. Odniesienie do hiperparametrów

Typ LR Ranga Alfa Kroki Partia Akumulacja gradientu Uwagi
Ogólne 1e-4 64 64 10k–20k 1 8–12 Zrównoważona linia bazowa
Charakter 1e-4 64–128 64 8k–12k 1 8 Idealne do krótkich klipów 2–4 sekundy.
Styl 1e-4 32–64 64 6k–10k 1 8–12 Szeroki zakres stylistyczny
Ewaluacja co 1–2 tys. Test 2–4 stałe + 2 rzeczywiste zapytania

🧾 Podsumowanie

Trening LoRA dla modeli WAN umożliwia:

  • Szybka personalizacja modeli generowania wideo WAN 2.2
  • Spójność stylu, motywu i postaci w generowanych wynikach
  • Efektywne dostrajanie z wykorzystaniem LoRA i xFormers przy minimalnym obciążeniu VRAM

Zalecana konfiguracja:

  • ⚙️ CUDA 12.x
  • 🧠 NVIDIA A100 (40 GB)
  • 💡 Precyzja BF16
  • 🧩 xFormers + gradient checkpointing

🏁 Przegląd przykładu przepływu pracy

tekst
Environment  →  Model Setup  →  Dataset Prep  →  LoRA Fine-tune  →  Inference

🎥 Szczelniej trenuj. Szybciej generuj. Mocniejsza sieć.