cambrian

cambrian

开创性视觉为中心的多模态AI模型研究

Cambrian-1是一个开源的视觉为中心的多模态AI模型项目。采用两阶段训练方法,在8B、13B和34B参数规模上达到了与闭源模型相当的性能。项目发布了Cambrian-10M指令微调数据集和CV-Bench基准测试集,为研究提供重要资源。Cambrian-1使用较少的视觉token,在多个视觉语言任务中表现出色,促进了开放式多模态AI的进步。

Cambrian-1多模态LLM视觉语言模型开源项目AI研究Github
<div align="center">

🪼 寒武纪-1<br>多模态大语言模型的完全开放、以视觉为中心的探索

<p> <img src="https://yellow-cdn.veclightyear.com/835a84d5/7e529924-ae34-4411-9cdc-57eadc964741.png" alt="Cambrian" width="500" height="auto"> </p> <a href="https://arxiv.org/abs/2406.16860" target="_blank"> <img alt="arXiv" src="https://img.shields.io/badge/arXiv-Cambrian--1-red?logo=arxiv" height="25" /> </a> <a href="https://cambrian-mllm.github.io/" target="_blank"> <img alt="网站" src="https://yellow-cdn.veclightyear.com/835a84d5/eafa1ee9-aa65-43a4-8983-d9b8e023965a.svg" height="25" /> </a> <br> <a href="https://huggingface.co/collections/nyu-visionx/cambrian-1-models-666fa7116d5420e514b0f23c" target="_blank"> <img alt="HF 模型: Cambrian-1" src="https://img.shields.io/badge/%F0%9F%A4%97%20_Model-Cambrian--1-ffc107?color=ffc107&logoColor=white" height="25" /> </a> <a href="https://huggingface.co/collections/nyu-visionx/cambrian-data-6667ce801e179b4fbe774e11" target="_blank"> <img alt="HF 数据集: Cambrian 10M" src="https://img.shields.io/badge/%F0%9F%A4%97%20_Data-Cambrian--10M-ffc107?color=ffc107&logoColor=white" height="25" /> </a> <a href="https://huggingface.co/datasets/nyu-visionx/CV-Bench" target="_blank"> <img alt="HF 数据集: CV-Bench" src="https://img.shields.io/badge/%F0%9F%A4%97%20_Benchmark-CV--Bench-ffc107?color=ffc107&logoColor=white" height="25" /> </a> <div style="font-family: charter;"> <a href="https://tsb0601.github.io/petertongsb/" target="_blank">Shengbang Tong*</a>, <a href="https://ellisbrown.github.io/" target="_blank">Ellis Brown*</a>, <a href="https://penghao-wu.github.io/" target="_blank">Penghao Wu*</a>, <br> <a href="https://sites.google.com/view/sanghyunwoo/" target="_blank">Sanghyun Woo</a>, <a href="https://www.linkedin.com/in/manoj-middepogu/" target="_blank">Manoj Middepogu</a>, <a href="https://www.linkedin.com/in/sai-charitha-akula-32574887/" target="_blank">Sai Charitha Akula</a>, <a href="https://jihanyang.github.io/" target="_blank">Jihan Yang</a>, <br> <a href="https://github.com/vealocia" target="_blank">Shusheng Yang</a>, <a href="https://adithyaiyer1999.github.io/" target="_blank">Adithya Iyer</a>, <a href="https://xichenpan.com/" target="_blank">Xichen Pan</a>, <a href="https://www.linkedin.com/in/ziteng-wang-694b8b227/" target="_blank">Austin Wang</a>, <br> <a href="http://cs.nyu.edu/~fergus" target="_blank">Rob Fergus</a>, <a href="http://yann.lecun.com/" target="_blank">Yann LeCun</a>, <a href="https://www.sainingxie.com/" target="_blank">Saining Xie</a> </div> </div> <br>

趣闻:视觉能力在寒武纪时期的动物中首次出现!这就是我们项目名称"寒武纪"的灵感来源。

