LLaVA-OneVision-2
首个全链路开源的多模态统一训练框架,一套架构同时搞定图像、视频、空间推理三大模态
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
首个全链路开源的多模态统一训练框架,一套架构同时搞定图像、视频、空间推理三大模态
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个这样的场景:你手里有一段长视频,需要 AI 回答「视频第 23 秒时左下角那个人穿的衣服是什么颜色」;同时你还有一张 X 光片,需要 AI 描述病理特征;再同时你还有一份 PDF 合同,需要 AI 提取关键条款。传统的方案是调用三个不同的模型——视频模型、图像模型、OCR 模型。它们各自为政,数据格式不同、输入接口不同、处理逻辑不同,集成起来简直是噩梦。
LLaVA-OneVision-2 的出现,就是为了终结这种割裂。它由上海 AI Lab 和多所高校联合研发,是 LLaVA 家族的第三代成员,核心目标是用一个模型、一个架构、一个训练流程,统一处理图像、长视频、空间推理三大模态。最关键的是,他们把数据、编码器权重、训练代码、配置、完整日志全部开源了出来——不是开源一个「demo」,是开源一个完整的工业级训练流水线。

图1:LLaVA-OneVision-2 项目 Logo(深色主题版本)
2023-2024 年间,开源多模态大模型(Multimodal Large Language Model,MLLM)呈爆发式增长。LLaVA 系列、InstructBLIP、MiniGPT-4 等模型相继出现,它们在单图理解上取得了不错的效果。但仔细审视这些「开源」项目会发现一个普遍现象:开源的是推理代码,不是训练方法论。
具体来说,大多数项目只发布了最终模型权重和推理脚本,训练数据不公开、训练配置不可复现、训练日志缺失。这意味着其他研究者无法:理解模型为什么能达到这样的效果;在自己的数据上继续微调;诊断训练过程中的问题。
LLaVA-OneVision-2 的作者们认为,这种「半开源」状态严重阻碍了多模态 AI 的民主化进程。他们的回应是:不仅开源模型权重,连制造这个模型的全部原材料和工艺图纸都一并公开。
在介绍具体架构之前,有必要理解 LLaVA-OneVision-2 在视频理解上的核心创新——Codec 对齐的视觉编码器(OneVision-Encoder)。
传统的视频多模态模型通常采用「均匀帧采样」策略:从一段视频中每隔固定帧数取一帧,然后将每一帧切分成固定大小的 patch,送入 Vision Transformer(ViT)编码器。这种方式的问题在于:相同的 token 预算下,能覆盖的时间范围有限。
举例来说,假设 token 预算为 54 个视觉 token,均匀采样 6 帧,每帧 9 个 patch,那么时间跨度就是 6 帧对应的时长。但现实世界中的视频很多是 10 秒、30 秒甚至更长,6 帧根本无法覆盖足够的上下文。
OneVision-Encoder 的解决方案借鉴自视频压缩标准 HEVC(High Efficiency Video Coding):对 P 帧(预测帧)只保留运动信息和残差丰富的 patch,对 I 帧(全帧内编码帧)保持密集采样。这样在相同的 54 token 预算下,可以覆盖 18 帧,时间跨度扩大 3 倍,而不需要增加 LLM 侧的上下文长度。
LLaVA-OneVision-2-8B-Instruct 最大的技术亮点是架构层面的统一性。绝大多数开源多模态模型实际上是「多路复用」的:图像走一条 pipeline,视频走另一条 pipeline,多图输入再走第三条 pipeline。不同模态之间有 task-specific adapter、router 或特殊 token 来区分。
LLaVA-OneVision-2 彻底取消了这种区分。图像、均匀采样的视频帧、Codec 对齐的 token,全部流入同一个 OneVision-Encoder,共享同一套 (t, h, w) 位置编码 scheme。没有 per-modality 的 tokenizer,没有路由逻辑,LLM 端看到的是统一的视觉 token 序列。
这样做的好处不仅是架构简洁:更重要的是保证了模态之间的知识迁移。视频理解中学到的时序关系可以反哺图像理解,图像理解中的空间概念可以迁移到视频中。
模型的能力不是一蹴而就的。LLaVA-OneVision-2 采用了精心设计的四阶段训练课程:
第一阶段(Bootstrap): 冻住 LLM,只训练视觉-语言连接器(Projector),让 LLM 学会「看懂」视觉 token 的含义。使用大规模图像-文本配对数据。
第二阶段(Mid-Training): 解冻 LLM 的浅层,继续训练 Projector + LLM 浅层,使用更复杂的视觉-语言对齐数据,引入更多概念和关系。
第三阶段(Instruction Tuning): 使用高质量的指令微调数据(全指令微调),训练模型遵循多样化的人类指令。
第四阶段(RL/强化学习,可选): 基于人类反馈或 AI 反馈的强化学习进一步优化模型行为,这是 1.5 版本引入的实验性阶段。
四阶段的递进设计确保模型在每个维度都打好基础,避免「大跃进」式训练导致的能力崩塌。
和模型一起发布的还有四个数据集:
| 数据集 | 说明 |
|---|---|
| LLaVA-OneVision-2-VideoCaption | 超密集视频描述数据 |
| LLaVA-OneVision-2-Spatial | 3D 空间感知推理数据 |
| LLaVA-OneVision-1.5-Mid-Training-85M | 85M 概念平衡的中间训练语料 |
| LLaVA-OneVision-1.5-Instruct | 完整指令微调混合数据 |

