Project Icon

Otter

基于MIMIC-IT数据集和OpenFlamingo的多模态模型

该项目结合了OpenFlamingo模型和MIMIC-IT数据集进行多模态指令调优,拥有280万条指令-响应对,支持图像和视频内容的精确理解与互动。该项目还包括OtterHD模型,提升高分辨率视觉输入的细粒度解释,并推出MagnifierBench评估基准测试模型的微小物体识别能力。公开的代码可用于训练和预训练,并支持GPT4V的评估和Flamingo架构的多任务处理。


Twitter Hits litellm

项目鸣谢 | Otter 论文 | OtterHD 论文 | MIMIC-IT 论文

检查点:

针对中国大陆用户: Open in OpenXLab | Open in OpenXLab

免责声明: 代码可能并非完美优化和重构,但所有开源代码均经过测试并可运行,因为我们也使用这些代码来支持我们的研究。如果有任何问题,请随时提出 issue。我们热切期望接收到改进代码质量的建议和 PR。

🦾 更新

[2023-11]: 支持 GPT4V 在 8 个基准上的评估;宣布 OtterHD-8B,是从 Fuyu-8B 改进而来的。详情请查看 OtterHD

  1. 🦦 新增了 OtterHD,其多模态在 Fuyu-8B 上进行了微调,以便进行高分辨率视觉输入的细粒度解释 且无需显式的视觉编码器模块。所有图像块都会进行线性变换,并与文本标记一起处理。这是非常创新和优雅的探索。我们对此很感兴趣,并在这条道路上进行了开源,我们开源了 Fuyu-8B 的微调脚本,并使用 Flash-Attention-2 将训练吞吐量提高了 4-5 倍。请尝试我们的微调脚本 OtterHD
  2. 🔍 新增了 MagnifierBench,这是一个评估基准,旨在评估模型是否可识别微小物体(1%图像大小)的信息及其空间关系。
  3. 改进了 预训练 | SFT | RLHF 的管道,并使用 (部分) 当前领先的 LMMs。
    1. 模型: Otter | OpenFlamingo | Idefics | Fuyu
    2. 训练数据集接口: (预训练) MMC4 | LAION2B | CC3M | CC12M, (SFT) MIMIC-IT | M3IT | LLAVAR | LRV | SVIT...
      • 我们测试了上述数据集在 OpenFlamingo 和 Otter 上的预训练和指令微调。我们还在 Idefics 和 Fuyu 上测试了这些数据集的指令微调。我们将逐步开源培训脚本。
    3. 基准接口: MagnifierBench/MMBench/MM-VET/MathVista/POPE/MME/SicenceQA/SeedBench。可以一键运行它们,详情请参见 基准
        datasets:
        - name: magnifierbench
            split: test
            prompt: Answer with the option's letter from the given choices directly.
            api_key: [Your API Key] # GPT4 或 GPT3.5 用于评估答案和真实答案。
            debug: true # 设置 debug=true 将会在日志文件中保存模型回应。
        - name: mme
            split: test
            debug: true
        - name: mmbench
            split: test
            debug: true
    
        models:
        - name: gpt4v
            api_key: [Your API Key] #调用 GPT4V 模型。
    
    1. 代码重构使用集成 YAML 文件组织多个数据集组,详情请见 管理 MIMIC-IT 格式的数据集。例如,
        IMAGE_TEXT: # 组名可以是 [IMAGE_TEXT, TEXT_ONLY, IMAGE_TEXT_IN_CONTEXT]
            LADD: # 数据集名称可以自定义
                mimicit_path: azure_storage/json/LA/LADD_instructions.json # 指令 json 文件路径
                images_path: azure_storage/Parquets/LA.parquet # 图像 parquet 文件路径
                num_samples: -1 # 使用样本数,-1 代表使用所有样本,如果未设置,默认为 -1。
            M3IT_CAPTIONING:
                mimicit_path: azure_storage/json/M3IT/captioning/coco/coco_instructions.json
                images_path: azure_storage/Parquets/coco.parquet
                num_samples: 20000
    
    此更改较大,可能会导致之前的代码无法运行,请检查详情。

[2023-08]

  1. 增加了支持使用 Azure、Anthropic、Palm、Cohere 模型与 Syphus 管道进行 Self-Instruct,<<使用>>信息请修改此行为您选择的模型,并在环境中设置 API 密钥。详情请参见 LiteLLM

