前言
本文一开始是此文《多模态LLaVA系列与Eagle 2——从组合CLIP ViT和Vicuna的LLaVA,到英伟达开源的VLM Eagle 2(用于人形VLA GR00T N1中),发布于25年5月》的第二部分
当时的前言是
之所以写本文,源于两个方面
- 一方面,我司「七月在线」准备在一个人形项目中,试下英伟达通用人形VLA GR00T N1,而GR00T N1中所用的VLM是他们自家于25年1月发布的Eagle 2
- 二方面,Eagle 2的理念特别好,如其在摘要中所说的
近年来,开源视觉语言模型VLMs在将其能力接近专有前沿模型方面取得了有希望的进展
然而,大多数开源模型仅发布其最终的模型权重,数据策略和实现的关键细节仍然不透明
在Eagle 2的这项工作中,作者从数据为中心的角度解决VLM的后训练问题,展示数据策略在开发前沿VLMs中的关键作用
且通过从头开始研究和构建我们的后训练数据策略,作者分享了开发过程中的详细见解
且Eagle2-9B宣称在各种多模态基准上取得了最先进的结果,与参数量高达70B的某些竞争模型相匹敌于此,本文来了
顺带感谢具身智能,让我有了再次奋战几十年的热情与动力,也感谢大模型与具身智能,让我凭借过去三年 每天当三天的拼命/努力,而有了足够大的底气 自信 实力——全靠勤奋
考虑到:1 Eagle 2.5也出来了,2 LLaVA的重要性,故把这两部分分开独立,各自成文比较好
故也有了本文
第一部分 Eagle
1.1 Eagle的一系列设计方案
1.1.1 基础设置:包含基础训练数据、基础训练方案
根据Eagle的论文《Eagle: Exploring The Design Space for Multimodal LLMs with Mixture of Encoders》可知,作者采用了LLaVA-1.5(Liu等,2023c)的模型架构作为基础
该架构包括
- 一个大型语言模型:Vicuna-v1.5 7B
- 一个视觉编码
- 以及一个投影层
投影层将视觉编码器生成的视觉嵌入映射到文本嵌入空间
首先,对于基础训练数据
- 作者在第一阶段的预训练中采用与 LLaVA-1.5(Liu 等,2023c)相同的预训练数据集(LLaVA-595k),该数据集包含 59.5 万组图文对
- 为了充分探索不同视觉专家和融合方法的潜力,作者没有使用 LLaVA-1.5中的 SFT 数据,而是从一系列任务中收集数据,并将其转换为多模态对话,用于监督微调SFT阶段,这部分数据在表 1 中「表1中表明了基础有监督微调数据(Eagle1.8M)的组成」记为 Eagle1.8M

其次,对于基础训练方案
作者采用LLaVA-1.5(Liu等,2023c)的方法
- 首先使用图文对进行一次轮次的预训练,批量大小为256
在该预训练阶段,整个模型被冻结,仅更新投影层 - 第二阶段,作者在多模态对话数据上进一步微调模型,同样进行一次轮次训练
批量大小为128,且学习率分别设置为第一阶段1e-3,第二阶段2e-5
1.1.2 更强大的CLIP编码器
作者首先通过升级vanilla CLIP(Radford等,2021)模型来展开探索,因为它已成为大多数MLLMs(Liu等,2023d;c)的标准选择
- 虽然CLIP模型因其文本-图像对齐能力而有利于多模态任务,但它们也存在固有的缺陷。例如,许多现有的MLLMs(Liu等,2023c)往往采用预训练CLIP的分辨率(如224×224或336×336)作为输入分辨率
在这些情况下,编码器通常无法捕捉对分辨率敏感任务(如OCR和文档理解)(Li等,2024c)至关重要的细粒度细节 - 为应对输入分辨率的提升,常用的方法包括
将输入图像分割为多个小块(tiles)并分别编码
比如Liu等,2024a
再比如Li等,2024c
或者直接对视觉Transformer模型的位置嵌入进行插值以适配高分辨率输入
比如Chen等,2023c;d
再比如Beyer等,2024
作者在不同分辨率下,对冻结/未冻结的视觉编码器采用上述两种方法进行了比较,结果如表2所示

