news 2026/9/11 18:56:33

Open-Sora 1.2 技术报告深度解析:视频压缩网络、整流流训练与多阶段数据策略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open-Sora 1.2 技术报告深度解析:视频压缩网络、整流流训练与多阶段数据策略

Open-Sora 1.2 技术报告深度解析:视频压缩网络、整流流训练与多阶段数据策略

【免费下载链接】Open-SoraOpen-Sora: Democratizing Efficient Video Production for All项目地址: https://gitcode.com/GitHub_Trending/op/Open-Sora

Open-Sora 1.2 是 Open-Sora 系列中承上启下的重要版本:它首次引入像 Sora 一样的时域视频压缩网络,并全面切换到整流流(Rectified Flow)训练范式,同时配合「低质量大规模 → 高质量小规模」的多阶段数据策略与简单有效的分数条件调节,在 12×8 张 GPU 上以约 2 周时间完成了 1.1B 参数模型从图像生成向视频生成的能力迁移。本文以官方报告 docs/zh_CN/report_v3.md 为骨架,结合当前仓库的源码与配置逐项展开,帮助你理解其压缩网络结构、整流流适配细节、三阶段训练设计、评估方法与序列并行实现,并能直接对照仓库中的配置与脚本复现训练与推理。

版本总览:能力矩阵与关键更新

Open-Sora 1.2 在超过 3000 万条数据上训练了一个 1.1B 参数的扩散模型,支持 0s~16s、144p~720p、各种宽高比的视频生成。继 1.1 版本之后,1.2 还支持图像到视频(i2v)生成和视频扩展(v2v)。报告给出了分辨率 × 时长的能力矩阵:

图像2秒4秒8秒16秒
240p
360p
480p🆗
720p🆗🆗

其中 ✅ 表示训练期间可见的数据组合,🆗 表示模型未经该配置训练但可以推理的配置;🆗 情形需要多个 80G 内存 GPU 并开启序列并行。相比 1.1,本版本的重磅更新集中在五方面:

  • 视频压缩网络(时域压缩 4 倍,告别抽帧降 fps)
  • 整流流训练(含 Logit-norm 采样与分辨率/长度感知时间步采样)
  • 更多数据和更好的多阶段训练
  • 简单有效的模型调节(美学分数/运动分数/相机运动作为条件)
  • 更好的评估指标(整流流评估损失 + VBench)

上述改进的训练与推理实现均可在仓库中找到对应代码;同时官方还改进了代码库与文档的易用性。本仓库快照中,报告原路径/scripts/train_vae.py/scripts/inference_vae.py对应现在的 scripts/vae/train.py、scripts/vae/inference.py;报告原路径/configs/opensora-v1-2/train/stage1.pystage2.py对应现在的 configs/diffusion/train/stage1.py 与 configs/diffusion/train/stage2.py。

视频压缩网络:时域压缩 4 倍的堆叠式 3D VAE

动机:从抽帧降 fps 到真正的时域压缩

Open-Sora 1.0/1.1 使用 stable-ai 的 83M 2D VAE,仅在空间维度压缩 8×8 倍;为了减少时间维度,此前只能每三帧抽取一帧,这直接牺牲了生成帧率(fps),导致视频流畅度偏低。Open-Sora 1.2 引入类似 Sora 的视频压缩网络,在时域上将视频压缩至四分之一,从而可以在原始帧率下直接生成模型,不再额外抽帧。

网络结构:2D VAE + 3D VAE 的堆叠设计

考虑到训练 3D VAE 计算成本高昂,团队选择复用 2D VAE 中学到的知识。关键观察是:经过 2D VAE 压缩后,时间维度上相邻的特征仍然高度相关。于是设计了一个简单而有效的堆叠结构——先用 2D VAE 在空间维度压缩 8×8 倍,再用 3D VAE 在时间维度压缩 4 倍。具体参数与训练要点:

  • 2D VAE 使用 SDXL 的 VAE(stabilityai/sdxl-vae)初始化,共 83M 参数,优于此前使用的 VAE;
  • 3D VAE 采用 Magvit-v2 中的 VAE 结构,共 300M 参数;
  • 堆叠后视频压缩网络总参数为 384M;
  • 3D VAE 中使用 causal convolutions,使图像重建更加准确;
  • 训练数据来自 Pixels 和 Pixabay 的视频,视频大小以 17 帧、256×256 分辨率为主,batch size 为 1,3D VAE 共训练 1.2M 步。

三阶段训练:特征重建 → 去 identity loss → 端到端重建

