Diffusers 中的开放视频生成模型现状
Hugging Face 已详细阐述了开放视频生成模型的当前格局以及 Diffusers 库中可用的技术优化,以使这些资源密集型模型在消费级硬件上可访问。主要结论是,虽然高质量视频生成在计算上仍然昂贵,但量化、卸载和分块推理的组合可以大幅降低显存需求,而不会对速度造成严重影响。
视频生成模型的格局
视频生成目前在专有闭源模型和不断增长的开源替代品生态系统之间划分。
闭源模型
主要行业参与者提供功能强大但专有的模型,包括:
- OpenAI: Sora
- Google: Veo 2
- Meta: MovieGen
- RunwayML: Gen 3 Alpha
- Pika Labs: Pika 2.0
- KlingAI: Kling
- Haliluo: MiniMax
开源模型
几种开源模型已经出现,以向社区提供视频生成的访问,包括:
- Tencent: Hunyuan Video
- Genmo: Mochi-1
- RhymesAI: Allegro
- Lightricks: LTX Video
- THUDM: CogVideoX
技术挑战与局限
视频生成相比图像生成要复杂得多,因为除了真实感、美学和遵守输入条件之外,它还需要在帧之间保持时空一致性和连贯性。
关键局限
- 高资源需求:数据集收集、硬件和训练迭代的成本使得开源开发昂贵。
- 泛化能力:一些开源模型在分布外数据上表现困难,或需要高度特定、详细的提示(例如 LTX-Video)才能获得高质量结果。
- 延迟:高计算和内存需求导致显著的生成延迟,这通常成为本地部署的障碍。
开放视频模型的架构
现代开放视频生成模型通常遵循与文本到图像模型类似的结构,但具备 3D 处理能力:
- 文本编码器:大多数模型偏好 T5,尽管 HunYuan 同时使用 CLIP-L 和 LLaMa 3。
- 去噪网络:基于 DiT(扩散 Transformer)架构,融合 PixArt 的元素,处理捕捉空间和时间数据的 3D 视频 token。
- 编码器-解码器:采用空间和时间压缩来在像素空间和潜在空间之间进行转换。逐帧解码常用于管理内存。
- 调度器:非参数调度器管理时间步计算和去噪过程。
Diffusers 中的内存优化
运行最先进的视频模型通常需要惊人的显存量。例如,对分辨率为 $121 imes 512 imes 768$ 的视频使用标准的 torch.bfloat16 设置,基线显存需求为:
- HunyuanVideo: 60.09 GB
- CogVideoX (1.5 5B): 36.51 GB
- LTX-Video: 17.75 GB
优化套件
为了将这些模型带到消费级硬件,Diffusers 提供了若干可选的优化类别:
- 量化:通过如
bitsandbytes、torchao和GGUF等后端降低权重精度。 - 卸载:使用
enable_model_cpu_offload()或enable_sequential_cpu_offload()将层移动到 CPU,在不进行活动计算时。 - 分块推理:通过前馈分块、解码器平铺/切片和分割注意力推理来减少激活状态开销。
- 状态重用:通过重用过去的注意力和 MLP 状态来跳过某些去噪步骤。
优化对 HunyuanVideo 的影响
Hugging Face 表明,通过链式使用这些技术,HunyuanVideo 的显存需求可以从 60.10 GB (BF16 Base) 降低至 6.56 GB,方法是结合使用 FP8 上提升、Group offload(叶)和 VAE 平铺。通过使用 Flash Attention 和优化的前馈网络,还能进一步降低至约 5 GB。
训练与微调
蒸馏技术
为了提高推理速度,使用了两种主要的蒸馏方法:
- 时间步蒸馏:教导模型在更少的步骤内预测最终输出(例如 Flux.1-Schnell, FastHunyuan)。
- 引导蒸馏:将 Classifier-Free Guidance 所需的两次前向传播减少为一次,以将生成时间减半(例如 HunyuanVideo, Flux.1-Dev)。
使用 finetrainers 进行微调
Hugging Face 推出了 finetrainers 仓库,以简化开放视频模型的微调。这使用户能够将如 LoRA 之类的技术应用于特定模型(例如 CogVideoX),以模拟特定的视觉效果,例如“溶解”效果。