作者的主要发现总结如下:
- 在SFT 过程中更新CLIP 编码器在高分辨率下显著提升了性能,但在使用预训练分辨率时略有下降
- 将CLIP 编码器插值以适应输入尺寸为448 × 448 在效率和性能之间提供了良好的平衡,其性能仅略低于672 × 672 版本,但所需token 数量不到一半
- 尽管其规模较小(0.3B 对5.9B)且预训练数据较少,CLIP 编码器通过插值方法在相同设置下接近InternVL(Chen 等,2023f)的性能
根据结果可以看出,直接插值到448×448能够在效率更高的同时实现有竞争力的性能。因此,作者在SFT阶段解锁编码器时,采用输入分辨率为448×448的CLIP编码器
1.2.3 视觉专家
// 待更
第二部分 Eagle 2
2.1 提出背景与相关工作
2.1.1 引言:如何构建足够具有竞争力的VLM
基于大型语言模型(LLMs),视觉-语言模型(VLMs)[1,2,3,4]旨在赋予LLMs“看”的能力
- 通过具备对世界的视觉感知能力,VLMs能够接收多模态信息,从而应对更广泛的智能应用。例如智能体[5-Cogagent]、自动驾驶[6-DriveVLM,7-LingoQA],以及具身人工智能[8-RT-2,9-Palm-e,10- OpenVLA]等
- 社区已经深入研究了VLM的架构和训练方法,并取得了显著进展
目前,使视觉与语言模态对齐的主要策略是基于对预训练大语言模型(LLM)进行后训练,其中LLaVA系列[4]是代表性例子
根据透明度的不同,当前的VLM模型也可以大致分为三类:
- 商业闭源模型
例如,GPT-4v/o[11]和Claude[12] - 具有公开权重的前沿模型
例如,Qwen2-VL[13]、InternVL2[14]和Llama 3.1[15] - 以及完全开源模型
例如,Cambrian-1[16]和LLaVA系列[4,17]
但不太幸的是,完全开源的LLaVA-OneVision-72B [17]仍略逊于半开源的InternVL2-40B [14]
那如何构建足够具有竞争力的VLM呢,Eagle 2的作者们认为有以下三大关键点
- 数据策略
“多样性优先,然后是质量”——Eagle 2在整个开发过程中始终遵循这一原则,并将其贯彻到极致
他们对数据的优化持续带来模型性能的提升。包括:
1)数据收集策略,构建了涵盖180多个来源的大规模高多样性数据池
2)通过数据过滤策略剔除低质量样本
3)利用数据选择策略构建高质量子集
4)应用一系列数据增强技术丰富现有数据 - 模型架构
比如,尽管存在诸如 Q-Former [19] 和 Hybrid-Attention [20] 等多种设计,简单的 MLP 连接器仍然是连接视觉编码器与大语言模型(LLM)最常用的选择
再比如,受InternVL [21,14]、Eagle [22]和Cambrian-1 [16]等工作的启发,Eagle 2采用以视觉为中心的设计,将动态拼接Dynamic tiling和视觉编码器混合(MoVE)结合于一个统一架构中
具体而言,每个图像块由通道级拼接的MoVE进行编码,从而在实现高分辨率输入的同时,保持MoVE的强大感知能力
Specifically, each imagetile is encoded by channel-concatenated MoVE, therefor eallowing high-resolution input from tiling while maintain-ing the robust perception from MoVE
且类似于[22],Eagle 2采用了“SigLIP [23] + X (ConvNeXt[24])”的配置
相比单独使用SigLIP,拼接MoVE在具备分块的情况下实现了显著的性能提升,尤其在OCR和图表/文档VQA等任务中表现突出
Compared to SigLIP alone, tiled MoVE yields significant improvements despite having tiling, particularly in tasks like OCR and Chart/Document VQA
——————
由于Eagle 2的原论文并没有一个清晰可见的完整模型架构图(至于论文中的图11-详见下文2.2.3节,尚不够完整),故为了方便大家理解,我特地把其模型架构图画了一下,供大家参考

