FastVideo是一个轻量级的框架,用于加速大型视频扩散模型。
**主要特点:**
* FastHunyuan和FastMochi:一致性蒸馏的视频扩散模型,推理速度提高了8倍。
* 基于PCM的视频DiT的第一个开源蒸馏方案。
* 支持蒸馏/微调/推理最先进的开源视频DiT:1. Mochi 2. Hunyuan。
* 使用FSDP、序列并行和选择性激活检查点进行可扩展训练,并在64个GPU上实现近线性扩展。
* 使用LoRA、预计算潜在变量和预计算文本嵌入进行内存高效微调。
**开发中且处于实验阶段。**
**演示:**
Fast-Hunyuan与原始Hunyuan的比较,使用FastVideo框架实现了8倍的扩散速度提升。
OpenAI Sora、原始Hunyuan和FastHunyuan之间的比较。
**更改日志:**
2024/12/17:发布FastVideo v0.1。
**安装:**
代码在Python 3.10.0、CUDA 12.1和H100上进行了测试。
`./env_setup.sh fastvideo`
**推理:**
建议使用具有80GB内存的GPU。要运行推理,请使用以下命令:
**FastHunyuan**
1. 下载模型权重
`python scripts/huggingface/download_hf.py --repo_id=FastVideo/FastHunyuan --local_dir=data/FastHunyuan --repo_type=model`
2. CLI推理
`sh scripts/inference/inference_hunyuan.sh`
您也可以在官方Hunyuan github中进行FastHunyuan推理。
**FastMochi**
1. 下载模型权重
`python scripts/huggingface/download_hf.py --repo_id=FastVideo/FastMochi-diffusers --local_dir=data/FastMochi-diffusers --repo_type=model`
2. CLI推理
`bash scripts/inference/inference_mochi_sp.sh`
**蒸馏:**
我们的蒸馏方案基于Phased Consistency Model。我们没有发现使用多阶段蒸馏有显著的改进,因此我们保留了与原始潜在一致性模型方案类似的单阶段设置。
我们使用MixKit数据集进行蒸馏。为了避免在训练期间运行文本编码器和VAE,我们预处理所有数据以生成文本嵌入和VAE潜在变量。
预处理说明可以在data_preprocess.md中找到。为了方便起见,我们还提供可以直接下载的预处理数据:
`python scripts/huggingface/download_hf.py --repo_id=FastVideo/HD-Mixkit-Finetune-Hunyuan --local_dir=data/HD-Mixkit-Finetune-Hunyuan --repo_type=dataset`
接下来,使用以下命令下载原始模型权重:
`python scripts/huggingface/download_hf.py --repo_id=FastVideo/hunyuan --local_dir=data/hunyuan --repo_type=model`
要启动蒸馏过程,请使用以下命令:
`bash scripts/distill/distill_mochi.sh` # 用于mochi
`bash scripts/distill/distill_hunyuan.sh` # 用于hunyuan
我们还提供了一个用于对抗损失蒸馏的可选脚本,位于fastvideo/distill_adv.py中。虽然我们尝试了对抗损失,但我们没有观察到显著的改进。
**微调:**
**完整微调**
确保您的数据已准备就绪并以data_preprocess.md中指定的格式进行预处理。为了方便起见,我们还提供了一个可以直接下载的mochi预处理Black Myth Wukong数据:
`python scripts/huggingface/download_hf.py --repo_id=FastVideo/Mochi-Black-Myth --local_dir=data/Mochi-Black-Myth --repo_type=dataset`
下载原始模型权重:
`python scripts/huggingface/download_hf.py --repo_id=genmo/mochi-1-preview --local_dir=data/mochi --repo_type=model`
`python scripts/huggingface/download_hf.py --repo_id=FastVideo/hunyuan --local_dir=data/hunyuan --repo_type=model`
然后,您可以使用以下命令运行微调:
`bash scripts/finetune/finetune_mochi.sh` # 用于mochi
请注意,对于微调,我们没有调整提供的脚本中的超参数。
**LoRA微调**
目前,我们只为Mochi模型提供LoRA微调,LoRA微调的命令为
`bash scripts/finetune/finetune_mochi_lora.sh`
**最低硬件要求**
* 使用LoRA的两个GPU,每个GPU 40 GB内存
* 使用CPU卸载和LoRA的两个GPU,每个GPU 30 GB内存
**使用图像和视频进行微调**
我们的代码库支持使用图像和视频进行微调。
`bash scripts/finetune/finetune_hunyuan.sh`
`bash scripts/finetune/finetune_mochi_lora_mix.sh`
对于图像-视频混合微调,请确保在脚本中启用`--group_frame`选项。
**致谢:**
我们学习并重用了以下项目的代码:PCM、diffusers、OpenSoraPlan和xDiT。
感谢MBZUAI和Anyscale在整个项目中的支持。