Infimm Zephyr
模型简介
模型特点
模型能力
使用案例
🚀 InfiMM
InfiMM受Flamingo架构启发,凭借独特的训练数据和多样化的大语言模型(LLM)脱颖而出。这种方法使InfiMM在保留Flamingo核心优势的同时,还具备了更强的能力。作为该领域首个开源的变体,InfiMM在社区协作的推动下,在可访问性和适应性方面表现卓越。它不仅仅是对Flamingo的模仿,更是视觉语言处理领域的一项创新。
本模型是对DeepMind论文 “Flamingo: A Large-scale Visual Language Model for Multimodal Understanding” 中成果的又一次尝试。与之前的开源尝试(OpenFlamingo 和 IDEFIC)相比,InfiMM提供了更灵活的模型,适用于广泛的应用场景。特别是,InfiMM将最新的LLM模型集成到视觉语言模型(VLM)领域,揭示了不同规模和架构的LLM的影响。
请注意,InfiMM目前处于测试阶段,我们正在不断努力改进它。
🚀 快速开始
使用以下代码开始使用基础模型:
import torch
from transformers import AutoModelForCausalLM, AutoProcessor
processor = AutoProcessor.from_pretrained("Infi-MM/infimm-zephyr", trust_remote_code=True)
prompts = [
{
"role": "user",
"content": [
{"image": "assets/infimm-logo.webp"},
"Please explain this image to me.",
],
}
]
inputs = processor(prompts)
# use bf16
model = AutoModelForCausalLM.from_pretrained(
"Infi-MM/infimm-zephyr",
local_files_only=True,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
).eval()
inputs = inputs.to(model.device)
inputs["batch_images"] = inputs["batch_images"].to(torch.bfloat16)
generated_ids = model.generate(
**inputs,
min_generation_length=0,
max_generation_length=256,
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)
print(generated_text)
✨ 主要特性
- 受Flamingo架构启发,结合独特训练数据和多样化LLM,保留核心优势并增强能力。
- 作为开源变体,具备良好的可访问性和适应性,由社区协作驱动。
- 集成最新LLM模型到VLM领域,揭示不同规模和架构LLM的影响。
📦 安装指南
文档未提及安装步骤,故跳过此章节。
💻 使用示例
基础用法
import torch
from transformers import AutoModelForCausalLM, AutoProcessor
processor = AutoProcessor.from_pretrained("Infi-MM/infimm-zephyr", trust_remote_code=True)
prompts = [
{
"role": "user",
"content": [
{"image": "assets/infimm-logo.webp"},
"Please explain this image to me.",
],
}
]
inputs = processor(prompts)
# use bf16
model = AutoModelForCausalLM.from_pretrained(
"Infi-MM/infimm-zephyr",
local_files_only=True,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
).eval()
inputs = inputs.to(model.device)
inputs["batch_images"] = inputs["batch_images"].to(torch.bfloat16)
generated_ids = model.generate(
**inputs,
min_generation_length=0,
max_generation_length=256,
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)
print(generated_text)
高级用法
文档未提及高级用法代码示例,故跳过此部分。
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发者 | 中国科学院自动化研究所和字节跳动 |
模型类型 | 视觉语言模型(VLM) |
语言 | 英语 |
大语言模型(LLMs) | Zephyr、LLaMA2 - 13B、Vicuna - 13B |
视觉模型 | EVA CLIP |
自然语言处理语言 | 英语 |
许可证 | 见 许可证部分 |
模型家族
模型 | 大语言模型(LLM) | 视觉编码器 | 是否进行指令微调(IFT) |
---|---|---|---|
InfiMM - Zephyr | Zehpyr - 7B - beta | ViT - L - 336 | 否 |
InfiMM - Llama - 13B | Llama2 - 13B | ViT - G - 224 | 否 |
InfiMM - Vicuna - 13B | Vicuna - 13B | ViT - E - 224 | 否 |
InfiMM - Zephyr - Chat | Zehpyr - 7B - beta | ViT - L - 336 | 是 |
InfiMM - Llama - 13B - Chat | Llama2 - 13B | ViT - G - 224 | 是 |
InfiMM - Vicuna - 13B - Chat | Vicuna - 13B | ViT - E - 224 | 是 |
训练详情
我们采用三个阶段来训练模型:预训练(PT)、多任务训练(MTT)和指令微调(IFT)。各阶段的详细配置如下:
预训练(PT)
我们遵循与 IDEFICS 类似的训练流程。 模型在图像 - 文本对和非结构化多模态网络文档的混合数据上进行训练。所有数据均来自公共来源。由于许多图像URL链接已过期,我们只能下载部分样本。我们过滤了低质量数据,以下是我们使用的最终数据:
数据源 | 数据类型 | 源数据中的标记数量 | 源数据中的图像数量 | 样本数量 | 训练轮数 |
---|---|---|---|---|---|
OBELICS | 非结构化多模态网络文档 | - | - | 101M | 1 |
MMC4 | 非结构化多模态网络文档 | - | - | 53M | 1 |
LAION | 图像 - 文本对 | - | 115M | 115M | 1 |
COYO | 图像 - 文本对 | - | 238M | 238M | 1 |
LAION - COCO | 图像 - 文本对 | - | 140M | 140M | 1 |
PMD* | 图像 - 文本对 | - | 20M | 20M | 1 |
* PMD仅用于具有13B LLM的模型,不用于7B Zephyr模型。
在交错图像文本样本的预训练过程中,我们应用了掩码交叉注意力,但没有严格遵循Flamingo的交替注意力机制(交替关注图像与其前一个或后一个文本的概率为0.5)。
我们使用以下超参数:
类别 | 参数 | 值 |
---|---|---|
感知器重采样器 | 层数 | 6 |
潜在变量数量 | 64 | |
头数 | 16 | |
重采样器头维度 | 96 | |
训练 | 序列长度 | 384 (13B) / 792 (7B) |
有效批量大小 | 40 * 128 | |
每个样本的最大图像数 | 6 | |
权重衰减 | 0.1 | |
优化器 | Adam(0.9, 0.999) | |
梯度累积步数 | 2 | |
学习率 | 初始最大值 | 1e - 4 |
衰减调度 | 常量 | |
热身步数率 | 0.005 | |
大规模优化 | 梯度检查点 | 否 |
精度 | bf16 | |
ZeRO优化 | 阶段2 |
多任务训练(MTT)
我们使用 mix_cap_vqa 表示来自COCO caption、TextCap、VizWiz Caption、VQAv2、OKVQA、VizWiz VQA、TextVQA、OCRVQA、STVQA、DocVQA、GQA和ScienceQA - image的混合训练集。对于图像描述任务,我们在问题前添加 “Please describe the image.” 等前缀;对于问答任务,我们添加 “Answer the question using a single word or phrase.”。具体来说,对于VizWiz VQA,我们使用 “When the provided information is insufficient, respond with 'Unanswerable'. Answer the question using a single word or phrase.”;对于ScienceQA - image,我们使用 “Answer with the option's letter from the given choices directly.”。
指令微调(IFT)
在指令微调阶段,我们使用最近发布的 LLaVA - MIX - 665k。
我们使用以下超参数:
类别 | 参数 | 值 |
---|---|---|
感知器重采样器 | 层数 | 6 |
潜在变量数量 | 64 | |
头数 | 16 | |
重采样器头维度 | 96 | |
训练 | 序列长度 | 384 (13B) / 792 (7B) |
有效批量大小 | 64 | |
每个样本的最大图像数 | 6 | |
权重衰减 | 0.1 | |
优化器 | Adam(0.9, 0.999) | |
梯度累积步数 | 2 | |
学习率 | 初始最大值 | 1e - 5 |
衰减调度 | 常量 | |
热身步数率 | 0.005 | |
大规模优化 | 梯度检查点 | 否 |
精度 | bf16 | |
ZeRO优化 | 阶段2 |
在IFT过程中,与预训练类似,对于基于聊天的LLM(Vicuna和Zephyr),我们冻结ViT和LLM;对于Llama模型,我们在IFT阶段保持LLM可训练。我们还应用聊天模板来处理训练样本。
评估
预训练评估
我们在以下下游任务上评估预训练模型:图像描述和视觉问答(VQA)。我们还将结果与 IDEFICS 进行了比较。
模型 | 样本数 | COCO CIDEr | Flickr30K CIDEr | VQA v2 准确率 | TextVQA 准确率 | OK - VQA 准确率 |
---|---|---|---|---|---|---|
IDEFICS - 9B | 0 | 46 | 27.3 | 50.9 | 25.9 | 38.4 |
4 | 93 | 59.7 | 55.4 | 27.6 | 45.5 | |
IDEFICS - 80B | 0 | 91.8 | 53.7 | 60 | 30.9 | 45.2 |
4 | 110.3 | 73.7 | 64.6 | 34.4 | 52.4 | |
InfiMM - Zephyr - 7B | 0 | 78.8 | 60.7 | 33.7 | 15.2 | 17.1 |
4 | 108.6 | 71.9 | 59.1 | 34.3 | 50.5 | |
InfiMM - Llama2 - 13B | 0 | 85.4 | 54.6 | 51.6 | 24.2 | 26.4 |
4 | 125.2 | 87.1 | 66.1 | 38.2 | 55.5 | |
InfiMM - Vicuna13B | 0 | 69.6 | 49.6 | 60.4 | 32.8 | 49.2 |
4 | 118.1 | 81.4 | 64.2 | 38.4 | 53.7 |
IFT评估
在分析中,我们主要关注两个评估多模态大语言模型(MLLMs)的基准:1)多项选择题问答(QA)和2)开放式评估。我们发现,视觉问答(VQA)和Text - VQA等任务的评估指标对精确答案匹配过于敏感,这种方法可能会产生误导,特别是当模型提供同义但技术上正确的响应时。因此,为了更准确地评估,我们在比较中省略了这些指标。评估结果如下表所示。
模型 | ScienceQA - 图像 | MME | MM - VET | InfiMM - 评估 | MMbench | MMMU - 验证集 | MMMU - 测试集 |
---|---|---|---|---|---|---|---|
Otter - 9B | - | 1292/306 | 24.6 | 32.2 | - | 22.69 | - |
IDEFICS - 9B - Instruct | 60.6 | -/- | - | - | - | 24.53 | - |
InfiMM - Zephyr - 7B | 71.1 | P: 1406 C:327 |
32.8 | 36.0 | 59.7 | 39.4 | 35.5 |
InfiMM - Llama - 13b | 73.0 | P: 1444.5 C: 337.6 |
39.2 | 0.4559/0.414 | 66.4 | 39.1 | 35.2 |
InfiMM - Vicuna - 13B | 74.0 | P: 1461.2 C: 323.5 |
36.0 | 40.0 | 66.7 | 37.6 | 34.6 |
排行榜详情

MMMU - 验证集分割结果

MMMU - 测试集分割结果
🔧 技术细节
文档中关于技术细节的描述分散在训练详情和评估部分,已在详细文档中体现,故此处不再单独列出。
📄 许可证

本项目采用 CC BY - NC 4.0 许可证。
图像版权归原作者所有。
更多信息请见 LICENSE。
引用
@misc{InfiMM,
title={InfiMM: Advancing Multimodal Understanding from Flamingo's Legacy through Diverse LLM Integration},
author={InfiMM Team},
url={https://huggingface.co/Infi-MM/},
year={2024}
}
联系我们
如果您有任何问题,请随时通过电子邮件 infimmbytedance@gmail.com 与我们联系。