1 输入图像
动态分块(Tiling)-> 产生N个图像块(N=i×j,i×j≤12)
2 对于每个图像块:
同时输入两个视觉编码器(SigLIP和ConvNeXt),每个编码器会相应的调整图像块的大小至所需输入尺寸
SigLIP分支:调整至448x448 -> SigLIP -> 特征图(32x32)-> PixelShuffle下采样2倍 -> 16x16
ConvNeXt分支:调整至512x512 -> ConvNeXt -> 特征图(16x16)
3 将两个特征图拼接(通道维度)
通过MLP连接器 -> 输出256个视觉token,相当于通过MLP连接器对齐到LLM输入维度
4 将所有图像块的视觉token拼接 -> 总视觉token序列(N*256个token)
输入LLM
PS,根据论文,视觉token数量为 (i×j+1)×256,但本图仅展示了分块分支的 i×j×256 个视觉token,额外的256个视觉token来源未明确 - 训练配方
虽然最先进的VLM [25-Qwen2-VL,14-InternVL2,26- Gpt-4 technical report]的训练配方不太明确,但现有研究[16-Cambrian-1,4-Visual instruction tuning,17-Llava-onevision]分享的细节可以提供一个可靠的基线
为了进一步提升模型性能,Eagle 2采用三阶段训练策略以最大化利用训练数据
具体而言
第一阶段(阶段1),通过训练MLP连接器实现语言模态和图像模态的对齐
接下来的阶段(阶段1.5)使用大规模多样化的数据对完整模型进行训练,且在阶段1.5中,整合了所有可用的视觉指令数据,而不仅仅局限于描述或知识类数据
最后阶段(阶段2)继续使用精心构建的高质量视觉指令调优数据集训练完整模型
最终,Eagle 2 模型家族涵盖了各种规模,包括 1B、2B 和9B 参数
2.1.2 相关工作
第一,对于视觉-语言模型和大语言模型[187,188,3]
其彻底改变了NLP领域,并重塑了更广泛的人工智能格局
- LLMs 的进步通过将视觉特征与 LLMs 融合,推动了视觉理解领域的重大突破,催生了视觉-语言模型(VLMs)[189,11,4,190]
- 具有公开可用权重的VLMs[4,3,191,192,193,17,194,14,25,195,15,196,197,198,199]的性能在持续取得突破,达到了甚至超越了GPT-4V/4o [184,11] 和Gemini-1.5 [185]
- 完全开源的 VLMs[17,16,200] 发布了他们的训练数据和代码库,进一步加速了 VLM 的研究
第二,对于以视觉为中心的VLMs
- VLMs的视觉基础[201,202,203]和改进设计[204,23,195,205,206,207]
- 混合视觉编码器设计[208,209,210,211,212,16,22]
- 以及平铺和高清输入设计[213,214,215,216,21,193,194,217,14,25]
据所知,这项工作是首次探索平铺混合视觉编码器(MoVE)设计,该设计被证明继承了两种方法的优势。提出的平铺MoVE设计还引入了额外的灵活性,以结合先进的视觉基础模型
第三,对于VLMs中的数据工作
数据策略在训练VLMs中至关重要,包括数据集构建、平衡和过滤以及训练方法的各个方面
- 早期探索如LLaVA-150K [4] 使用了GPT-4 [11]的指令调优,后来研究[218,219,193,204]通过通过将多任务学术训练数据融入监督微调阶段实现了改进
研究还扩展了数据类型至视频[220,15]、多图输入[17,14]、图文交错数据[221,222]、多语言数据[186]和合成数据集[15] - 然而,单纯扩展数据集可能会因质量和规模差异而对模型性能产生负面影响
诸如Instruct-BLIP [219]和Cambrian-1 [16]之类的方法通过设计最佳数据比例和平衡技术来解决这一问题,而其他方法如Llama3 [15]和Molmo [223]则通过使用SSCD [178]去重和引入人工标注的图像来提升数据质量 - 此外,训练策略也在不断发展,LLaVA [4]提出了一个成为标准的两阶段训练过程,后来的模型[17-Llava-onevision]引入了中间阶段
VLM的综述[224,225,226]也讨论了用于构建VLM的各种训练方法和数据策略,但它们缺乏定性分析,未能为训练前沿VLM提供足够细致的路径指引
2.2 完整方法论:数据策略、训练方法、视觉编码器的平铺混合
2.2.0 基线设置
如表1所示,Eagle 2的初始基线从Cambrian数据集[16]开始,使用LLaVA的[4]两阶段训练方法