3D VAE 的训练分为三个阶段:

  1. 前 380k 步(8 GPU):冻结 2D VAE,训练目标包含重建 2D VAE 的压缩特征,并额外添加 loss 使 3D VAE 的特征与 2D VAE 特征相似(identity loss)。后者可让整个 VAE 在图像上快速取得良好性能,并加速下一阶段收敛;
  2. 接下来的 260k 步:消除 identity loss,仅学习 3D VAE;
  3. 最后 540k 步(24 GPU):发现仅重建 2D VAE 的特征无法带来进一步改进,因此移除该 loss,训练整个 VAE 端到端重建原始视频。

训练前半段采用 20% 图像 + 80% 视频的混合比例;按 Magvit-v2 惯例使用 17 帧训练视频,并对图像的前 16 帧做零填充。但实验发现,这种固定长度设置会导致长度不等于 17 帧的视频变模糊,因此在第 3 阶段改用不超过 34 帧的任意帧长度进行混合视频长度训练——即若希望训练 n 帧视频,就将原视频中34-n帧用 0 填充,从而让 VAE 对不同视频长度更具鲁棒性。

当使用该 VAE 驱动扩散模型时,堆叠 VAE 的输入已经过压缩,因此所需显存更少;推理时还会将输入视频拆分为多个 17 帧片段以提高推理效率。报告给出的定量对比显示,Open-Sora 1.2 的 VAE 与 Open-Sora-Plan 1.1 的另一个开源 3D VAE 性能相当:

模型结构相似性↑峰值信噪比↑
Open-Sora-Plan 1.10.88229.890
Open-Sora 1.20.88030.590

整流流与模型适应:从 PixArt-Σ 到视频扩散模型的八步迁移

Stable Diffusion 3 为获得更好性能,采用整流流(rectified flow)替代 DDPM,但其训练代码并未开源。Open-Sora 1.2 提供了遵循 SD3 论文的整流流训练代码,包括三部分能力:

  • 基本整流流训练
  • 用于训练加速的 Logit-norm 采样
  • 分辨率和视频长度感知的时间步长采样

其中,分辨率感知采样认为分辨率更大的图像应使用更多噪声;团队将其扩展到视频生成,即对长度更长的视频使用更多噪声。这一思路在当前仓库的推理采样代码中同样可见:opensora/utils/sampling.py 的get_schedule中,时间步通过time_shift做流偏移(flow shift),并且shift_alpha *= math.sqrt(num_frames)会随帧数增加自动放大偏移量,使采样计划更偏向高时间步,正是「长度感知」在推理侧的体现。

八步模型适应过程

Open-Sora 1.2 从 PixArt-Σ 2K 的 checkpoint 出发。该模型使用 DDPM 与 SDXL VAE 训练,分辨率也更高;团队发现只需在小数据集上微调即可轻松适应视频生成设置。所有适应训练均在 8 张 GPU 上完成,共八步:

  1. 多分辨率图像生成能力:训练 20k 步,生成 144p~2K 的不同分辨率;
  2. QK-norm:为模型加入 QK-norm,训练 18k 步;
  3. 整流流:从离散时间 DDPM 切换为连续时间整流流,训练 10k 步;
  4. Logit-norm + 分辨率感知时间步采样:训练 33k 步;
  5. 较小的 AdamW epsilon:配合 QK-norm,将 AdamW 的 epsilon 降为 1e-15(与 SD3 一致),训练 8k 步;
  6. 新 VAE 与 fps 调节:用自己的 VAE 替换原 VAE,并将 fps 调节加入时间步调节,训练 25k 步(注意:对每个通道做规范化对整流流训练非常重要);
  7. 时间注意力模块:添加时间注意力模块(投影层不初始化),在图像上训练 3k 步;
  8. 仅针对视频的时间块训练:只在视频上训练带掩码策略的时间注意力块,步长 38k。

这些调整既保留了原模型高质量图像生成能力,也为后续视频生成带来四方面助益:

  • 整流流加速采样:视频采样步数从 100 步减少到 30 步,显著降低推理等待时间;
  • QK-norm 稳定训练:训练更稳定,可使用更激进的优化器;
  • 新 VAE 提效:时间维度压缩 4 倍,训练更高效;
  • 多分辨率能力:模型可生成不同分辨率的视频。

更多数据与更好的多阶段训练

受限于计算预算,团队精心安排了「数据质量由低到高」的三阶段训练:整体训练使用 12×8 GPU,总训练时间约 2 周、约 70k 步。

第一阶段:Webvid-10M(40k 小时)

