SmolVLM 体积再创新低——隆重推出 2.5 亿和 5 亿参数模型!
TLDR (太长不看)
我们激动地宣布 SmolVLM 家族迎来两位新成员:SmolVLM-256M 和 SmolVLM-500M。没错,仅有 2.56 亿参数,使其成为全球最小的视觉语言模型!
我们基于从 SmolVLM 2B 中学到的一切,同时专注于效率、数据混合和新的设计权衡。我们很高兴能推出这样一对模型,它们在极小的体量下依然保持了强大的多模态性能。
本次发布包含四个 checkpoints:两个基础模型和两个指令微调模型,参数量分别为 2.56 亿和 5 亿。这些模型可直接加载到 transformers、MLX 和 ONNX 中,我们还提供了 transformers 和 WebGPU (使用 ONNX) 的演示。您可以在此处找到本次发布的所有模型和演示。

目录
概览
- SmolVLM-256M – 全球最小的 VLM!
- SmolVLM-500M – 一个拥有 5 亿参数的同系列模型,性能显著提升,同时保持超轻量级。
- 新的视觉编码器选择 – 我们比较了 SigLIP 400M SO (用于 SmolVLM 2B 和许多其他大型 VLM) 与一个更小的 SigLIP base patch-16/512。令人惊讶的是,更大的编码器仅带来了微不足道的性能提升,因此在这些新版本中我们选择了 9300 万参数的 SigLIP base patch-16/512。
- 更高的图像分辨率 – 我们的小型视觉编码器能处理更高分辨率的图像 (灵感来自苹果的 VLM 研究和谷歌的 PaliGemma)。这以极小的开销带来了更清晰的图像理解能力。
- 训练优化 – 一个新的分词技巧显著提升了真实世界基准测试的成绩,尽管它在纸面上让训练损失看起来更差了。
我们现在正努力让模型与 SmolLM2 家族 (1.35 亿、3.6 亿、17 亿参数) 保持一致,这样您就有一套完整的更小型的 LLM + VLM 组合可供使用。
为何要追求更小的模型?
当我们发布 SmolVLM 2B 时,社区反响热烈:模型非常轻量、开源且宽松许可,并且易于集成到现有工作流程中。但我们希望为那些在受限设备、消费级笔记本电脑,甚至可能在浏览器中进行推理的用户,将这种方法推向极致。这就是我们新的 2.56 亿和 5 亿参数模型的由来。另一方面,对于需要处理海量数据的人来说,这些模型的运行成本仅为 2B 模型的一小部分。
在过去的一年里,我们训练了两个 800 亿参数的 VLM,并将它们缩小到 80 亿。然后,对于 SmolVLM,我们接受了将其缩小到 20 亿的挑战。我们学到的是,我们可以将极限推得更远!我们很高兴地展示,在 2.56 亿和 5 亿参数下,我们仍然可以获得出色的性能。我们新的 2.56 亿参数模型是有史以来发布的最小 VLM,但其性能甚至超过了我们仅在 17 个月前发布的 Idefics 80B 模型。

认识 2.56 亿参数的“小巨人”
该模型仅有 2.56 亿参数,是迄今为止最小的 VLM。尽管体积小,但它的能力却出人意料地强大。它在许多多模态任务上都表现出色,包括
- 图像/视频描述 (Captioning):描述图像或短视频。
- 文档问答 (Document Q&A):回答关于 PDF 或扫描文本的问题。
- 基础视觉推理:回答关于图表或示意图的问题。
更进一步:5 亿参数模型
如果您需要更高的性能空间,同时仍希望保持低内存占用,SmolVLM-500M 是我们推出的 5 亿参数折衷方案。它比之前的 2B 版本小得多,但在 DocVQA 和 MMMU 等任务上的得分更接近于更大的模型。我们还发现这个模型对提示词 (prompt) 的鲁棒性更强,这使得它开箱即用,更适合生产环境。当然,两个模型在微调后都表现出色。
我们在下图中可视化了不同批量大小下的吞吐量增益。以下数据是在 A100 上运行的吞吐量基准测试。

自 SmolVLM 2B 以来有何变化?
1. 视觉编码器选择 之前,我们使用了标准的 SigLIP 400M SO 视觉骨干网络,这与许多 VLM 架构中的相同。对于这些更小的模型,我们实验了两种设置:
- SigLIP 400M SO:容量更高,性能出色。
- SigLIP base patch-16/512 (93M):体积小得多,性能惊人地接近。
我们发现,对于我们的 2.56 亿和 5 亿参数模型来说,性能差距不足以证明使用更重的编码器是合理的。因此,我们决定在视觉编码器上也选择小型化。另外一个好处是,较小的编码器能以更高的分辨率处理图像,根据 苹果 和 谷歌 的研究,这通常可以在不增加参数数量的情况下带来更好的视觉理解能力。
2. 数据混合更新
与我们之前的版本类似,我们依赖于 The Cauldron 和 Docmatix,并在此基础上加入了 MathWriting。