作者从Cambrian-7M中移除了一些低质量数据,例如ShareGPT-4V、GPT-77K和Data-Engine-161K,最终得到包含520万条样本的子集
该模型通过MLP连接器将视觉编码器与LLM相连接,并采用image tiling以实现动态分辨率,且基于此基准框架,作者从三个关键维度增强了Eagle 2:
- 数据策略
- 训练方法
- 模型架构
2.2.1 数据策略:数据收集、数据过滤、数据选择、数据增强
训练数据对于定义VLM的能力至关重要,然而,大多数商业VLM以及那些公开权重的主流VLM,其数据策略通常被保密
下图图3展示了Eagle 2的整体数据策略「上部分显示数据收集流程,下部分显示数据优化流程」,包括两个核心组成部分:数据收集和现有数据的优化

2.2.1.1 数据收集
对于数据收集,其多样性是关键。一个模型的能力与数据的多样性强烈相关。因此,尽可能收集多样化的数据是本研究的核心原则,这也引出了两条主要策略
- 被动收集
持续关注arXiv论文和HuggingFaceDatasets中的最新相关数据集,并将其加入的候选列表 - 主动搜索
解决桶效应。如上图图3所示,每次更新数据池时,作者都会进行误差分析,以识别模型的薄弱环节,并有针对性地搜索新的数据
最终,Eagle 2的多样化数据来源在表2a中进行了总结,并且通常是公开可用的。且利用了一些预先组织的数据集集合[16,17,151]来加速准备工作,但也进行了仔细检查以防止诸如测试数据泄露等问题

此外,他们还收集了大量的公共非问答数据,例如Google Landmark[31],并通过特定规则或自动标注工具将其转换为VQA数据
另,为了降低训练成本,避免对每个数据集单独进行消融实验。相反,当满足以下条件时,将领域相似的数据集批量加入数据池:
- 在每个考虑的基准测试中保持整体准确率且没有明显的退化
- 为当前领域引入有价值的多样性
为了量化多样性,作者定义了一个称为相似度评分的指标,用于衡量新数据源与当前数据池之间的相关性,其定义如下
- 其中
是新数据源的索引,包含
个样本,而
是现有数据池的索引,包含
个样本,
表示数据类别
- 仅在同一类别内计算相似度分数,因为不同类别之间的相似度通常较低
图像嵌入和
由SSCD [178]生成,而文本嵌入
和
由all-mpnet-base-v2 [179]生成
样本之间的相似度分数是图像和文本相似度的乘积
该指标显示,大多数来源的相似度较低,部分高相似度样本已作为重复项被移除
且按照Eagle 2的数据收集协议和以下所述的优化步骤,Eagle 2的最终模型
- 在阶段1.5中使用了2160万样本,在阶段2中使用了460万样本,其分布如图4所示

- 且作者确保纯文本数据占比超过20%
在阶段1.5中,字幕描述数据占比最大
然而,在阶段2中,出于对过于单一指令的担忧而减少了字幕描述数据的比例
2.2.1.2 数据过滤
正如一粒老鼠屎坏掉一锅粥,公开数据集通常包含大量低质量样本
作者发现,大多数低质量案例主要属于以下几类,作者据此制定了筛选标准
- 问题-答案对不匹配。例如,来自 ShareGPT4o [28]的图 5(a)

- 不相关的图像-问题对,图像和问题无关。例如,图5(b)来自 Cambrian-1 [16]

- 重复的文本。例如,图5(c)来自 ShareGPT

