模型简介
模型特点
模型能力
使用案例
🚀 Idefics3
Idefics3是一个开放的多模态模型,它能够接受任意的图像和文本输入序列,并输出文本。该模型可以回答关于图像的问题、描述视觉内容、基于多张图像创作故事,或者在没有视觉输入的情况下单纯作为语言模型使用。相较于Idefics1和Idefics2,Idefics3在OCR、文档理解和视觉推理等方面的能力有了显著提升。
🚀 快速开始
本部分展示了Idefics3-8B
的生成代码片段。
import requests
import torch
from PIL import Image
from io import BytesIO
from transformers import AutoProcessor, AutoModelForVision2Seq
from transformers.image_utils import load_image
DEVICE = "cuda:0"
# Note that passing the image urls (instead of the actual pil images) to the processor is also possible
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")
image3 = load_image("https://cdn.britannica.com/68/170868-050-8DDE8263/Golden-Gate-Bridge-San-Francisco.jpg")
processor = AutoProcessor.from_pretrained("HuggingFaceM4/Idefics3-8B-Llama3")
model = AutoModelForVision2Seq.from_pretrained(
"HuggingFaceM4/Idefics3-8B-Llama3", torch_dtype=torch.bfloat16
).to(DEVICE)
# Create inputs
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 city of New York, and more specifically the Statue of Liberty."},
]
},
{
"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()}
# Generate
generated_ids = model.generate(**inputs, max_new_tokens=500)
generated_texts = processor.batch_decode(generated_ids, skip_special_tokens=True)
print(generated_texts)
文本生成推理
TODO.
✨ 主要特性
- 支持任意的图像和文本输入序列,输出文本。
- 可用于图像描述、视觉问答等多模态任务。
- 相较于Idefics1和Idefics2,在OCR、文档理解和视觉推理等方面能力显著提升。
📚 详细文档
模型概述
属性 | 详情 |
---|---|
开发者 | Hugging Face |
模型类型 | 多模态模型(图像 + 文本) |
语言(NLP) | 英文 |
许可证 | Apache 2.0 |
父模型 | google/siglip-so400m-patch14-384 和 meta-llama/Meta-Llama-3.1-8B-Instruct |
更多信息资源 | - Idefics1论文:OBELICS: An Open Web-Scale Filtered Dataset of Interleaved Image-Text Documents - Idefics2论文:What matters when building vision-language models? - Idefics3论文:Building and better understanding vision-language models: insights and future directions |
用途
Idefics3-8B
可用于多模态(图像 + 文本)任务的推理,输入由文本查询和一张(或多张)图像组成,文本和图像可以任意交错。这些任务包括图像描述、视觉问答等,但该模型不支持图像生成。
Idefics3-8B的后训练仅涉及有监督的微调阶段,没有进行基于人类反馈的强化学习(RLHF)对齐。因此,模型可能会给出简短的回答,或者需要多次提示才能完全满足用户的请求。在助手的回复前添加前缀,如“让我们逐步解决这个问题”,已被证明可以有效影响生成的输出。
若要在特定任务上微调Idefics3-8B
,我们提供了一个微调教程。其他用于Idefics2微调的资源(可轻松适配Idefics3):
模型优化
精度选择
如果你的GPU支持,我们首先建议以半精度(torch.float16
或 torch.bfloat16
)加载(并运行推理)模型。
model = AutoModelForVision2Seq.from_pretrained(
"HuggingFaceM4/Idefics3-8B-Llama3",
+ torch_dtype=torch.bfloat16,
).to(DEVICE)
视觉编码器效率
在初始化处理器(AutoProcessor.from_pretrained
)时,你可以通过添加 size= {"longest_edge": N*364}
来选择图像将被重新缩放的默认分辨率,其中 N
是你期望的值。在实践中,N = 4
效果最佳(这是默认值),但对于非常大的图像,传递 N = 5
可能会更合适。这将影响传递给语言模型的视觉标记数量。如果你受到GPU内存的限制,可以减小 N
的值,例如选择 N = 3
或 N = 2
,特别是对于低分辨率的图像。
使用Flash-attention 2加速生成
点击展开。
首先,确保安装了 flash-attn
。有关包的安装,请参考Flash Attention的原始仓库。只需将上述代码片段修改为:
model = AutoModelForVision2Seq.from_pretrained(
"HuggingFaceM4/Idefics3-8B-Llama3",
+ torch_dtype=torch.bfloat16,
+ _attn_implementation="flash_attention_2",
).to(DEVICE)
滥用和超出范围的使用
在高风险场景中使用该模型超出了其适用范围。该模型并非为关键决策而设计,也不适用于对个人生计或福祉有重大影响的用途。模型输出的内容看似事实,但可能并不正确。超出范围的使用包括:
- 用于评估或评分个人,如用于就业、教育或信用评估。
- 将模型用于关键的自动决策、生成事实性内容、创建可靠的摘要或生成必须正确的预测。
故意使用该模型造成伤害、侵犯人权或进行其他恶意活动,属于对该模型的滥用。这包括:
- 生成垃圾邮件。
- 传播虚假信息和进行影响操作。
- 诋毁和诽谤。
- 骚扰和虐待。
- 欺骗。
- 未经同意的冒充和模仿。
- 未经同意的监视。
🔧 技术细节
Idefics3相较于Idefics2有了很大的改进,特别是在文档理解任务上。它为各种特定用例的微调提供了坚实的基础。
模型 | MMMU (验证集) |
MathVista (测试集) |
MMStar (验证集) |
DocVQA (测试集) |
TextVQA (验证集) |
---|---|---|---|---|---|
Idefics2-8B | 45.2 | 52.2 | 49.5 | 74.0 | 73.0 |
Idefics3-8B | 46.6 | 58.4 | 55.9 | 87.7 | 74.9 |
与Idefics2相比,Idefics3有以下几点变化:
- 我们使用169个视觉标记来编码大小为364x364的图像。每个图像被分割成多个大小最大为364x364的子图像,然后分别进行编码。
- 对于微调数据集,我们扩展了The Cauldron,并添加了几个数据集,包括Docmatix。我们将尽快把这些数据集推送到The Cauldron的同一仓库(待办事项)。
关于模型训练的更多细节,请参考我们的技术报告。
📄 许可证
该模型基于两个预训练模型构建:google/siglip-so400m-patch14-384 和 meta-llama/Meta-Llama-3.1-8B-Instruct。我们以Apache 2.0许可证发布Idefics3的检查点。
引用
BibTeX:
@misc{laurençon2024building,
title={Building and better understanding vision-language models: insights and future directions.},
author={Hugo Laurençon and Andrés Marafioti and Victor Sanh and Léo Tronchon},
year={2024},
eprint={2408.12637},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
致谢
感谢@andito和@amyeroberts在集成到Transformers方面提供的帮助。