发布

  • [2024年7月3日] 🚂 我们发布了我们的定向数据引擎!详情请见子文件夹dataengine/
  • [2024年7月2日] 🤗 CV-Bench现已在Huggingface上线!更多信息请访问:https://huggingface.co/datasets/nyu-visionx/CV-Bench
  • [2024年6月24日] 🔥 我们发布了寒武纪-1!我们还发布了三种规模的模型(8B、13B和34B)、训练数据和TPU训练脚本。我们将很快发布GPU训练脚本和评估代码。

目录

安装

TPU训练

目前,我们支持使用TorchXLA在TPU上进行训练

  1. 克隆此仓库并进入代码库
git clone https://github.com/cambrian-mllm/cambrian cd cambrian
  1. 安装包
conda create -n cambrian python=3.10 -y conda activate cambrian pip install --upgrade pip # 启用PEP 660支持 pip install -e ".[tpu]"
  1. 为训练情况安装TPU特定包
pip install torch~=2.2.0 torch_xla[tpu]~=2.2.0 -f https://storage.googleapis.com/libtpu-releases/index.html

GPU推理

  1. 克隆此仓库并进入代码库
git clone https://github.com/cambrian-mllm/cambrian cd cambrian
  1. 安装包
conda create -n cambrian python=3.10 -y conda activate cambrian pip install --upgrade pip # 启用PEP 660支持 pip install ".[gpu]"

寒武纪权重

以下是我们的寒武纪检查点以及如何使用这些权重的说明。我们的模型在8B、13B和34B参数级别的各个维度上都表现出色。与GPT-4V、Gemini-Pro和Grok-1.4V等闭源专有模型相比,它们在多个基准测试中展示了具有竞争力的性能。

模型性能比较

模型视觉令牌数MMBSQA-IMathVistaMChartQAMMVP
GPT-4V未知75.8-49.978.550.0
Gemini-1.0 Pro未知73.6-45.2--
Gemini-1.5 Pro未知--52.181.3-
Grok-1.5未知--52.876.1-
MM-1-8B14472.372.635.9--
MM-1-30B14475.181.039.4--
基础LLM: Phi-3-3.8B
Cambrian-1-8B57674.679.248.466.840.0
基础LLM: LLaMA3-8B-Instruct
Mini-Gemini-HD-8B288072.775.137.059.118.7
LLaVA-NeXT-8B288072.172.836.369.538.7
Cambrian-1-8B57675.980.449.073.351.3
基础LLM: Vicuna1.5-13B
Mini-Gemini-HD-13B288068.671.937.056.619.3
LLaVA-NeXT-13B288070.073.535.162.236.0
Cambrian-1-13B57675.779.348.073.841.3
基础LLM: Hermes2-Yi-34B
Mini-Gemini-HD-34B288080.677.743.467.637.3
LLaVA-NeXT-34B288079.381.846.568.747.3
Cambrian-1-34B57681.485.653.275.652.7

完整表格请参考我们的Cambrian-1论文。

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/335612a0-9066-4d0a-9f17-a9563bd3be7f.png" alt="Cambrian-7M"> </p>

我们的模型在使用较少的固定视觉令牌数量的同时,提供了极具竞争力的性能。

使用Cambrian-1

要使用模型权重,请从Hugging Face下载:

我们在inference.py中提供了一个示例模型加载和生成脚本。

Cambrian-10M指令调优数据

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/1703b0a8-0bd5-4cc8-9559-8252a920a1b5.png" alt="Cambrian-7M"> </p>

在这项工作中,我们收集了大量的指令调优数据,即Cambrian-10M,用于我们和未来的研究来研究多模态大语言模型(MLLM)训练中的数据。在我们的初步研究中,我们将数据过滤为700万个高质量数据点,我们称之为Cambrian-7M。 这两个数据集都可以在以下Hugging Face数据集中找到:Cambrian-10M

数据收集

我们从各种来源收集了多样化的视觉指令调优数据,包括视觉问答、视觉对话和具身视觉交互。为确保高质量、可靠和大规模的知识数据,我们设计了一个互联网数据引擎。