- 数字格式问题
小数位数过多或数值答案过于精确,但图像中缺乏对应信息。例如,图6
总之,由于大多数低质量数据是通过合成生成的,因此它们通常具有一些特征,使得可以通过基于规则的过滤方法将其识别并剔除
2.2.1.3 子集选择
子集选择——“每个数据都有其代价”。选择最佳子集是高质量训练的关键。最近的研究[16-Cambrian-1]表明,应限制每个数据源的样本数量,通常不超过(例如350K)
Eagle 2的数据选择基于两个主要原则:
- 子集数量确定
数据源的多样性和分布决定了样本集的规模
自动标注的数据源通常规模较大,但常存在错误且多样性不足,相比之下,人工标注的数据集往往规模较小
因此,原始规模较大的数据集通常使用较小的采样比例
在Eagle 2的阶段2数据中,每个来源的平均规模约为20K,其中最大的子集Visual-WebInstruct [56]具有263K个样本 - K-means 聚类选择
一旦确定了子集的规模,下一步就是选择样本。目前的方法通常采用随机选择,但这种方式并不理想
例如,在图表数据中,直方图样本比折线图或饼图等其他类型更为常见,而随机抽样无法确保这些类型的均衡覆盖
为了解决这个问题,作者对 SSCD [178] 图像嵌入特征实施了无监督的K-means 聚类,将具有相似图表类型的样本聚集在相邻空间,从而便于有针对性地选择数据,例如根据需要包含所有的折线图和饼图样本
虽然使用 SSCD 图像嵌入方法K-means 聚类,在自然场景图像上表现较差,但在数学、医学和基于文档的数据上表现出色
2.2.1.4 数据增强与数据格式化
首先,数据增强旨在挖掘输入图像中现有问答标注未能充分体现的丰富信息
为了从图像空间中挖掘潜在有用的信息,一种常见的方法是使用第三方视觉语言模型(VLMs)生成图像的细粒度描述,如图7所示(为方便大家更好的理解,我特地把原图和对原图的翻译 放在了一块)
- 添加思维链(Chain-of-Thought)解释说明
- 基于规则的QA生成
- 将简短的回答扩展为详细回答
有关上述生成过程的详细信息,请参阅补充材料
其次,数据格式化将数据转换为正确的格式也是数据准备中的一个关键步骤
基本原之一是:相同任务,相似格式;不同任务,明确区分格式
故Eagle 2的数据格式化包括但不限于:
- 去除不必要的装饰
比如在表3中展示了一个看似不起眼的示例『两个具有相同「从图像提取LaTeX」任务,但格式不同的样本集』,然而该示例对最终结果产生了深远影响
作者展示了来自不同来源的两个样本,用于从图像中提取 LaTeX 公式
其中的第二个样本包含了一个不必要的固定方程环境——即使仅有限度地使用此类数据,模型仍会持续输出固定的模板(以红色文本显示)——意思就是说 上面那段红色文本所示的固定方程格式 没有意义,直接删掉更好
在移除固定的方程环境后,模型恢复了正常行为,在 OCRBench [180] 上取得了显著的改进 - 添加更具体的指令
根据回复在原始指令中添加详细说明是一种常见的做法
例如,在简短的回答后添加“提供简短答案”有助于防止模型变成只会给出简短回答的“回答机器”。然而,过度使用这种方法也可能妨碍模型的泛化能力。比如,对每个是或否的问题都添加“请回答是或否”,可能会削弱模型在推理过程中没有此类提示时正确回答的能力
2.2.2 训练方法
上面的一系列数据策略使Eagle 2能够构建一个高质量且多样化的数据集,但对同一数据池应用不同的训练方法仍然对最终结果有决定性影响
回顾一下上文2.1.1节中对Eagle 2三阶段训练的阐述
- 第一阶段(阶段1)用于通过训练MLP连接器对齐语言和图像模态
- 接下来的阶段(阶段1.5)使用大规模多样化数据训练完整模型,且在阶段1.5中,整合了所有可用的视觉指令数据,而不仅限于字幕或知识数据
- 最后阶段(阶段2)继续使用精心设计的高质量视觉指令调优数据集训练完整模型
故作者基于以下核心要点
首先,后预训练阶段是必要的
- 作者最初采用了LLaVA[4] 的两阶段训练策略,其中首先训练一个MLP连接器,然后使用SFT数据进行完整模型训练
尽管这种方法高效,但对于快速更新SFT数据来说并不适用,因为SFT数据的不断扩展使得难以追踪新数据的影响,并降低了实验效率。例如,作者注意到扩充Cambrian-1 [16] SFT数据后模型有所提升
然而,模型与最先进的模型之间仍存在差距
鉴于两阶段策略的主要局限在于缺乏稳健的预训练,作者增加了一个额外的预训练阶段(阶段1.5)。阶段1.5在更大的数据集上对模型进行预训练,以减少后续训练中对SFT数据的依赖
其次,大轮驱动小轮
- 事实上,三阶段预训练在现有研究中被广泛采用,例如 LLaVA-OneVision [17]
然而,对于在Stage-1.5阶段使用的数据,作者的观点截然不同
具体而言
其他研究倾向于在这一阶段使用更多与知识相关的数据,比如图像描述数据
但在本工作中,作者将所有用于视觉指令的数据源添加到Stage-1.5,同时引入如表2b所示的其他几个数据集

