粗缯大布裹生涯,腹有诗书气自华。小伙伴们好,我是微信公众号"小窗幽记机器学习"的小编卖铁观音的小男孩。近日(4月7日)SmolVLM官方正式发布了技术报告。早在去年,小编就介绍过一次SmolVLM:端侧多模态 | HuggingFace端侧家族新成员SmolVLM解读&实战,感兴趣的小伙伴可以翻阅下前文。为此,本文不再实战演示,主要基于官方技术报告介绍SmolVLM的技术细节。
SmolVLM 是一系列为资源受限环境设计的紧凑型多模态模型,其核心在于通过创新的架构设计、高效的token化策略和优化的数据管理,实现了在极低计算成本下的卓越性能。研究者们系统地探索了影响小型视觉语言模型效率和能力的多个因素,包括编码器与语言模型的参数分配、上下文长度、视觉token压缩以及针对图像和视频数据的特定处理方法。实验结果表明,SmolVLM 在多个视觉语言理解和视频理解基准测试中表现出色,甚至超越了一些参数量远大于它的大型模型,这证明了精心设计的轻量级模型在资源受限的应用场景中具有巨大的潜力 。该研究还公开了模型权重(256M、500M、2.2B)、数据集和代码,旨在促进对高效多模态模型的研究和应用。
以下是SmolVLM技术报告的核心要点:
- 长上下文 -> 巨大提升:将上下文长度从2K增加到16K使的小型视觉语言模型性能提升了60%!
- 搭配SigLIP,越小越智能:令人惊讶的是,小型语言模型并不受益于通常使用的大型SigLIP(400M)。相反,使用80M基础版SigLIP,仅为原始大小的20%却能获得同样的性能!
- 像素重排(shuffle):积极的像素重排有助于紧凑型视觉语言模型"看"得更好,使用长度缩短16倍的序列也能达到相同性能!
- 学习型位置token(子图位置):对于紧凑型模型,学习型位置token明显优于原始文本token,提高了效率和准确性。
- 系统提示和特殊token至关重要:引入系统提示和专用媒体开始/结束token显著提升了紧凑型视觉语言模型的性能,尤其是在视频任务上。
- 减少思维链推理,提高效率:事实证明,过多的思维链(CoT)数据实际上会损害小型模型的性能。在特定场景下,过度思考,实则有害。
- 更长视频,结果更好:在训练中增加视频长度提高了视频和图像任务的性能。
- 领先性能,SmolVLM提供三种强大而紧凑的规格:256M、500M和2.2B参数。每种都在其硬件约束下为图像和视频理解设立了新的最高水平基准。
- 现实效率:使用SmolVLM在iPhone 15上创建了一个应用,可以直接从摄像头进行实时推理!
- 基于浏览器的推理:在网页浏览器中直接获得每秒40-80个token的推理速度。
论文地址:
https://arxiv.org/abs/2504.05299
GitHub:
https://github.com/huggingface/smollm
论文系统地探索了基于图2所示架构的小型多模态模型的设计选择,该架构中编码后的图像经过池化并投影到SmolLM2骨干网络中。
研究人员:
- 首先分析了最佳计算分配,表明较小的视觉编码器与紧凑型语言模型相辅相成。
- 扩展上下文长度以最小的开销实现更高的图像分辨率
- 而像素重排进一步减少了视觉token。
- 通过文档特定的图像分割和有针对性的token压缩,高效处理高分辨率图像和视频。
以上这些方法共同构成了一个统一、高性能且具有成本效益的微型大语言多模态模型。
如何确立视觉编码器和语言模型的配比?
SmolVLM 的研究人员通过实验分析了在小型多模态模型中,视觉编码器和语言模型之间最优的计算资源分配问题。他们将三种不同规模的 SmolLM2 变体(1.35 亿、3.6 亿和 17 亿参数)与两种 SigLIP 编码器(一个紧凑型的 9300 万参数的 SigLIP-B/16 和一个较大的 4.28 亿参数的 SigLIP-SO400M)进行了配对实验。
研究结果表明:
- 当 最小的语言模型(1.35 亿参数) 与 较大的视觉编码器(4.28 亿参数) 搭配使用时,性能会 显著下降 。这表明,在这种情况下,编码器和语言模型之间的参数分配是不平衡的,较大的视觉编码器对于如此小的语言模型来说效率不高。
- 在 中等规模的语言模型(3.6 亿参数) 的情况下,使用 较大的视觉编码器 可以将性能提高 11.6%。然而,这也带来了 66% 的参数增长,因此 紧凑型的编码器在这种规模下可能更受欢迎 ,因为它在参数效率方面更具优势。
- 只有当使用 最大的语言模型(17 亿参数) 时, 较大的视觉编码器 带来的参数增加(仅为 10%)才是相对合理的,并且能够带来更好的性能提升。
基于这些实验结果,论文得出了以下重要发现 :
- 紧凑型多模态模型受益于平衡的编码器-语言模型参数分配 ,这使得 较小的视觉编码器在追求效率时更受青睐 。
换句话说,对于小型 VLM 来说,并非总是越大越好的视觉编码器就能带来最佳的性能。关键在于根据语言模型的容量,找到一个平衡点 ,避免视觉编码器的计算资源过剩而语言模型无法充分利用这些特征,或者反过来语言模型过于强大而视觉信息提取不足。因此,在设计小型 VLM 时,需要仔细考虑视觉编码器和语言模型之间的参数配比,以实现最佳的性能和效率。
图像如何高效传递到语言模型?
图像通过以下方式高效地传递到语言模型:
- 采用自注意力架构 。SmolVLM 遵循 What matters when building vision-language models? 的做法,采用了一种自注意力架构,在这种架构中,来自视觉编码器的 视觉 tokens 会与文本 tokens 连接起来 。
- 联合处理 。连接后的视觉 tokens 和文本 tokens 会被 语言模型(例如,FROMAGe (Koh et al., 2023), BLIP-2 (Li et al., 2023a))共同处理 。
- 扩展上下文容量 。由于对一个 512 × 512 的图像使用 SigLIP-B/16 编码就需要 1024 个 tokens,这会超出 SmolLM2 中使用的 2k tokens 的上下文限制,因此 扩展了上下文容量 。
- 增加 RoPE 基数 。为了实现上下文扩展,研究团队 将 RoPE(Rotary Position Embeddings)的基数从 10k 增加到了 273k 。更大的 RoPE 基数有助于模型处理更长的序列而不会损失位置编码的精度。
- 长短上下文数据混合微调 。为了使模型能够更好地处理更长的上下文,SmolVLM 在 混合了长上下文数据(Dolma books (Soldaini et al., 2024), The Stack (Kocetkov et al., 2022))和短上下文数据(FineWeb-Edu (Penedo et al., 2024), DCLM (Li et al., 2024a), 以及来自 SmolLM2 的数学数据)的数据集上进行了微调 。
此外,通过扩展上下文长度 ,可以在最小的开销下实现更高的图像分辨率,并且像素 shuffle 进一步减少了视觉 tokens 的数量。虽然 1.7B 参数的语言模型可以在 16k tokens 的上下文长度下稳定地进行微调,但较小的模型(135M, 360M)在超过 8k tokens 时会遇到困难。SmolVLM (2.2B 参数) 的实验证实,高达 16k tokens 的上下文长度可以带来持续的性能提升,因此 SmolVLM 采用了 16k tokens 的上下文 ,而较小的变体则限制在 8k tokens。
总而言之,SmolVLM 通过将视觉 tokens 与文本 tokens 连接并共同输入到语言模型中,同时通过增加 RoPE 基数和混合长短上下文数据进行微调来扩展模型的上下文处理能力 ,从而实现了将图像高效地传递到语言模型。
拓展上下文
拓展长上下文对小型 VLM 的性能有益。具体来说,SmolVLM 采取了以下方法来拓展模型的上下文长度:
- 增加 RoPE 基数 (RoPE base) :为了能够处理更长的序列,研究团队将 SmolLM2 中使用的 RoPE(Rotary Position Embeddings)基数从 10k 增加到了 273k。RoPE 是一种常用的位置编码方法,通过旋转的方式为序列中的每个 token 编码位置信息,更大的基数通常允许模型处理更长的上下文而不损失位置编码的精度。
- 使用长上下文数据进行微调 (Fine-tuning on long-context data) :为了使模型能够更好地利用更长的上下文,SmolVLM 在混合了长上下文和短上下文的数据集上进行了微调。
- 长上下文数据包括 :Dolma books 和 The Stack。
- 短上下文数据包括 :FineWeb-Edu, DCLM, 以及 SmolLM2 的数学数据。
图 3 (middle) 展示了上下文长度对 SmolVLM 性能的显著影响。
具体来说,该图表明,随着上下文长度从 2k 增加到 16k tokens,模型的平均 CIDEr(图像描述)和准确率(视觉问答)指标显著提高 。
然而,文章也指出,并非所有规模的模型都能受益于相同的上下文长度 。
- 对于 较小的模型(135M 和 360M 参数) ,在微调过程中,当上下文长度超过 8k tokens 时,训练变得不稳定。
- 对于 较大的模型(1.7B 参数的 SmolLM2 以及 2.2B 参数的 SmolVLM) ,研究团队在 16k tokens 的上下文长度下进行了稳定的微调,并观察到 持续的性能提升 。
具体的性能提升指标 请见于 图 3 (middle)。拓展上下文长度是提升 SmolVLM 性能的关键因素之一 ,尤其对于参数量较大的模型而言。
总而言之,SmolVLM 通过增加 RoPE 基数并在长短混合的文本数据上进行微调 来拓展模型的上下文长度。实验结果表明,更长的上下文长度能够显著提升模型的性能 ,但较小的模型在更长的上下文下可能会遇到训练稳定性问题,因此不同规模的模型可能需要不同的最优上下文长度.
像素重排
像素重排 (pixel shuffle) 是一种将编码后的图像进行重排列的操作,旨在以降低空间分辨率为代价增加通道深度 。这个过程可以减少视觉token的数量,同时保留信息的密度 。
具体来说,假设一个尺寸为
的特征图(来自视觉编码器),并且希望应用一个重排比例
。像素重排的操作步骤如下:
- 将原始的特征图在空间维度上划分为大小为
的子块。这样会得到
个这样的子块。 2. 对于每个
的空间子块,其包含
个特征值。 3. 像素重排操作将这
个特征值重新排列到一个新的通道维度中。具体来说,它会将每个子块中的特征值交织排列到
个通道中。 4. 最终得到的特征图的尺寸将是
。
图 4 对此过程进行了可视化说明 :一个输入图像经过编码后得到特征表示。然后,像素重排操作将这个特征表示进行重组,原本相邻的像素信息被分散到不同的通道中,形成一个新的、通道数更多的但空间尺寸更小的特征图。
这样做的好处是:
- 减少视觉token数量 :如果重排比例是
,那么视觉token的总数会减少
倍。这是因为通常每个空间位置会生成一个视觉token,而空间尺寸缩小了
倍。
- 提高表示密度 :虽然空间分辨率降低了,但是通过增加通道数,每个token所包含的信息量(特征维度)增加了,从而保持了信息的密度。
- 降低计算开销 :视觉token数量的减少能够减轻 Transformer 模型中注意力机制的计算负担,这对于小型模型尤其重要。
- 改善长上下文建模 :更积极的token压缩使得模型能够处理更长的序列(例如更高分辨率的图像),而不会超出其上下文窗口的限制。
虽然像 InternVL 和 Idefics3 等模型使用
的重排比例来平衡压缩和空间保真度,但 SmolVLM 的实验表明,**较小的 VLM 可以从更激进的压缩(例如
)中获益** ,因为这进一步降低了注意力开销并改善了长上下文建模。然而,过高的重排比例可能会将较大的空间区域压缩到单个token中,从而损害需要精确定位的任务(例如 OCR)的性能。
因此,像素重排是一种通过在空间分辨率和通道深度之间进行权衡来有效压缩视觉信息的技术,特别适用于资源受限的小型视觉语言模型。
高效编码图像和视频
为了实现高效的多模态建模,关键在于平衡图像和视频之间的 token 分配。
- 对于图像的编码 ,SmolVLM采用了图像分割策略 ,该策略的灵感来源于 UReader 和 SPHINX。具体来说,对于高分辨率的图像,会将其分割成多个子图像 ,同时保留原始图像的一个下采样版本 。这种方法被证明在保持图像质量的同时,避免了过高的计算开销。
- 对于视频的编码 ,研究团队发现,诸如 帧平均 等策略会对性能产生负面影响。如图 3(右)所示,合并多个帧会显著降低 OpenCompass-Video 的结果, 尤其是在较高的平均因子(2、4、8)下。因此,帧平均被排除在 SmolVLM 的最终设计之外 。取而代之的是,视频帧被重新缩放到与图像编码器相同的分辨率 。
总而言之,SmolVLM 通过对高分辨率图像进行分割 ,并对视频帧进行重缩放 来高效地编码图像和视频。同时,研究强调了在小型模型中,需要根据模态的特性(高分辨率图像需要更多 token 以保持细节,而视频为了处理长序列每帧需要更少的 token)来平衡 token 的分配。
以下探讨视觉和文本的 tokenization 方法、 统一的多模态建模方法,并强调了数据组成在提升小型 VLM 性能中的重要性。
子图位置:学习的 Tokens vs. 字符串
- 问题 : 如何有效地编码分割后的子图像的位置信息。最初,研究团队尝试使用简单的字符串 tokens(例如
<row_1_col_2>
)来表示子图像的位置,但这种方法导致了早期训练的停滞,作者称之为“OCR 损失瘟疫”——即损失突然下降,但 OCR 性能没有相应提升。 - 方法 : 为了解决训练不稳定的问题,SmolVLM 引入了学习的位置 tokens 。与固定的字符串 tokens 不同,这些位置 tokens 在模型的训练过程中被学习和优化。
- 发现 : 实验表明,学习的位置 tokens 显著改善了训练的收敛性并减少了训练停滞 。虽然较大的模型对使用原始字符串位置相对鲁棒,但较小的模型从学习的位置 tokens 中获益匪浅,获得了明显更高的 OCR 准确率和更好的跨任务泛化能力 。图 5 的中间部分显示,在多个图像和文本基准测试中,学习的位置 tokens 的性能始终优于朴素的字符串位置。图 5 的右侧部分进一步表明,利用学习的 tokens 的模型在 OpenCompass-Image 和 OpenCompass-Video 评估中都取得了更高的分数,突显了结构化位置 tokenization 在小型多模态模型中的有效性。
- 结论 : 对于小型 VLM 来说,学习的位置 tokens 的性能优于原始文本 tokens。
结构化文本提示和媒体分割
- 问题 : 本节探讨了系统提示和显式的媒体引导/结束前缀如何逐步提升 SmolVLM 在图像和视频基准测试中的性能。
- 方法 : 研究团队评估了以下策略对模型性能的影响(如图 6 所示):
- 媒体引导/结束 Tokens (Media Intro/Outro Tokens) :在图像和视频片段周围引入文本标记(markers),例如“Here is an image...”和“Here are N frames sampled from a video...”。结束 tokens 则过渡回文本指令,例如“Given this image/video...”。
- Masking User Prompts(屏蔽用户提示) :借鉴SmolLM2中的技术,在监督微调期间屏蔽用户提示,以减少过拟合。
- 系统提示 (System Prompts) :在输入中加入简洁的指令,以明确任务目标并减少零样本推理期间的歧义。例如,对话数据集使用“You are a useful conversational assistant”这样的提示,而视觉任务使用“You are a visual agent and should provide concise answers”。
- 发现 : 图 6 的左侧和右侧小提琴图显示,随着每种策略的应用,图像和视频基准测试的结果都呈现出持续的性能提升。系统提示尤其在以图像为中心的任务中带来了明显的性能提升。媒体引导/结束 tokens 显著提高了视频任务的性能(因为可以更清楚地区分多个帧),并且对图像任务也有可衡量的改进。屏蔽用户查询(橙色)在图像和视频任务中都带来了更好的性能,这种效果在多模态问答中尤为明显,因为这迫使模型依赖于与任务相关的内容,而不是简单的记忆重复性问题,从而促进了更好的泛化。
- 结论性发现 : 系统提示和媒体引导/结束 tokens 显著提高了小型 VLM 的性能,尤其是在视频任务方面。在 SFT 期间,仅在补全内容上进行训练。
复用LLM-SFT 中文本数据的影响
- 问题 : 以下考察了复用来自大型语言模型最终监督微调阶段的文本数据(例如,预期分布内的提示和更高质量的语言输入)是否对小型多模态模型有利。
- 方法 : 研究人员将包含 LLM-SFT 文本数据(SmolTalk)的训练数据与不包含的数据进行了比较,并在 图 7(左) 中展示了结果。
- 发现 : 与直觉相反,图 7(左)表明, 在较小的多模态架构中加入 LLM-SFT 文本数据实际上会降低性能 ,在视频任务中下降高达 3.7%,在图像任务中下降高达 6.5%。作者将这种负迁移归因于数据多样性的降低,这抵消了复用文本可能带来的任何好处。因此,与 Zohar et al. (2024b) 的研究一致,SmolVLM 在其训练组合中保持了严格的 14% 的文本比例。
- 结论性发现 : 添加来自 SFT 混合的文本数据比新的文本 SFT 数据的效果更差 。
优化小型模型的思维链集成
- 问题 : 思维链 (Chain-of-Thought, CoT) 提示通常可以增强大型模型的推理能力,但其对小型多模态架构的影响尚不清楚。
- 方法 : 为了研究这个问题,研究团队改变了集成到 Mammoth 数据集中的 CoT 数据的比例,涵盖了文本、图像和视频任务。图 7(中)展示了不同 CoT 数据比例下的性能。
- 发现 : 图 7(中)显示,加入极少比例(0.02%-0.05%)的 CoT 示例略微提高了性能,但更高的比例则显著降低了结果 ,尤其是在图像任务中。这表明,过多的面向推理的文本数据可能会超出小型 VLM 的有限容量,从而损害其视觉表示能力。
- 结论性发现 :过多的 CoT 数据会损害小型模型的性能 。
视频序列长度对模型性能的影响
- 问题 : 增加训练期间的视频时长可以提供更丰富的时序上下文,但也会带来更高的计算成本。本节旨在确定最佳的视频时长。
- 方法 : 研究团队在平均视频长度从 1.5 分钟到 3.5 分钟不等的数据上训练了 SmolVLM。图 7(右)展示了结果.
- 发现 : 图 7(右)表明,随着 视频时长接近约 3.5 分钟 ,视频和图像基准测试的性能都有明显的提高,这可能是由于更有效的跨模态特征学习。然而,将视频时长延长超过 3.5 分钟带来的收益甚微,相对于增加的计算成本而言,收益递减。
- 结论性发现 : 在小型 VLM 中,适度增加训练期间的视频时长可以提高视频和图像任务的性能 。
总而言之,以上探讨了针对小型多模态模型进行有效指令微调的关键策略,包括使用学习的位置 tokens、结构化的提示和媒体分割、谨慎地使用来自 LLM-SFT 的文本数据、优化 CoT 数据的比例以及调整视频序列的长度. 这些发现为构建高效且强大的小型 VLM 提供了重要的指导.
模型训练:视觉阶段+视频阶段
SmolVLM的训练过程分为两个阶段:视觉阶段和视频阶段。图 8 的左侧部分提供了视觉训练数据的更详细的分布情况,按模态和子类别进行了细分。图 8 的右侧部分提供了视频微调数据的更详细的分布情况,同样按模态和子类别进行了细分。
- 视觉训练阶段 使用了一种新的数据集混合,该混合强调视觉和结构化数据解释,同时保持对推理和问题解决能力的关注。
- 根据图 8(左)所示,视觉训练数据包含 86% 的图像数据 和 14% 的文本数据 。
- 图像数据进一步细分为 OCR 和文档 (48%)、字幕 (14%)、图表理解 (12%)、推理和逻辑 (9%)、表格理解 (9%) 以及视觉问答 (8%)。
- 文本数据则侧重于推理和逻辑 (79%) 以及一般知识 (21%)。
- 视频微调阶段 根据 Zohar 等人 (2024b) 的研究经验,保持 14% 的文本数据和 33% 的视频数据 以实现最佳性能。
- 如图 8(右)所示,视频微调数据包含 35% 的图像、33% 的视频和 20% 的文本。
- 视频数据涵盖视觉描述和字幕 (37%)、推理和逻辑 (26%)、文档理解 (23%) 以及视觉问答 (14%)。
- 文本样本来源于 (Xu et al., 2024)。
总而言之,训练小型 VLM 时,不应盲目地复用大型 LLM 的文本数据,而需要构建一个仔细平衡的训练数据混合 ,其中视觉数据应占主导地位 ,并维持一个适当比例的文本数据 以保证模型在文本相关任务上的性能。通过实验确定了视觉和文本数据的有效比例,并在其训练流程中采用了这一策略,强调了针对小型多模态模型优化数据组合的重要性。
根据论文中的实验评测结果,SmolVLM 在多个具有挑战性的视觉语言和视频基准测试中都展现出了强大的性能,尤其是在考虑到其模型尺寸和内存占用方面。
具体来说:
- 在模型性能方面 :
- SmolVLM 提供了三个不同规模的变体:SmolVLM-256M、SmolVLM-500M 和 SmolVLM-2.2B。
- 即使是最小的 SmolVLM-256M(少于 1GB GPU 内存)也显著超越了 300 倍大的 Idefics-80B 模型 ,这突显了 SmolVLM 在小规模模型上的有效视觉能力。
- 随着模型参数量的增加,SmolVLM 的性能在所有评估基准测试中都持续提升。 最大的 SmolVLM-2.2B (2.2B 参数) 在多个基准测试中都与最先进的 VLMs 相匹敌,但其 GPU 内存消耗仅为后者的一半 。其在 OpenCompass 上的平均得分达到了 59.8% 。
- 如 Table 1 所示,SmolVLM 的各个变体在包括 OCRBench、AI2D、ChartQA、TextVQA、DocVQA、ScienceQA、MMMU、MathVista 和 MMStar 等单图像和多任务基准测试中都取得了有竞争力的结果。
- 在视频基准测试方面(Video-MME、MLVU、MVBench、WorldSense 和 TempCompass), SmolVLM-2.2B 在 Video-MME (52.1%) 和 WorldSense (36.2%) 上表现出色 ,甚至优于参数量更大的模型,例如 Qwen2 VL-7B 在 WorldSense 上的得分仅为 32.4%。SmolVLM-500M 在 TempCompass (49.0%) 和 WorldSense (30.6%) 上也展现了强大的性能。
- Figure 1 将 SmolVLM-2.2B 与其他最近的小规模 VLM 进行了比较,通过 OpenCompass 基准测试性能和每张图像的 GPU 内存消耗来展示。结果表明, SmolVLM-2.2B 在 MathVista (51.5) 和 ScienceQA (90.0) 上取得了显著的性能,同时 GPU 内存使用量仅为 4.9GB VRAM ,远低于 Qwen2VL-2B 和 InternVL2-2B 等模型,而这些模型在性能上并没有明显的优势。
- 在效率和内存占用方面 :
- SmolVLM 在内存效率方面表现突出。 SmolVLM-256M 在单图像推理时仅需 0.8GB VRAM,SmolVLM-500M 需要 1.2GB,而 SmolVLM-2.2B 仅需 4.9GB 。这远低于 MolmoE-A1B-7B 的 27.7GB,也比 Qwen2VL-2B (13.7GB) 和 InternVL2-2B (10.5GB) 更高效。
- 即使在较大的批处理尺寸下(例如批处理尺寸为 64),SmolVLM 的内存使用量仍然在可接受的范围内。这使其非常适合在 GPU 资源受限的环境中部署,例如移动和边缘设备。
- 局限性 :
- 论文也指出,在某些需要强大语言推理能力的任务上,例如 MMMU 和 AI2D,即使是最大的 SmolVLM-2.2B (42.0% 和 70.0% ) 相较于一些更大的模型(例如 MolmoE-A1B-7B 的 42.3% 和 71.0%)仍存在差距。这表明,对于某些高度依赖语言理解和推理的基准测试,更大的语言模型骨干网络仍然至关重要。
总而言之,实验结果表明,SmolVLM 通过其精心设计的架构、tokenization 策略和数据策选择,在保持极低的内存占用的同时,在各种视觉、语言和视频理解任务上都取得了令人印象深刻的性能,重新定义了小型高效多模态模型的潜力。
更多AI相关欢迎关注微信公众号:<小窗幽记机器学习>