SmolVLM 版本說明 / 新功能
Hugging Face 已發布 SmolVLM,一個設計用於效率、速度和本地部署的 2B 參數視覺語言模型(VLM)。該模型完全開源,所有檢查點、資料集、訓練配方和工具均根據 Apache 2.0 授權發布。
模型變體與生態系統
SmolVLM 提供三種不同的版本以支援不同的使用案例:
- SmolVLM-Base:設計用於下游微調。
- SmolVLM-Synthetic:一種在合成資料上微調的變體。
- SmolVLM-Instruct:一個已進行指令調整的版本,可直接用於互動式終端使用者應用。
生態系統包括與 transformers 庫的整合、一個受監督微調腳本以及一個公開示範。該模型是使用開源資料集進行訓練的,具體為 The Cauldron 和 Docmatix。
技術架構
SmolVLM 的架構基於 Idefics3,但引入了若干優化以降低記憶體和運算需求:
- Language Backbone:以 SmolLM2 1.7B 取代 Llama 3.1 8B。
- Visual Compression:採用像素洗牌策略,將貼合的視覺資訊壓縮 9x(與 Idefics3 的 4x 相比)。
- Image Patching:使用 384x384 的貼圖(為像素洗牌策略可被 3 整除),取代 364x364。
- Vision Backbone:使用經形狀優化的 SigLIP,具有 384x384 的貼圖和 14x14 的內部貼圖。
效能與效率
基準測試
SmolVLM 在多個多模態基準測試上展現出競爭力的效能,同時相比其他 2B 級模型保持顯著較低的記憶體佔用:
| 模型 | MMMU (val) | MathVista (testmini) | MMStar (val) | DocVQA (test) | TextVQA (val) | 最小 GPU RAM (GB) |
|---|---|---|---|---|---|---|
| SmolVLM | 38.8 | 44.6 | 42.1 | 81.6 | 72.7 | 5.02 |
| Qwen2-VL 2B | 41.1 | 47.8 | 47.5 | 90.1 | 79.7 | 13.70 |
| InternVL2 2B | 34.3 | 46.3 | 49.8 | 86.9 | 73.4 | 10.52 |
| PaliGemma 3B | 34.9 | 28.7 | 48.3 | 32.2 | 56.0 | 6.72 |
| moondream2 | 32.4 | 24.3 | 40.3 | 70.5 | 65.2 | 3.87 |
記憶體與吞吐量
SmolVLM 在圖像編碼方面高效,將每個 384x384 的圖像貼圖僅轉換為 81 個 token。對於單張圖像和提示,SmolVLM 大約使用 1.2k 個 token,而 Qwen2-VL 則使用 16k 個 token。這種效率帶來:
- 減少 RAM:在
transformers中現有的 VLM 套件中記憶體使用量最低。 - 更高吞吐量:預填充吞吐量比 Qwen2-VL 快 3.3 到 4.5 倍,生成吞吐量快 7.5 到 16 倍。
影片分析
SmolVLM 可透過擷取最多 50 個均勻取樣的幀來進行基本的影片分析。在 CinePile 基準測試的測試中,它獲得了 27.14% 的分數,使其效能位於 InternVL2 (2B) 與 Video LlaVa (7B) 之間。
訓練與微調
上下文擴展
為了支援多張圖像和長序列,SmolLM2 的預訓練上下文視窗被擴展至 16k 個 token。這是透過將 RoPE 基礎值從 10k 提升至 273k,並對長上下文(來自 Dolma 的書籍和來自 The Stack 的程式碼)與短上下文(FineWeb-Edu、DCLM 和一個數據集)的混合資料進行微調來實現的。
檢查點選擇
最佳檢查點是透過在 MMMU、MMStar、DocVQA、TextVQA、MathVista 和 AI2D 上的加權指標來選擇的。團隊指出,儘管整體效能通常會隨著更多訓練而提升,但 DocVQA 的效能隨時間推移往往會下降。
自訂
SmolVLM 可使用 transformers 和 TRL 庫進行微調。提供的筆記本展示了在 VQAv2 資料集上使用 LoRA 或 QLoRA 進行微調。透過 8 位載入和梯度檢查點,該模型可在消費者 GPU(例如 L4)上進行微調,大約需要 16 GB 的 VRAM。