Use generate_dancer.py to create the final animation. You can run this on a single GPU or across multiple GPUs using FSDP and xDiT USP.
Note on Reproducibility: Multi-GPU inference may produce different results than Single-GPU inference due to the non-deterministic nature of distributed computing. For better reproducibility, Single-GPU inference is recommended.
Required Input Directory Structure
The input_dir must contain:
ref_image.pngdriving_video.mp4prompt.txtpositive/ (folder containing aligned pose images)negative/ (folder containing augmented pose images)
# Single-GPU inference
CUDA_VISIBLE_DEVICES=0 python generate_dancer.py \
--task i2v-14B --size 1024*576 \
--ckpt_dir $ckpt_dir \
--prompt "$prompt" \
--image $image \
--cond_pos_folder $cond_pos_folder \
--cond_neg_folder $cond_neg_folder \
--sample_guide_scale $cfg_scale \
--condition_guide_scale $condition_guide_scale \
--end_cond_cfg $pro \
--base_seed $base_seed \
--save_file "${save_file}--$(date +"%Y%m%d%H%M%S")"
# Multi-GPU inference using FSDP + xDiT USP
GPUs=2
torchrun --nproc_per_node=${GPUs} generate_dancer.py \
--dit_fsdp --t5_fsdp --ulysses_size ${GPUs} \
--task i2v-14B --size 1024*576 \
--ckpt_dir $ckpt_dir \
--prompt "$prompt" \
--image $image \
--cond_pos_folder $cond_pos_folder \
--cond_neg_folder $cond_neg_folder \
--sample_guide_scale $cfg_scale \
--condition_guide_scale $condition_guide_scale \
--end_cond_cfg $pro \
--base_seed $base_seed \
--save_file "${save_file}--$(date +"%Y%m%d%H%M%S")--xDiTUSP${GPUs}"