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 對本次釋出的幫助。