先在最易获取的 Webvid-10M 上训练 30k 步(2 个 epoch)。该数据集视频分辨率均低于 360p 且含大量水印,故适合作为预热数据;训练主要在 240p、360p 上,视频长度 2s~16s,直接使用数据集原始字幕。对应配置见 configs/diffusion/train/stage1.py。

从本仓库快照的 stage1 配置可以看到其具体形态:它继承 configs/diffusion/train/image.py,使用bucket_config定义了 256px(帧数 1~129 的完整 bucket 网格)、768px(仅 1 帧,采样概率 0.5)与 1024px(仅 1 帧,采样概率 0.5)的数据分布,学习率 5e-5,每 2000 步存一次 checkpoint(保留最近 20 个)。

第二阶段:Panda-70M 官方 30M 子集(41k 小时)

随后在 Panda-70M 上训练。该数据集规模很大但质量参差:使用官方 30M 子集(片段更多样),并过滤美学评分低于 4.5 的视频,得到 20M 子集、41k 小时,字幕直接用于训练。训练主要在 360p、480p 上进行,共 23k 步(0.5 个 epoch)。配置见 configs/diffusion/train/stage2.py。

值得注意,stage2 配置开启了混合并行插件plugin = "hybrid"plugin_config中设置sp_size=4sequence_parallelism_mode="ring_attn"enable_sequence_parallelism=Truezero_stage=2,说明这一阶段已使用序列并行与 ZeRO-2 来支撑更长的视频序列训练;其 256px 和 768px 的 bucket 网格也更细(帧数每 4 帧一档)。

第三阶段:自建 2M 片段高质量数据集(5000 小时)

第三阶段从多个来源收集了 200 万个视频片段、总时长 5000 小时,包括:

  • Pexels、Pixabay、Mixkit 等免费授权视频;
  • MiraData:含长视频的高质量数据集,主要来自游戏与城市/风景探索;
  • Vript:密集注释的数据集;
  • 以及其他一些数据集。

MiraData 和 Vript 自带 GPT 生成的字幕,其余字幕由 PLLaVA 补全。与仅能做单帧/图像字幕的 LLaVA 不同,PLLaVA 是专门为视频字幕设计和训练的模型。实践中使用预训练的 PLLaVA 13B,从每个视频选 4 帧生成字幕,空间池化形状为 2×2。此阶段主要在 720p、1080p 上训练,训练中掩码率为 25%,共 15k 步(约 2 个 epoch)。对应配置即报告中的 stage3.py(本仓库快照中以高压缩率/长视频训练见长的参考配置是 configs/diffusion/train/high_compression.py,其中 bucket 覆盖 768px 下 1~128 帧、采样概率逐档下降,并支持 t2v/i2v 双条件输入)。

简单有效的模型调节:把分数写进字幕

第三阶段数据量相对少,团队不愿过滤掉低分片段(会进一步缩小数据集),而是换了一种思路:为每个视频片段计算美学分数与运动分数,并将分数附加到字幕末尾作为条件。这种做法让模型学会理解分数、遵循分数生成质量更好的视频。

例如,一个美学评分为 5.5、运动评分为 10、检测到相机向左平移的视频,其字幕为:

[Original Caption] aesthetic score: 5.5, motion score: 10, camera motion: pan left.

推理时同样可以使用分数调节模型。相机运动仅标记了 13k 个高置信度片段,相机运动检测模块已在项目工具中发布。这一「条件进文本」的设计在当前仓库的数据管线中留有直接证据:opensora/datasets/datasets.py 在处理文本时,若vmaf=True且样本中存在score_vmafmotion,会向ret["text"]追加形如"{int(sample['score_vmafmotion'] + 0.5)} motion score"的后缀,与报告描述的「运动分数写入字幕」机制完全一致(对应配置开关为 configs/diffusion/train/image.py 中的vmaf=True)。

评估:整流流评估损失与 VBench 双指标

此前 DDPM 训练损失与生成视频质量相关性不佳,只能依赖人工评估监控训练。而整流流(如 SD3 所述)的训练损失与生成质量有很好的相关性,因此团队跟踪了 100 张图像和 1k 个视频的整流流评估损失:

  • 从 Pixabay 抽样 1k 个视频作为验证集;
  • 计算不同分辨率(144p、240p、360p、480p、720p)的图像与不同长度(2s、4s、8s、16s)视频的评估损失;
  • 每个设置等距采样 10 个时间步长,然后对所有损失取平均。