我们调整了数据集的比例,更侧重于文档理解 (41%) 和图像描述 (14%),同时仍然保持对视觉推理、图表理解和通用指令遵循等其他关键领域的均衡关注。通过这次更新,模型建立在强大的文档理解基础上,并为后续通过微调来调整其对特定任务的理解能力敞开了大门。
3. 分词优化
我们进一步增加了像素洗牌 (pixel shuffle)!我们的新模型以每 token 4096 像素的速率对图像进行编码,而 2B 模型的速率为每 token 1820 像素。
为了进一步优化分词,我们添加了特殊 token 来更高效地表示我们的子图像分隔符。这意味着像 <row_1_col_1>
这样的字符串现在被映射为单个 token,而不是 7 个 token。我们对最多到 <row_6_col_6>
的字符串也做了同样的处理。这大大提高了模型在训练期间的稳定性和结果的质量。更多细节记录在这篇 LinkedIn 帖子中。
4. 完善 SmolLM2-SmolVLM 家族
SmolLM2 有三种尺寸:1.35 亿、3.6 亿和 17 亿。随着我们今天发布的这两款模型,我们现在有了一套完整的更小型的 LLM + VLM 组合可供使用。
更小的多模态检索模型:ColSmolVLM 256M 和 500M
我们还发现,微调和实验出奇地容易。ColBERT-like 检索模型背后的团队已经训练了 ColSmolVLM,实现了 SOTA (State-of-the-Art,最先进) 的多模态检索速度,其性能可与体积大 10 倍的模型相媲美。SmolVLM 使构建可搜索数据库更快、更便宜。我们认为 2.56 亿参数模型可以成为许多任务的优秀专用模型。请在后续步骤部分找到如何使用新的 ColSmolVLM 和 SmolVLM 模型的链接。

SmolDocling
我们与 IBM 合作,为 Docling 构建模型。他们使用 2.56 亿参数模型的早期结果令人印象深刻。以下是他们与我们分享的一些早期示例。敬请关注更多相关更新!


使用更小的 SmolVLM
新的 SmolVLM 模型开箱即用,与旧的 SmolVLM 代码兼容,因此您可以使用 transformers 和 MLX 进行推理和微调,使用 TRL 进行对齐 🚀 此外,此版本还附带 ONNX checkpoints。
像下面这样开始使用 transformers 和 SmolVLM。
import torch
from transformers import AutoProcessor, AutoModelForVision2Seq
# Initialize processor and model
processor = AutoProcessor.from_pretrained("HuggingFaceTB/SmolVLM-500M-Instruct")
model = AutoModelForVision2Seq.from_pretrained(
"HuggingFaceTB/SmolVLM-500M-Instruct",
torch_dtype=torch.bfloat16,
_attn_implementation="flash_attention_2" if DEVICE == "cuda" else "eager",
)
# Create input messages
messages = [
{
"role": "user",
"content": [
{"type": "image"},
{"type": "text", "text": "Can you describe this image?"}
]
},
]
# Preprocess
prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(text=prompt, images=[image], return_tensors="pt")
# Generate
generated_ids = model.generate(**inputs, max_new_tokens=500)
generated_texts = processor.batch_decode(
generated_ids,
skip_special_tokens=True,
)
通过运行以下 CLI 命令来使用 MLX 和 SmolVLM
python3 -m mlx_vlm.generate --model HuggingfaceTB/SmolVLM-500M-Instruct --max-tokens 400 --temp 0.0 --image https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/vlm_example.jpg --prompt "What is in this image?"

您可以试用 SmolVLM-256M-Instruct 和 SmolVLM-500M-Instruct 的 WebGPU 演示。
请在后续步骤中查找有关使用 ColSmolVLM 进行微调和多模态 RAG 的链接。
引用信息
您可以按以下方式引用我们
@article{marafioti2025smolvlm,
title={SmolVLM: Redefining small and efficient multimodal models},
author={Andrés Marafioti and Orr Zohar and Miquel Farré and Merve Noyan and Elie Bakouch and Pedro Cuenca and Cyril Zakka and Loubna Ben Allal and Anton Lozhkov and Nouamane Tazi and Vaibhav Srivastav and Joshua Lochner and Hugo Larcher and Mathieu Morlon and Lewis Tunstall and Leandro von Werra and Thomas Wolf},
journal={arXiv preprint arXiv:2504.05299},
year={2025}
}
后续步骤
- 我们期待看到您将如何使用 SmollerVLM!从此处开始。
- 在此处深入了解 SmolVLM。
- 使用 transformers 微调和 QLoRA SmolVLM
- [在 SmolVLM 上使用 TRL 进行直接偏好优化](在消费级 GPU 上使用 TRL 和直接偏好优化 (DPO) 微调 SmolVLM)
- Smol 多模态 RAG: 在 Colab 的免费 GPU 上使用 ColSmolVLM 和 SmolVLM 进行构建
我们要感谢 ViDoRe 团队训练了 ColSmolVLM:Tony Wu、Manuel Faysse,以及 Joshua Lochner 的 ONNX 转换和 WebGPU 演示,还有 Vaibhav Srivastav 对本次发布的帮助。