[2023-07]: 宣布 MIMIC-IT 数据集用于多段插图文/视频指令调优。

  1. 🤗 请访问 MIMIC-IT 在 Huggingface 进行数据集查询。
  2. 🥚 更新 Eggs 部分,用于下载 MIMIC-IT 数据集。
  3. 🥃 若您希望为您的工作场景(如卫星图像或有趣的视频)开发 Otter,请与我们联系。我们致力于支持和协助 Otter 的多样化应用。OpenFlamingo 和 Otter 是强大的模型,具备 Flamingo 的卓越设计架构,可接受多幅图片/视频或其他模态输入。让我们一起构建更多有趣的模型。

[2023-06]

  1. 🧨 下载 MIMIC-IT 数据集。有关数据集导航的更多详情,请参见 MIMIC-IT 数据集 README
  2. 🏎️ 本地运行 Otter。您可以在本地运行我们至少需要 16G GPU 内存的模型,用于图像/视频标注、描述以及有害内容识别等任务。我们修复了一个视频推断的 Bug,其中 frame tensors 错误地扩展到了错误的 vision_x

    请确保正确调整 sys.path.append("../..") 以访问 otter.modeling_otter 以启动模型。

  3. 🤗 请查阅我们详细介绍 MIMIC-IT 的 论文。介绍 MIMIC-IT,这也是第一个拥有 2.8M 指令的多模态上下文指令调优数据集!从一般场景理解到细微差别的识别,再到增强 AR 头戴设备的自我中心观的理解,我们的 MIMIC-IT 数据集应有尽有。

🦦 为什么选择上下文指令调优?

大型语言模型(LLM)已展示出作为少/零样本学习者在众多任务中具备的杰出通用能力,这得益于它们在大量文本数据上的预训练。在这些 LLM 中,GPT-3 突显出其强大的能力。此外,GPT-3 的变体,即 InstructGPT 和 ChatGPT,已证明其能够解释自然语言指令以执行复杂的现实任务,这要归功于指令调优。

受 Flamingo 模型上游交错格式预训练的启发,我们推出了 🦦 Otter,一个基于 OpenFlamingo(由 DeepMind 开源的 Flamingo 模型)的多模态模型。我们在我们提出的多模态上下文指令调优MIMIC-IT)数据集上对 Otter 进行了上下文指令调优。Otter 在图像和视频方面展示了改进的指令跟随和上下文学习能力。

🗄 MIMIC-IT 数据集详情

MIMIC-IT 实现了可以回答“嘿,你觉得我把钥匙放在桌子上了吗?”这种问题的自我中心视觉助手模型。利用 MIMIC-IT 的力量来释放您的 AI 驱动视觉助手的全部潜力,并将您的互动视觉语言任务提升到新高度。

我们还引入了 Syphus,一个自动生成多语言高质量指令-响应对的管道。基于 LLaVA 提出的框架,我们利用 ChatGPT 生成基于视觉内容的指令-响应对。为了保证生成的指令-响应对的质量,我们的管道使用了系统消息、视觉注释和上下文示例作为 ChatGPT 的提示。

更多详情,请查看 MIMIC-IT 数据集

🤖 Otter 模型详情

Otter 旨在支持基于 OpenFlamingo 模型的多模态上下文指令调优,涉及将语言模型置于相应的媒介上,例如对应于标题或指令-响应对的图像。 我们在 MIMIC-IT 数据集上训练 Otter,约有 280 万对上下文指令-响应对,这些对被构造成一个连贯的模板以促进各种任务。Otter 支持视频输入(帧的排列与原始 Flamingo 的实现相同)和多图像输入作为上下文示例,这是第一个多模态指令调整模型

以下模板包含图像、用户指令和模型生成的响应,利用 UserGPT 角色标签来实现用户助手的无缝互动。

prompt = f"<image>User: {instruction} GPT:<answer> {response}<endofchunk>"

在 MIMIC-IT 数据集上训练 Otter 模型使其能够获得不同的能力,通过 LA 和 SD 任务展示出来。在 LA 任务中训练的模型展示了出色的场景理解、推理能力和多轮对话能力。

# 多轮对话
prompt = f"<image>User: {first_instruction} GPT:<answer> {first_response}<endofchunk>User: {second_instruction} GPT:<answer>"

