概述

LaViDa 是首个基于离散扩散模型的视觉-语言模型(Vision-Language Model, VLM)家族。与自回归(Autoregressive, AR)VLMs(如 LLaVA)相比,LaViDa 具有更快的推理速度和更灵活的可控生成能力。

离散扩散模型通过逐步去噪的方式生成内容,能够在推理过程中实现并行解码,从而显著降低延迟。LaViDa 将这一优势引入多模态领域,为视觉-语言任务提供了新的解决思路。

核心技术创新

互补 Masking 技术

传统的多模态模型在处理视觉和文本时往往采用独立的 mask 策略,导致模态间信息交互不充分。LaViDa 提出了**互补 Masking(Complementary Masking)**策略:

  • 视觉 token 与文本 token 的互补 mask 策略:在每个扩散时间步,mask 掉部分视觉 token 和部分文本 token,迫使模型学习跨模态的联合表示
  • 有效处理多模态联合训练:通过动态调整 mask 比例,确保视觉和语言信息得到均衡的学习

设当前时间步为 ,mask 概率为 ,则互补 mask 操作可表示为:

其中 分别表示视觉和文本的 mask 向量。

前缀 KV 缓存

推理效率是扩散模型应用于 VLM 的关键挑战之一。LaViDa 引入**前缀 KV 缓存(Prefix KV Cache)**技术:

  • 高效的推理加速技术:将视觉编码器的输出作为固定前缀,仅对文本部分进行扩散解码
  • 保持生成质量的同时提升速度:通过复用已计算的 Key-Value 状态,避免重复计算
# 前缀 KV 缓存伪代码
class PrefixKVCache:
    def __init__(self, vision_encoder, diffusion_decoder):
        self.vision_encoder = vision_encoder
        self.decoder = diffusion_decoder
        self.kv_cache = None
    
    def forward(self, image, text_tokens, num_steps=20):
        # 编码视觉信息(仅一次)
        vision_features = self.vision_encoder(image)
        
        # 初始化缓存
        if self.kv_cache is None:
            self.kv_cache = self.init_cache(vision_features)
        
        # 扩散解码
        for t in reversed(range(num_steps)):
            x_t = self.diffusion_step(vision_features, text_tokens, t)
        
        return x_t

时间步位移

扩散模型的采样质量高度依赖时间步调度。LaViDa 提出了**时间步位移(Temporal Step Displacement)**技术:

  • 高质量采样的关键技术:通过非均匀时间步采样,充分利用模型在不同噪声 level 下的能力
  • 自适应时间步调度:根据生成任务的复杂度动态调整采样步数

时间步位移策略可表示为:

其中 是噪声调度函数, 是总采样步数。

架构设计

LaViDa 的整体架构由以下组件构成:

┌──────────────┐     ┌─────────────────────┐
│ Vision       │────▶│ Diffusion Language  │
│ Encoder      │     │ Model               │
└──────────────┘     └─────────────────────┘
       │                      ▲
       │                      │
       ▼                      │
┌──────────────┐     ┌─────────────────────┐
│ Image Token  │────▶│ Multimodal Fusion   │
└──────────────┘     └─────────────────────┘

主要设计特点

  1. 视觉编码器 + 扩散语言模型:采用预训练的视觉编码器(如 SigLIP)提取图像特征,通过线性投影映射到扩散模型的 embedding 空间

  2. 联合微调多模态指令跟随:使用指令微调数据联合优化视觉编码器和扩散语言模型,使模型具备强大的多模态理解能力

  3. 支持灵活的生成约束:通过条件 mask 和 Classifier-Free Guidance,实现可控的多模态生成

扩散语言模型的训练目标为:

其中 是添加的噪声, 是模型预测, 是多模态条件(包括视觉特征和文本提示)。

实验结果

LaViDa 在多个基准测试上展现了优异的性能:

基准测试对比

基准测试LaViDaOpen-LLaVa-Next-8B备注
MMMU相当-复杂多模态推理
COCO 图像描述超越 +4.1 CIDEr基准1.92× 加速比
诗句补全+59%-双向推理任务

关键发现

  • 推理速度:LaViDa 在 COCO 图像描述任务上实现 1.92 倍加速,同时 CIDEr 分数提升 4.1 分
  • 双向任务:在约束诗句补全任务中,LaViDa 的双向推理能力使其性能提升 59%,远超自回归模型
  • 生成质量:在 MMMU 多模态理解基准上达到与 AR VLMs 相当的水平

与 AR VLMs 的对比

特性LaViDaAR VLMs
推理速度快(并行)慢(顺序)
可控生成灵活相对受限
双向推理支持不支持
Classifier-Free Guidance原生支持需额外适配
条件生成多条件联合单一条件

优势分析

  1. 并行解码:扩散模型的并行采样机制使得 LaViDa 在生成长序列时具有显著速度优势
  2. 可控性强:通过调整噪声和条件,可以灵活控制生成内容的多个属性
  3. 双向注意力:文本 token 之间可以相互 attend,支持双向推理任务

局限与展望

  • 当前版本主要针对离散扩散,未来可探索连续扩散变体
  • 长上下文场景下的效率仍有提升空间

参考