此外,我们观察到视觉问答数据往往会生成非常简短的输出,与训练数据产生分布偏移。为解决这个问题,我们利用GPT-4v和GPT-4o创建了扩展回答和更具创造性的数据。

知识数据的数据引擎

为解决科学相关数据的不足,我们设计了一个互联网数据引擎来收集可靠的科学相关视觉问答数据。这个引擎可以应用于收集任何主题的数据。使用这个引擎,我们额外收集了16.1万个科学相关的视觉指令调优数据点,使该领域的总数据增加了400%!如果您想使用这部分数据,请使用这个jsonl

GPT-4v蒸馏的视觉指令调优数据

我们使用GPT-4v创建了额外的7.7万个数据点。这些数据要么使用GPT-4v将原始的仅答案视觉问答重写为更长、更详细的回答,要么根据给定的图像生成视觉指令调优数据。如果您想使用这部分数据,请使用这个jsonl

GPT-4o蒸馏的创意对话数据

我们使用GPT-4o创建了额外的6万个创意数据点。这些数据鼓励模型生成非常长的回答,通常包含高度创意的问题,如写诗、作曲等。如果您想使用这部分数据,请使用这个jsonl

数据整理

我们通过以下方式对数据整理进行了初步研究:

  1. 设置阈值$t$来限制单一数据源的样本数量。
  2. 研究数据比例。

根据经验,我们发现将$t$设为35万可以获得最佳结果。此外,我们进行了数据比例实验,确定了以下最佳数据比例:

类别数据比例
语言21.00%
通用34.52%
OCR27.22%
计数8.71%
数学7.20%
代码0.87%
科学0.88%

与之前的LLaVA-665K模型相比,数据规模的扩大和改进的数据整理显著提高了模型性能,如下表所示:

模型平均分通用知识OCR图表以视觉为中心
LLaVA-665K40.464.745.220.831.0
Cambrian-10M53.868.751.647.147.6
Cambrian-7M54.869.652.647.349.5

添加系统提示以缓解"回答机器"现象

虽然使用Cambrian-7M进行训练能够在基准测试中取得有竞争力的结果,但我们观察到模型倾向于输出较短的回答,表现得像一个问答机器。这种我们称之为"答案机器"现象的行为可能会限制模型在更复杂交互中的实用性。

我们发现,添加一个系统提示,如"请用单个词或短语回答问题。"可以帮助缓解这个问题。这种方法鼓励模型只在语境适当时提供简洁的回答。更多详情请参阅我们的论文。

我们还整理了一个数据集,带系统提示的Cambrian-7M,其中包含系统提示以增强模型的创造力和聊天能力。

训练

以下是Cambrian-1最新的训练配置。

在Cambrian-1论文中,我们进行了广泛的研究以证明两阶段训练的必要性。Cambrian-1的训练包括两个阶段:

  1. 视觉连接器训练:我们使用混合的250万Cambrian对齐数据来训练空间视觉聚合器(SVA),将冻结的预训练视觉编码器连接到冻结的LLM
  2. 指令微调:我们使用精选的Cambrian-7M指令微调数据来训练视觉连接器和LLM。

Cambrian-1在TPU-V4-512上训练,但也可以在从TPU-V4-64开始的TPU上训练。GPU训练代码将很快发布。对于较少GPU的训练,减少per_device_train_batch_size并相应增加gradient_accumulation_steps,确保全局批量大小保持不变:per_device_train_batch_size x gradient_accumulation_steps x num_gpus

超参数

以下提供了预训练和微调中使用的超参数。

1. 视觉连接器训练

基础LLM全局批量大小学习率SVA学习率轮次最大长度
LLaMA-3 8B5121e-31e-412048
Vicuna-1.5 13B5121e-31e-412048
Hermes Yi-34B10241e-31e-412048

2. 指令微调

基础LLM全局批量大小学习率轮次最大长度
LLaMA-3 8B5124e-512048
Vicuna-1.5 13B5124e-512048
Hermes Yi-34B10242e-512048

