1mkdir dataset
2cp your_videos/*.mp4 dataset/
3# Create captions.txt with format: video_name|SKSCHAR your prompt here
4cat > dataset/captions.txt << 'EOF'
5video_0|SKSCHAR woman walking in park
6video_1|SKSCHAR woman talking to camera
7EOF
1# Requires A100 80GB / L40S / H100 (48GB+ VRAM)
2# ~$2-3/hour on RunPod/Vast.ai/Lambda Labs
3
4pip install torch transformers diffusers accelerate peft
5
6accelerate launch train_wan_i2v_lora.py \
7 --pretrained_model Wan-AI/Wan2.1-I2V-14B-480P-Diffusers \
8 --dataset_dir ./dataset \
9 --output_dir ./output \
10 --rank 128 \
11 --lora_alpha 128 \
12 --lr 1e-4 \
13 --max_steps 1000 \
14 --grad_accum 4 \
15 --mixed_precision bf16 \
16 --trigger_word SKSCHAR \
17 --push_to_hub \
18 --hub_model_id yourname/character-lora
1from diffusers import WanImageToVideoPipeline, AutoencoderKLWan
2from transformers import CLIPVisionModel
3import torch
4
5model_id = "Wan-AI/Wan2.1-I2V-14B-480P-Diffusers"
6pipe = WanImageToVideoPipeline.from_pretrained(
7 model_id,
8 vae=AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32),
9 image_encoder=CLIPVisionModel.from_pretrained(model_id, subfolder="image_encoder", torch_dtype=torch.float32),
10 torch_dtype=torch.bfloat16,
11)
12pipe.to("cuda")
13
14pipe.load_lora_weights("./output/final", adapter_name="char")
15pipe.set_adapters(["char"], [0.8])
16
17from diffusers.utils import load_image
18image = load_image("reference.jpg")
19
20output = pipe(
21 image=image,
22 prompt="SKSCHAR woman dancing gracefully",
23 height=480, width=832,
24 num_frames=81,
25 guidance_scale=5.0,
26 num_inference_steps=25,
27).frames[0]
28
29from diffusers.utils import export_to_video
30export_to_video(output, "result.mp4", fps=16)
1python3 -c "
2import requests, os
3os.makedirs('demo_dataset', exist_ok=True)
4base = 'https://huggingface.co/datasets/Useravailablepls/wan-i2v-lora-demo-videos/resolve/main/'
5for f in ['video_0.mp4', 'video_1.mp4', 'captions.txt']:
6 r = requests.get(base + f)
7 open(f'demo_dataset/{f}', 'wb').write(r.content)
8 print(f'Downloaded {f}')
9"
1@article{wan2025wan21,
2 title={Wan 2.1: Comprehensive and Efficient Video Generation},
3 author={Wan Video Team},
4 journal={arXiv preprint arXiv:2503.20314},
5 year={2025}
6}