Idefics2 8B 视觉语言模型发布 – 架构、数据与性能
TL;DR
Idefics2 是由 Hugging Face 发布的 8 十亿参数开源视觉语言模型,在视觉问答和 OCR 任务上提供了业界领先的性能,并且完全兼容 🤗 Transformers,便于轻松微调。
Idefics2 概述
Idefics2 是一种通用多模态模型,接受任意序列的文本和图像并生成文本响应。它可以回答关于图像的问题、描述视觉内容、创作多图故事、从文档中提取信息以及执行基础算术。该模型在 Apache 2.0 许可证下发布,可自由使用和再分发。
技术亮点
模型规模与架构
- 参数: 8 B,相比 Idefics1(80 B)减少十倍,同时提供更优性能。
- 骨干网络: 基于 Mistral‑7B‑v0.1(语言)和 SigLIP‑SO400M‑Patch14‑384(视觉),均采用 Apache‑2.0 许可证。
- 视觉集成: 图像使用 NaViT 策略在原始分辨率(最高 980 × 980)下处理,避免固定尺寸的缩放。可选的子图像拆分(4 路)遵循 SPHINX/LLaVA‑NeXT 方法,以处理超高分辨率输入。
- 特征融合: 视觉特征经过编码后,通过学习的 Perceiver 进行池化,再通过 MLP 投影,并与文本嵌入拼接形成交错序列。这取代了 Idefics1 中的门控交叉注意力,简化了多模态交互。
训练数据
Idefics2 在一系列公开可用的数据集上进行预训练:
- 网络文档: Wikipedia 和 OBELICS 数据集(来自网络文档的图文对)。
- 图像‑标题对: Public Multimodal Dataset 和 LAION‑COCO。
- OCR 数据: PDF‑A(英文)、IDL 和 Rendered‑Text 数据集。
- 图像转代码数据: WebSight。
为了指令微调,团队汇编了 The Cauldron,一个包含 50 个手工策划的多模态指令数据集的开放集合,格式化为多轮对话。Idefics2 在 The Cauldron 以及标准的仅文本指令数据上进行微调。
性能基准
Idefics2 在 8 B 规模模型中实现了顶级表现,并可与更大规模的专有系统竞争。以下是流行多模态基准测试的关键得分(数值越高越好):
| 基准 | Idefics2(未拆分) | Idefics2(已拆分) |
|---|---|---|
| MMMU (val/test) | 43.5 / 37.9 | 43.0 / 37.7 |
| MathVista (test‑mini) | 51.6 | 51.4 |
| TextVQA (val) | 70.4 | 73.0 |
| MMBench (test) | 76.8 | 76.7 |
| VQAv2 (test‑dev) | 80.8 | 81.2 |
| DocVQA (test) | 67.3 | 74.0 |
这些结果使 Idefics2 超越了其他开源 7 B/13 B 模型,如 DeepSeek‑VL、LLaVA‑NeXT‑Mistral‑7B 和 LLaVA‑NeXT‑13B,并且接近闭源巨头如 Gemini 1.5 Pro 和 Claude 3 Haiku。
相较 Idefics1 的新能力
- 原生分辨率视觉: NaViT 风格处理最高 980 × 980 的图像,保留细节和宽高比。
- 增强 OCR: 融合了针对 OCR 的训练数据,提升了图像、图表和文档中文本的转录效果。
- 简化融合: 用 Perceiver 池化和 MLP 投影取代了门控交叉注意力,形成更简洁的架构并加快推理速度。
- 子图像拆分: 可选的 4 路拆分使得处理超大图像时不牺牲性能。
总体而言,这些升级实现了 显著的性能提升,即使模型比前代 小 10 倍。
入门指南
Idefics2 托管在 Hugging Face Hub,并在最新的 transformers 发行版中即开即用。以下 Python 代码片段演示了基本用法:
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModelForVision2Seq, load_image
DEVICE = "cuda:0"
# Load example images
image1 = load_image("https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg")
image2 = load_image("https://cdn.britannica.com/59/94459-050-DBA42467/Skyline-Chicago.jpg")
processor = AutoProcessor.from_pretrained("HuggingFaceM4/idefics2-8b")
model = AutoModelForVision2Seq.from_pretrained("HuggingFaceM4/idefics2-8b").to(DEVICE)
messages = [
{"role": "user", "content": [{"type": "image"}, {"type": "text", "text": "What do we see in this image?"}]},
{"role": "assistant", "content": [{"type": "text", "text": "In this image, we can see the Statue of Liberty in New York."}]},
{"role": "user", "content": [{"type": "image"}, {"type": "text", "text": "And how about this image?"}]},
]
prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(text=prompt, images=[image1, image2], return_tensors="pt")
inputs = {k: v.to(DEVICE) for k, v in inputs.items()}
generated_ids = model.generate(**inputs, max_new_tokens=200)
print(processor.batch_decode(generated_ids, skip_special_tokens=True)[0])
作者还提供了用于在自定义数据上微调 Idefics2 的 Colab 笔记本。
资源
- 模型卡:
idefics2-8b,idefics2-8b-base,idefics2-8b-chatty - 数据集: The Cauldron, OBELICS, WebSight
- 演示空间: Hugging Face Spaces 上的交互式试玩平台
- 论文: arXiv 预印本 2405.02246
许可证
Idefics2 权重在 Apache 2.0 许可证下发布,与底层的 Mistral‑7B 和 SigLIP 骨干网络保持一致。
对社区的影响
发布一款高性能、完全开源的 8 B 视觉语言模型,降低了多模态 AI 研究和产品开发的门槛。通过同时提供模型和精心策划的指令数据集,Hugging Face 使得快速原型设计、微调和基准测试成为可能,无需受限于更大专有系统的许可证约束。架构的简化和原生分辨率处理也为未来开源模型的高效多模态融合设立了新基准。