对于指令微调,我们进行了实验以确定模型训练的最佳学习率。根据我们的发现,我们建议使用以下公式根据设备的可用性调整学习率:

最佳lr = 基础lr * sqrt(bs / 基础bs)

下载LLM检查点

要获取基础LLM并训练8B、13B和34B模型:

  • LLaMA 8B模型:从Hugging Face下载模型权重,并在训练脚本中指定模型目录。
  • Vicuna-1.5-13B:运行提供的训练脚本时会自动处理Vicuna-1.5-13B模型。
  • Yi-34B:运行提供的训练脚本时也会自动处理Yi-34B模型。

训练空间视觉聚合器(SVA)

我们使用LLaVA、ShareGPT4V、Mini-Gemini和ALLaVA对齐数据的组合来预训练我们的视觉连接器(SVA)。在Cambrian-1中,我们进行了广泛的研究以证明使用额外对齐数据的必要性和好处。

首先,请访问我们的Hugging Face对齐数据页面了解更多详情。您可以从以下链接下载对齐数据:

我们在以下文件中提供了样本训练脚本:

使用自定义数据

如果您希望使用其他数据源或自定义数据进行训练,我们支持常用的LLaVA数据格式。为了处理非常大的文件,我们使用JSONL格式而不是JSON格式进行延迟数据加载,以优化内存使用。

指令微调

与训练SVA类似,请访问我们的Cambrian-10M数据了解更多关于指令微调数据的详情。

我们在以下文件中提供了样本训练脚本:

需要注意的选项:

  • --mm_projector_type:要使用我们的SVA模块,将此值设为sva。要使用LLaVA风格的2层MLP投影器,将此值设为mlp2x_gelu
  • --vision_tower_aux_list:要使用的视觉模型列表(例如'["siglip/CLIP-ViT-SO400M-14-384", "openai/clip-vit-large-patch14-336", "facebook/dinov2-giant-res378", "clip-convnext-XXL-multi-stage"]')。
  • --vision_tower_aux_token_len_list:每个视觉塔的视觉令牌数量列表;每个数字应该是一个平方数(例如'[576, 576, 576, 9216]')。每个视觉塔的特征图将被插值以满足这一要求。
  • --image_token_len:将提供给LLM的最终视觉令牌数量;该数字应为平方数(例如576)。注意,如果mm_projector_type为mlp,则vision_tower_aux_token_len_list中的每个数字必须与image_token_len相同。

以下参数仅对SVA投影器有意义:

  • --num_query_group:SVA模块的G值。
  • --query_num_list:SVA中每组查询的查询数量列表(例如'[576]')。列表长度应等于num_query_group
  • --connector_depth:SVA模块的D值。
  • --vision_hidden_size:SVA模块的隐藏大小。
  • --connector_only:如果为true,SVA模块将仅出现在LLM之前,否则将被多次插入LLM内部。以下三个参数仅在此设置为False时有意义。
  • --num_of_vision_sampler_layers:插入LLM内部的SVA模块总数。
  • --start_of_vision_sampler_layers:开始插入SVA的LLM层索引。
  • --stride_of_vision_sampler_layers:LLM内部SVA模块插入的步长。

评估

我们将很快发布这部分代码。

演示

以下说明将指导您使用Cambrian启动本地Gradio演示。我们提供了一个简单的网络界面供您与模型交互。您也可以使用CLI进行推理。这个设置深受LLaVA的启发。

Gradio网页界面

请按照以下步骤启动本地Gradio演示。以下是本地服务代码的图表1

%%{init: {"theme": "base"}}%% flowchart BT %% 声明节点 style gws fill:#f9f,stroke:#333,stroke-width:2px style c fill:#bbf,stroke:#333,stroke-width:2px style mw8b fill:#aff,stroke:#333,stroke-width:2px style mw13b fill:#aff,stroke:#333,stroke-width:2px gws["Gradio (UI 服务器)"] c["控制器 (API 服务器):<br/>端口: 10000"] mw8b["模型工作器:<br/><b>Cambrian-1-8B</b><br/>端口: 40000"] mw13b["模型工作器:<br/><b>Cambrian-1-13B</b><br/>端口: 40001"] subgraph "演示架构" direction BT c <--> gws mw8b <--> c mw13b <--> c end