此外,训练过程中同步跟踪 VBench 得分——VBench 是面向短视频生成的自动评估基准,评估时使用 240p 2s 视频计算得分。两个指标共同验证了模型在训练过程中的持续改进。最终 VBench 结果对比 1.0 版本提升明显:

模型总得分质量得分语义分数
Open-Sora V1.075.91%78.81%64.28%
Open-Sora V1.279.23%80.71%73.30%

所有评估代码发布在eval文件夹中(详见仓库的评估指南)。

序列并行:基于 Ulysses 的长序列训练与推理加速

为了支持长序列训练与推理,Open-Sora 1.2 实现了基于 Ulysses 的序列并行。核心设计是:只对 STDiT 中的空间模块(spatial block)应用all-to-all通信,因为在序列维度上,只有空间信息的计算是相互依赖的。相关通信原语与并行状态可在 opensora/acceleration/communications.py、opensora/acceleration/parallel_states.py 以及 opensora/models/mmdit/distributed.py 中找到实现。

由于本阶段训练数据分辨率较小,训练尚未启用序列并行(计划下一版本使用);推理阶段则可在 GPU 显存不足时启用。仓库中的推理插件配置 configs/diffusion/inference/plugins/sp.py 给出了完整启用方式:plugin = "hybrid"plugin_configsp_size=8sequence_parallelism_mode="ring_attn"enable_sequence_parallelism=Truestatic_graph=Truezero_stage=2;而 VAE 部分(plugin_ae)则使用tp_size=8的张量并行。

报告给出的实测加速数据显示序列并行不仅能解决显存问题,还能带来明显加速:

分辨率时长GPU数量是否启用序列并行用时(秒)加速效果/GPU
720p16秒1547.97-
720p16秒2244.3812%

从报告到代码:如何在本仓库中定位这些能力

如果需要对照实现,可按以下路径快速定位本仓库中与报告各章节对应的代码与配置:

  • 视频压缩网络(3D VAE):scripts/vae/train.py(训练入口)、scripts/vae/inference.py(推理入口)、scripts/vae/stats.py;模型结构在 opensora/models/dc_ae/ 与 opensora/models/vae/;训练配置见 configs/vae/train/video_dc_ae.py,推理配置见 configs/vae/inference/video_dc_ae.py;
  • 整流流训练与采样:扩散训练入口 scripts/diffusion/train.py、推理入口 scripts/diffusion/inference.py;整流流时间步调度与 flow shift 见 opensora/utils/sampling.py;
  • 多阶段训练配置:configs/diffusion/train/stage1.py、configs/diffusion/train/stage2.py、configs/diffusion/train/high_compression.py,公共模型与优化器设置见 configs/diffusion/train/image.py;
  • 分数条件调节:opensora/datasets/datasets.py;
  • 序列并行:configs/diffusion/inference/plugins/sp.py 与 opensora/acceleration/。

Open-Sora 1.2 的整套方案——时域压缩 VAE、整流流、多阶段数据调度、分数条件与序列并行——互相咬合,共同构成了一个「低算力预算下快速训练高质量视频扩散模型」的完整范本。后续版本(1.3、1.4)正是在这一基础上继续演进,其完整脉络可在 docs/zh_CN/ 的系列报告中继续追踪。

【免费下载链接】Open-SoraOpen-Sora: Democratizing Efficient Video Production for All项目地址: https://gitcode.com/GitHub_Trending/op/Open-Sora

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 16:50:25

公众号十年运营:从个人创作到团队化内容矩阵

1. 十年公众号运营者的心路历程 2013年夏天,我在电脑前敲下第一篇公众号文章时,完全没想到这会成为我坚持十年的长期事业。那时候微信公众号平台刚开放不久,移动互联网的浪潮才刚刚兴起。十年间,我发布了超过1200篇原创内容&#…

作者头像 李华
网站建设 2026/9/10 16:49:31

Excel文件解析:DOM与SAX原理及性能对比

1. Excel文件解析的两种核心方式 在数据处理领域,Excel文件解析是每个开发者都会遇到的基础需求。当我们需要处理大型Excel文件时,选择正确的解析方式会直接影响程序性能和内存消耗。SAX(Simple API for XML)和DOM(Doc…

作者头像 李华
网站建设 2026/9/10 16:48:53

电商直播巡检系统:实时数据处理与多线程编程实战

1. 直播巡检系统概述2026年拼多多春招笔试中的直播巡检题目,主要考察应聘者对实时数据处理、多线程编程和算法优化的综合能力。这类系统在电商直播场景中至关重要,需要实时监控成千上万的直播流,确保内容合规、画质稳定、互动流畅。直播巡检系…

作者头像 李华