图2:训练数据集分布示意与 WebDataset 验证流程
在 transformers_impl/onevision_encoder/ 目录下可以看到核心实现:
configuration_onevision_encoder.py # 模型配置
modeling_onevision_encoder.py # 核心模型定义
OneVision-Encoder 本质上是一个 HEVC 风格的 Vision Transformer。与标准 ViT 的关键区别在于 patch 选择策略:不再均匀采样所有 patch,而是根据 codec stream 的运动/残差信息智能筛选。运动剧烈的区域保留更多 patch,静态背景则大幅压缩。
模型实现位于 transformers_impl/llavaonevision2/:
configuration_llava_onevision2.py # 8B 稠密模型配置
configuration_llava_onevision2_moe.py # MoE 稀疏专家模型配置
modeling_llava_onevision2.py # 8B 稠密模型实现
modeling_llava_onevision2_moe.py # MoE 模型实现
processing_llava_onevision2.py # 处理器(含 chat template)
video_processing_llava_onevision2.py # 视频专用处理器
推理示例(transformers_impl/inference.py)展示了完整的使用流程,使用 HuggingFace 标准 generate 范式,对 transformers 生态的工具链(vLLM、TGI)有天然兼容性。
| 组件 | 技术选型 | 说明 |
|---|---|---|
| 视觉编码器 | OneVision-Encoder(自定义 ViT) | Codec 对齐的视觉 Tokenizer |
| 语言模型 | Qwen2.5-VL / Qwen3 | 8B 规模,Apache-2.0 |
| 训练框架 | Megatron-Energon + Hydra | 分布式训练框架 |
| 评测工具 | lmms-eval(自定义分支) | 复现论文数据 |
| 依赖库 | transformers 5.7.0, timm, qwen_vl_utils | 核心依赖 |

图3:LLaVA-OneVision-2 在多个 benchmark 上的性能对比
对于只想使用模型进行推理的用户,流程相对直接:
pip install transformers qwen_vl_utils
python transformers_impl/inference.py \
--model-path lmms-lab-encoder/LLaVA-OneVision-2-8B-Instruct \
--image-path your_image.jpg
Dockerfile 基于 nvcr.io/nvidia/pytorch:25.04-py3,包含了所有 CUDA 依赖。必须有 NVIDIA GPU 才能运行推理,transformers + CUDA 是硬依赖。
训练是 LLaVA-OneVision-2 的核心价值,但也是门槛最高的部分。官方建议的硬件配置:
训练使用 Hydra 配置管理,所有超参数集中在 configs/ 目录下的 YAML 文件中。四阶段训练的启动脚本分布在 examples/llava_onevision2/ 下。

图4:WebDataset 打包与验证流程示意
作者将评测代码发布在 lmms-eval 的自定义分支(llava-onevision2)中,包含完整的 benchmark wrapper、配置文件和 Docker 环境。这是目前大多数开源项目做不到的——让研究者在完全相同的环境下复现论文数字。
LLaVA-OneVision-2 并非完美,在部署和使用过程中有几点需要正视:
显存门槛高:虽然 8B 模型听起来不大,但加上视觉编码器、中间激活值、KV Cache,实际推理显存占用可达 20GB 以上。大多数消费级 GPU 无法运行完整推理。
训练成本惊人:四阶段训练中,仅第一阶段就需要 8× A100 × 数天的计算量,完整四阶段训练的碳排放和电费成本对个人研究者来说是不可承受的。
Codec 编码器的计算开销:OneVision-Encoder 的 patch 选择逻辑引入了额外的预处理开销,在某些实时场景下可能得不偿失。
模型规模偏小:8B 参数相对于 GPT-4V 仍然很小,在某些需要极强推理能力的复杂任务上可能存在差距。
文档分散:README 虽然详细,但不同版本(1.5 和 2.0)在不同分支,Quick Start 脚本的质量参差不齐,部分示例缺乏注释。
LLaVA-OneVision-2 的发布在开源多模态领域有标志性意义。它是目前最完整的开源多模态训练框架,不是之一。
在它之前,开源社区有多模态推理模型(推理能力强但不可训练)、有部分训练代码(缺少数据和配置)、有数据集(缺少模型)。LLaVA-OneVision-2 第一次把四者串联起来:一个完整的、从数据到模型的闭环。
从技术演进角度看,OneVision-Encoder 的 Codec 对齐采样策略代表了一个重要的研究方向:如何在有限的 token 预算下最大化有效信息量。这不仅适用于视频,也适用于高分辨率图像、医学影像、遥感数据等场景。
此外,项目同时维护了稠密模型(8B)和 MoE 模型(Qwen3-30B-A3B),为不同硬件条件的用户提供了选择。
| 需求场景 | 推荐操作 | 难度 |
|---|---|---|
| 体验预训练模型 | 下载 HuggingFace 权重,运行 inference.py | ⭐⭐ |
| 基于已有模型微调 | 参考 1.5 RL recipe,从第四阶段开始 | ⭐⭐⭐⭐ |
| 复现论文评测 | 使用 lmms-eval llava-onevision2 分支 | ⭐⭐⭐ |
| 从零训练新模型 | 参考四阶段训练流程 + configs | ⭐⭐⭐⭐⭐ |
如果你只是想体验多模态能力,建议直接使用 HuggingFace Space 上的在线演示(OneVision-Encoder-Codec-View),无需本地部署即可体验 Codec 对齐的视觉编码效果。
如果你有科研需求,LLaVA-OneVision-2 提供的完整训练流水线和评测代码是目前研究多模态训练方法论的最佳起点。