1. 启动控制器

python -m cambrian.serve.controller --host 0.0.0.0 --port 10000

2. 启动 Gradio 网页服务器

python -m cambrian.serve.gradio_web_server --controller http://localhost:10000 --model-list-mode reload

你刚刚启动了 Gradio 网页界面。现在,你可以使用屏幕上打印的 URL 打开网页界面。你可能会注意到模型列表中没有模型。不用担心,因为我们还没有启动任何模型工作器。当你启动模型工作器时,它会自动更新。

启动 SGLang 工作器

即将推出。

启动模型工作器

这是在 GPU 上执行推理的实际"工作器"。每个工作器负责 --model-path 中指定的单个模型。

python -m cambrian.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path nyu-visionx/cambrian-8b

等待进程完成模型加载,直到看到"Uvicorn running on ..."。现在,刷新你的 Gradio 网页界面,你会在模型列表中看到刚刚启动的模型。

你可以启动任意数量的工作器,并在同一个 Gradio 界面中比较不同的模型检查点。请保持 --controller 不变,并为每个工作器修改 --port--worker 为不同的端口号。

python -m cambrian.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port <不同于 40000,比如 40001> --worker http://localhost:<相应更改,即 40001> --model-path <ckpt2>

如果你使用的是配备 M1 或 M2 芯片的 Apple 设备,可以使用 --device 标志指定 mps 设备:--device mps

启动模型工作器(多个 GPU,当 GPU VRAM <= 24GB)

如果你的 GPU VRAM 小于 24GB(例如,RTX 3090、RTX 4090 等),你可以尝试使用多个 GPU 运行。我们最新的代码库会在你有多个 GPU 时自动尝试使用多个 GPU。你可以使用 CUDA_VISIBLE_DEVICES 指定要使用的 GPU。以下是使用前两个 GPU 运行的示例。

CUDA_VISIBLE_DEVICES=0,1 python -m cambrian.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path nyu-visionx/cambrian-8b

命令行推理

待定

引用

如果你发现 Cambrian 对你的研究和应用有用,请使用以下 BibTeX 进行引用:

@misc{tong2024cambrian1, title={Cambrian-1: A Fully Open, Vision-Centric Exploration of Multimodal LLMs}, author={Shengbang Tong and Ellis Brown and Penghao Wu and Sanghyun Woo and Manoj Middepogu and Sai Charitha Akula and Jihan Yang and Shusheng Yang and Adithya Iyer and Xichen Pan and Austin Wang and Rob Fergus and Yann LeCun and Saining Xie}, year={2024}, eprint={2406.16860}, }

致谢

  • LLaVA:我们从出色的 LLaVA 代码库开始
  • Vicuna:我们感谢 Vicuna 在 LLM 方面的初始代码库和开源 LLM 检查点
  • LLaMA:我们感谢 LLaMA 持续为开源社区做出贡献并提供 LLaMA-3 检查点
  • Yi:我们感谢 Yi 开源了非常强大的 34B 模型

相关项目

许可证

代码许可证<br> 使用和许可声明:本项目使用了某些数据集和检查点,这些数据集和检查点受其各自原始许可证的约束。用户必须遵守这些原始许可证的所有条款和条件,包括但不限于数据集的 OpenAI 使用条款,以及使用该数据集训练的基础语言模型检查点的特定许可证(例如 LLaMA-3 的 Llama 社区许可证和 Vicuna-1.5)。本项目不施加任何超出原始许可证规定的额外限制。此外,提醒用户确保他们对数据集和检查点的使用符合所有适用的法律和法规。

Footnotes

  1. 复制自 LLaVA 的图表

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多