如Fig.8所示,在Stage-1.5的基础上随后再进行Stage-2的训练,从而使得能够在高性能的基础上实现更快的迭代
「As shown in Fig. 8, training Stage-2 based onStage-1.5 enables rapid iteration on a high-performancefoundation」
由此得出的结论,比那些在小规模数据上进行的无法推广的消融实验所得出的结论更可靠
- 此外,从Stage-2中得出的有效结论可以用来更新Stage-1.5,从而进一步推动模型性能的提升。详细设置如表4所示

再者,平衡感知的数据打包非常重要
- 数据打包通过将较短的样本连接在一起,从而减少填充的使用,可以加速训练。在作者的实验中,使用数据打包使训练速度提高了2-3倍
打包的一个关键步骤是将长度不同的个短样本排列成
个长样本,并且不超过最大长度。现有的框架如LLaMa-Factory,使用了一种简单的贪心背包算法,但这通常会产生长度分布不均的问题
- 如图9所示「将64个长度不同的样本打包成组合样本,每个样本的长度小于8192。在LLaMa-Factory [181] 中使用的简单贪婪背包方法(下图图a所示)会导致长度分布不均,而Eagle 2提出的方法在每个背包中实现了更均匀的长度分布(下图图b所示)」
传统的贪婪背包方法将长样本和短样本分别分组,这对于模型训练来说并不理想
因此,作者设计了一种平衡感知贪心背包算法,该算法生成长度分布更均匀的包,如图10所示——它将一组样本(每个样本有规定的长度)尽可能平衡地分配到多个“背包”中,每个背包的最大容量为
,确保每个包中既包含长样本也包含短样本
为方便大家更好的理解,我特地在原论文代码的基础上,给代码的每一行 都加上了中文注释与SPFHP(Shortest-Pack-First Histogram Packing)[182]不同,Eagle 2的方法优先考虑长度分布的平衡性,而不是打包效率,从而帮助平衡长样本和短样本之间的损失权重
更多细节见附录
2.2.3 视觉编码器的分块混合
参考 Eagle [22],作者使用 SigLIP [23] 和ConvNeXt-XXLarge [24,183] 作为视觉编码器

- 此外,为了处理任意高分辨率的图像,采用了InternVL-1.5 [21] 提出的图像分块(image tiling)技术
SigLIP 的每个图像分块的输入分辨率为 448×448,而ConvNeXt 的输入尺寸为 512×512 - 另,为了确保它们输出相同数量的图像token,使用 PixelShuffle对 SigLIP 的图像特征进行 2×降采样,最终得到16×16的特征图,与 ConvNeXt 的输出尺寸(输入图像的32×降采样)相匹配
然后,沿通道维度连接这些特征,并通过一个 MLP 层与 LLM 对齐
经作者实验论证,引入视觉编码器的混合在14个基准测试中的12个上带来了性能提升,特别是在与文档、图表和OCR相关的基准测试中。这清楚地表明,视觉编码器的混合显著增强了模型对视觉空间的理解能力
// 待更
第三部分 Eagle 2.5
// 待更



1081

被折叠的 条评论
为什么被折叠?



