Views
No views yet

TL;DR: We propose Reward Forcing to distill a bidirectional video diffusion model into a 4-step autoregressive student model that enables real-time (23.1 FPS) streaming video generation. Instead of using vanilla distribution matching distillation (DMD), Reward Forcing adopts a novel rewarded distribution matching distillation (Re-DMD) that prioritizes matching towards high-reward regions, leading to enhanced object motion dynamics and immersive scene navigation dynamics in generated videos.
1git clone https://github.com/JaydenLyh/Reward-Forcing.git
2cd Reward-Forcing1conda create -n reward_forcing python=3.10
2conda activate reward_forcing1pip install -r requirements.txt
2pip install flash-attn --no-build-isolationpip install -e .| Model | Download |
|---|---|
| VideoReward | Hugging Face |
| Wan2.1-T2V-1.3B | Hugging Face |
| Wan2.1-T2V-14B | Hugging Face |
| ODE Initialization | Hugging Face |
| Reward Forcing | Hugging Face |
checkpoints/
├── Videoreward/
│ ├── checkpoint-11352/
│ └── model_config.json
├── Wan2.1-T2V-1.3B/
├── Wan2.1-T2V-14B/
├── Reward-Forcing-T2V-1.3B/
└── ode_init.pt1pip install "huggingface_hub[cli]"
2
3# Download all checkpoints
4bash download_checkpoints.sh1# 5-seconds video inference
2python inference.py \
3 --num_output_frames 21 \
4 --config_path configs/reward_forcing.yaml \
5 --checkpoint_path checkpoints/Reward-Forcing-T2V-1.3B/rewardforcing.pt \
6 --output_folder videos/rewardforcing-5s \
7 --data_path prompts/MovieGenVideoBench_extended.txt \
8 --use_ema
9
10# 30-seconds video inference
11python inference.py \
12 --num_output_frames 120 \
13 --config_path configs/reward_forcing.yaml \
14 --checkpoint_path checkpoints/Reward-Forcing-T2V-1.3B/rewardforcing.pt \
15 --output_folder videos/rewardforcing-30s \
16 --data_path prompts/MovieGenVideoBench_extended.txt \
17 --use_ema1# bash train.sh
2torchrun --nnodes=1 --nproc_per_node=8 --rdzv_id=5235 --rdzv_backend=c10d \
3 --rdzv_endpoint=$MASTER_PORT train.py --config_path configs/reward_forcing.yaml \
4 --logdir logs/reward_forcing \
5 --disable-wandb1torchrun --nnodes=$NODE_SIZE --nproc_per_node=8 --node-rank=$NODE_RANK --rdzv_id=5235 --rdzv_backend=c10d \
2 --rdzv_endpoint=$MASTER_IP:$MASTER_PORT train.py --config_path configs/reward_forcing.yaml \
3 --logdir logs/reward_forcing \
4 --disable-wandbconfigs/:default_config.yaml: Default configurationreward_forcing.yaml: Reward Forcing configuration| Method | Total Score | Quality Score | Semantic Score | Params | FPS |
|---|---|---|---|---|---|
| SkyReels-V2 | 82.67 | 84.70 | 74.53 | 1.3B | 0.49 |
| MAGI-1 | 79.18 | 82.04 | 67.74 | 4.5B | 0.19 |
| NOVA | 80.12 | 80.39 | 79.05 | 0.6B | 0.88 |
| Pyramid Flow | 81.72 | 84.74 | 69.62 | 2B | 6.7 |
| CausVid | 82.88 | 83.93 | 78.69 | 1.3B | 17.0 |
| Self Forcing | 83.80 | 84.59 | 80.64 | 1.3B | 17.0 |
| LongLive | 83.22 | 83.68 | 81.37 | 1.3B | 20.7 |
| Ours | 84.13 | 84.84 | 81.32 | 1.3B | 23.1 |
1@misc{lu2025rewardforcingefficientstreaming,
2 title={Reward Forcing: Efficient Streaming Video Generation with Rewarded Distribution Matching Distillation},
3 author={Yunhong Lu and Yanhong Zeng and Haobo Li and Hao Ouyang and Qiuyu Wang and Ka Leong Cheng and Jiapeng Zhu and Hengyuan Cao and Zhipeng Zhang and Xing Zhu and Yujun Shen and Min Zhang},
4 year={2025},
5 eprint={2512.04678},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV},
8 url={https://arxiv.org/abs/2512.04678},
9}