关于组织视觉-语言上下文示例的概念,我们在此展示了 Otter 模型在 LA-T2T 任务训练后获得的遵循上下文指令的能力。组织的输入数据格式如下:

# 含类似指令的多个上下文示例
prompt = f"<image>User:{ict_first_instruction} GPT: <answer>{ict_first_response}<|endofchunk|><image>User:{ict_second_instruction} GPT: <answer>{ict_second_response}<|endofchunk|><image>User:{query_instruction} GPT: <answer>"

有关更多详细信息,请参阅我们的论文附录中的其他任务。

🗂️ 环境

  1. 比较 nvidia-smi 和 nvcc --version 返回的 cuda 版本,它们需要匹配。或者至少 nvcc --version 获取的版本应该小于或等于 nvidia-smi 获取的版本。
  2. 安装与 cuda 版本匹配的 pytorch。(例如 cuda 11.7 torch 2.0.0)。我们已成功在 cuda 11.1 torch 1.10.1 和 cuda 11.7 torch 2.0.0 上运行此代码。你可以参考 PyTorch 的文档, 最新以前
  3. 你可以通过 conda env create -f environment.yml 安装,特别是要确保 transformers>=4.28.0, accelerate>=0.18.0

配置环境后,你可以只用几行代码将 🦩 Flamingo 模型 / 🦦 Otter 模型作为 🤗 Hugging Face 模型 使用!一键点击,模型配置/权重将自动下载。请参阅 Huggingface Otter/Flamingo 以了解详情。

☄️ 训练

Otter 基于 OpenFlamingo 进行训练。你可能需要使用在 luodian/OTTER-9B-INITluodian/OTTER-MPT7B-Init 上转换的权重。它们分别从 OpenFlamingo-LLaMA7B-v1OpenFlamingo-MPT7B-v2 转换而来,我们为 Otter 的下游指令调整添加了 <answer> 标记。

你也可以使用任何训练过的 Otter 权重在我们的基础上开始训练,请参阅 Otter Weights 以了解更多详情。可以参考 MIMIC-IT 以准备图像/指令/训练 json 文件。

export PYTHONPATH=.
RUN_NAME="Otter_MPT7B"
GPU=8
WORKERS=$((${GPU}*2))

echo "Using ${GPU} GPUs and ${WORKERS} workers"
echo "Running ${RUN_NAME}"

accelerate launch --config_file=./pipeline/accelerate_configs/accelerate_config_zero3.yaml \
    --num_processes=${GPU} \
    pipeline/train/instruction_following.py \
    --pretrained_model_name_or_path=luodian/OTTER-MPT7B-Init \
    --model_name=otter \
    --instruction_format=simple \
    --training_data_yaml=./shared_scripts/Demo_Data.yaml \
    --batch_size=8 \
    --num_epochs=3 \
    --report_to_wandb \
    --wandb_entity=ntu-slab \
    --external_save_dir=./checkpoints \
    --run_name=${RUN_NAME} \
    --wandb_project=Otter_MPTV \
    --workers=${WORKERS} \
    --lr_scheduler=cosine \
    --learning_rate=2e-5 \
    --warmup_steps_ratio=0.01 \
    --save_hf_model \
    --max_seq_len=1024 \

📑 引用

如果你觉得此仓库有用,请考虑引用:

@article{li2023otter,
  title={Otter: A Multi-Modal Model with In-Context Instruction Tuning},
  author={Li, Bo and Zhang, Yuanhan and Chen, Liangyu and Wang, Jinghao and Yang, Jingkang and Liu, Ziwei},
  journal={arXiv preprint arXiv:2305.03726},
  year={2023}
}

@article{li2023mimicit,
    title={MIMIC-IT: Multi-Modal In-Context Instruction Tuning},
    author={Bo Li and Yuanhan Zhang and Liangyu Chen and Jinghao Wang and Fanyi Pu and Jingkang Yang and Chunyuan Li and Ziwei Liu},
    year={2023},
    eprint={2306.05425},
    archivePrefix={arXiv},
    primaryClass={cs.CV}
}

👨‍🏫 致谢

感谢 Jack Hessel 的建议和支持,以及 OpenFlamingo 团队对开源社区的巨大贡献。

巨大的赞誉献给 FlamingoOpenFlamingo 团队在这一伟大架构上的杰出工作。

📝 相关项目

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号