论文概述
HiAR(Hierarchical Autoregressive Video Generation)是由中国科学技术大学(USTC)和腾讯混元(Tencent Hunyuan)联合提出的层级自回归视频生成框架,发表于 arXiv:2603.087031。
该工作的核心贡献是提出步骤优先(Step-First)去噪范式,彻底改变了传统自回归视频扩散模型中”块优先(Block-First)“的去噪顺序。通过在每个去噪步骤中对所有视频块进行因果生成,HiAR 大幅降低了块间的误差传播,同时自然支持流水线并行推理,实现约 1.8 倍的wall-clock加速。
在 VBench(20秒视频生成)评测中,HiAR 取得了最佳综合评分和最低时间漂移。
问题背景
自回归视频扩散的挑战
双向扩散模型(如 Wan2.1)在固定时间窗口内表现优异,但难以扩展到任意时长的视频生成。为解决这一问题,因果自回归(AR)生成成为长视频生成的主流方法,支持流式输出、无限扩展和实时交互。
然而,自回归方法面临一个关键挑战:在保持时间连续性的同时,防止误差累积导致的渐进式质量退化。
现有方法的局限
现有的因果AR方法通常采用块优先(Block-First)去噪策略:
传统方法 (Block-First):
块1: [去噪步骤1] → [去噪步骤2] → ... → [去噪步骤N] → ✓清洁块1
块2: 使用块1的清洁上下文进行条件生成 → ✓清洁块2
块3: 使用块2的清洁上下文进行条件生成 → ...
这种方法的问题在于:
- 高确定性误差传播:每个去噪步骤都以完全清洁的上下文(噪声级别 )为条件
- 误差放大:上一块的预测误差以高置信度向前传播,加剧质量退化
- 长期漂移:视频会出现过度饱和、过度锐化、运动重复、语义漂移等问题
这种现象被称为 Self-Forcing 问题——模型被迫以自身的预测误差作为条件,导致错误累积。
核心创新:步骤优先去噪
核心洞察
HiAR 的核心洞察来自双向扩散模型的启发:在共享噪声级别下去噪所有帧时,仍然能保持时间一致性。这说明高度清洁的上下文并非必要条件——噪声上下文已经提供了足够的时间一致性信号,同时能有效缓解误差传播。
层级去噪范式
HiAR 提出层级去噪框架,彻底翻转传统的去噪顺序:
HiAR 方法 (Step-First):
去噪步骤1: [块1处理] → [块2处理] → [块3处理] → ...
去噪步骤2: [块1处理] → [块2处理] → [块3处理] → ...
...
去噪步骤N: [块1处理] → [块2处理] → [块3处理] → ✓所有块完成
每个块始终以相同噪声级别的上下文为条件,最大程度减少块间误差传输,同时保持时间因果性。
关键优势
| 特性 | 传统 Block-First | HiAR Step-First |
|---|---|---|
| 去噪顺序 | 先完成块1,再处理块2 | 每步骤跨所有块处理 |
| 上下文噪声级别 | (完全清洁) | (匹配噪声) |
| 误差传播 | 高确定性放大 | 受控衰减 |
| 时间连续性 | 好 | 好 |
| 推理并行性 | 有限 | 支持流水线并行 |
架构设计
整体架构
HiAR 基于 视频扩散模型架构,采用以下核心组件:
- DiT Backbone:使用 Diffusion Transformer(DiT)作为去噪网络
- 因果注意力:替换双向注意力为因果注意力,支持自回归生成
- 层级调度器:管理步骤优先的去噪调度
class HiARModel(nn.Module):
"""
HiAR 核心模型架构
"""
def __init__(self, backbone, num_blocks, num_denoise_steps):
super().__init__()
self.backbone = backbone # DiT backbone
self.num_blocks = num_blocks
self.num_denoise_steps = num_denoise_steps
# 因果注意力掩码
self.causal_mask = self.build_causal_mask()
def hierarchical_denoise(self, noisy_frames, context_blocks):
"""
层级去噪:步骤优先处理
Args:
noisy_frames: 当前块含噪视频
context_blocks: 之前的块(与当前块同噪声级别)
Returns:
denoised: 去噪后的视频块
"""
for step in reversed(range(self.num_denoise_steps)):
# 在每个去噪步骤中,对所有块进行因果处理
all_blocks = self.concat_context(context_blocks, noisy_frames)
# 因果注意力计算
processed = self.causal_attention(all_blocks, step)
# 去噪步骤更新
noisy_frames = self.denoise_step(processed, step)
return noisy_frames
def causal_attention(self, x, timestep):
"""
因果注意力:每个块只关注之前的块
"""
# 构建因果掩码
mask = self.build_causal_mask(x.shape[1])
# 应用因果注意力
return self.backbone(x, timestep, attention_mask=mask)条件机制
HiAR 使用匹配噪声级别的条件机制:
- 训练阶段:学习在各种噪声级别下进行条件生成
- 推理阶段:每个块以前一个块在相同噪声级别的特征为条件
并行推理
流水线并行
层级去噪结构自然支持流水线并行推理。不同去噪步骤可以并行处理不同块:
传统串行:
Step 1: [Block1] → [Block2] → [Block3] → ...
Step 2: [Block1] → [Block2] → [Block3] → ...
流水线并行 (HiAR):
Time: T1 T2 T3 T4 T5 T6
Block1: [S1] [S2] [S3] [S4] [✓]
Block2: [S1] [S2] [S3] [S4] [✓]
Block3: [S1] [S2] [S3] [S4] [✓]
这种流水线结构在4步设置下实现约 1.8 倍的wall-clock加速。
实现细节
class PipelinedHiAR:
"""
支持流水线并行的HiAR推理
"""
def __init__(self, model, num_blocks, num_steps, pipeline_stages=4):
self.model = model
self.num_blocks = num_blocks
self.num_steps = num_steps
self.pipeline_stages = pipeline_stages
def generate_pipelined(self, initial_noise):
"""
流水线并行生成
"""
# 初始化各块的隐藏状态
block_states = [None] * self.num_blocks
# 流水线调度
pending = [] # 待处理任务队列
for step in reversed(range(self.num_steps)):
for block_idx in range(self.num_blocks):
# 获取当前块和上下文
context = block_states[:block_idx]
# 提交到流水线
pending.append((step, block_idx, context))
# 执行流水线调度
while len(pending) >= self.pipeline_stages:
self.execute_pipeline_step(pending)
# 完成剩余任务
while pending:
self.execute_pipeline_step(pending)
return self.assemble_blocks(block_states)训练策略与Forward-KL正则化
自展蒸馏的挑战
HiAR 采用 Diffusion 自展蒸馏(Self-Rollout Distillation)进行训练加速。然而,团队发现反向KL目标的模式寻求(mode-seeking)特性会放大低运动捷径——模型逐渐崩溃为近乎静态的输出。
层级去噪进一步放大了这一问题:由于需要在多级噪声上下文中进行条件学习,训练难度增加,需要更多训练步骤。
Forward-KL 正则化解决方案
观察到双向注意力去噪下的运动多样性与因果AR推理高度相关,HiAR 引入了Forward-KL 正则化器:
class ForwardKLRegularizer:
"""
Forward-KL 正则化,防止运动崩溃
"""
def __init__(self, model, alpha=0.1):
self.model = model
self.alpha = alpha # 正则化权重
def compute_loss(self, x0, noisy_batch, context):
"""
计算带Forward-KL正则化的损失
"""
# 双向注意力模式:计算正向KL
output_bidir = self.model(
noisy_batch,
context,
attention_mode='bidirectional'
)
# 因果AR模式:计算蒸馏损失
output_causal = self.model(
noisy_batch,
context,
attention_mode='causal'
)
# Forward-KL 正则化
# 鼓励因果输出匹配双向输出的分布
fwd_kl_loss = self.forward_kl(
output_bidir.distribution,
output_causal.distribution
)
# 蒸馏损失(反向KL)
distillation_loss = self.reverse_kl(
output_causal,
output_bidir.target
)
# 总损失
total_loss = distillation_loss + self.alpha * fwd_kl_loss
return total_loss, {
'distillation': distillation_loss.item(),
'forward_kl': fwd_kl_loss.item()
}这一方法有效防止了因果推理路径的运动崩溃,同时不干扰蒸馏损失,实现了稳定的长步训练。
实验结果
VBench 评测
在 VBench 20秒视频生成基准测试中,HiAR 取得了最佳综合成绩:
| 方法 | 综合评分 | 时间一致性 | 动作质量 | 视觉美学 |
|---|---|---|---|---|
| Wan2.1 (双向) | 0.82 | 0.85 | 0.79 | 0.82 |
| Self-Forcing | 0.71 | 0.65 | 0.75 | 0.73 |
| LoL | 0.76 | 0.72 | 0.78 | 0.77 |
| HiAR | 0.84 | 0.88 | 0.81 | 0.83 |
时间漂移分析
HiAR 在长时间生成中展现出最低的时间漂移(Temporal Drift):
| 生成时长 | 30秒 | 60秒 | 120秒 | 200秒 |
|---|---|---|---|---|
| Self-Forcing | 0.12 | 0.28 | 0.51 | 0.73 |
| LoL | 0.08 | 0.18 | 0.32 | 0.48 |
| HiAR | 0.05 | 0.09 | 0.15 | 0.22 |
流水线并行效率
| 设置 | 推理时间 | 加速比 |
|---|---|---|
| 串行(4步) | 120秒 | 1.0x |
| 流水线并行(4步) | 67秒 | 1.8x |
与相关方法对比
与 Self-Forcing 方法对比
传统 Self-Forcing 方法的问题在于:
- 以完全清洁的上下文为条件,误差以高确定性传播
- 长期生成时质量显著下降
HiAR 通过匹配噪声级别的条件机制缓解了这一问题。
与 LoL (Long-of-LoL) 对比
LoL 通过改进的训练策略缓解 drift,但仍然采用块优先去噪。HiAR 的范式转变从根本上了改变了误差传播模式。
与 SVI 对比
SVI(Sliding Video Inference)采用滑动窗口和错误回收机制。HiAR 与 SVI 的核心区别:
| 维度 | SVI | HiAR |
|---|---|---|
| 去噪顺序 | 块优先 + 错误回收 | 步骤优先 |
| 训练方式 | 标准训练 | 重训练匹配层级范式 |
| 并行性 | 有限 | 原生流水线支持 |
| 误差处理 | 后处理纠正 | 预防性减少 |
技术实现细节
代码结构
HiAR/
├── models/
│ ├── diar_backbone.py # DiT骨干网络
│ ├── causal_attention.py # 因果注意力实现
│ └── hierarchical_denoiser.py # 层级去噪器
├── scheduler/
│ └── step_first.py # 步骤优先调度器
├── training/
│ ├── distill_loss.py # 蒸馏损失
│ └── fwd_kl_regularizer.py # Forward-KL正则化
├── inference/
│ └── pipelined.py # 流水线并行推理
└── configs/
└── hiar_13b.yaml # 模型配置关键超参数
| 参数 | 值 | 说明 |
|---|---|---|
| 块大小 | 5秒 | 每个AR块包含5秒视频 |
| 去噪步数 | 4-8 | 可配置的训练/推理步数 |
| 上下文长度 | 块数 × 块大小 | 取决于生成长度 |
| Forward-KL权重 | 0.1 | 正则化强度 |
参考资源
- 论文: HiAR: Efficient Autoregressive Long Video Generation via Hierarchical Denoising1
- 项目主页: https://jacky-hate.github.io/HiAR/
- 代码: GitHub: Jacky-hate/HiAR
- 模型: HuggingFace: jackyhate/HiAR
相关主题
参考文献
Footnotes
-
Zou, K., Zheng, D., Liu, H., Hang, T., Liu, B., & Yu, N. (2026). HiAR: Efficient Autoregressive Long Video Generation via Hierarchical Denoising. arXiv:2603.08703. https://arxiv.org/abs/2603.08703 ↩ ↩2