LaVIN
LaVIN 是一个高效的多模态大语言模型开源项目,旨在让大型语言模型(LLM)具备理解图像并执行复杂指令的能力。它主要解决了传统视觉 - 语言模型训练成本高昂、耗时漫长且参数量巨大的痛点,提供了一种“既便宜又快速”的替代方案。
该项目非常适合人工智能研究人员、开发者以及希望低成本部署多模态应用的技术团队使用。其核心技术创新在于提出了“混合模态适配”(MMA)机制。通过轻量级的适配器连接图像编码器与大语言模型,LaVIN 无需微调整个大模型即可实现端到端优化。更独特的是,它内置了一种新颖的路由算法,能自动识别指令类型,灵活切换单模态或多模态的推理路径。
在实际表现上,LaVIN 展现了惊人的效率:训练时间可缩短至 1.4 小时,可训练参数量仅为 380 万,且在 ScienceQA 等基准测试中准确率超越了许多现有模型。此外,项目还支持 4-bit 量化训练,使得在单张消费级显卡(如 RTX 3090)上训练 7B 甚至 13B 规模的模型成为可能,极大地降低了多模态大模型的研发门槛。
使用场景
某教育科技团队正致力于开发一款能辅助学生解答科学题目的多模态 AI 助教,需让大模型具备理解图表并推理答案的能力。
没有 LaVIN 时
- 训练成本高昂:传统多模态微调需更新数十亿参数,必须租用昂贵的多卡 A100 集群,中小团队难以承担。
- 开发周期漫长:全量微调耗时数天甚至数周,导致算法迭代缓慢,无法快速验证新的解题策略。
- 硬件门槛极高:显存占用巨大,单张消费级显卡(如 RTX 3090)完全无法运行 7B 或 13B 模型的训练任务。
- 推理路径僵化:模型难以自动区分纯文本指令与图文混合指令,常出现“看图说话”时的逻辑混乱。
使用 LaVIN 后
- 极致降本增效:借助混合模态适配(MMA)技术,仅需训练 380 万参数(约占总量的 0.5%),大幅降低算力预算。
- 极速模型迭代:在 ScienceQA 等任务上,训练时间缩短至 1.4 小时,团队可实现“上午改代码,下午测效果”的敏捷开发。
- 平民化硬件部署:支持 4-bit 量化训练,单张 RTX 3090 即可轻松跑通 7B 乃至 13B 模型,让本地开发成为可能。
- 智能路由推理:内置的路由算法能自动识别指令类型,灵活切换推理路径,显著提升了复杂科学问题的回答准确率。
LaVIN 通过轻量级适配与智能路由机制,将多模态大模型的训练门槛从“实验室级”降至“桌面级”,让高效、低成本的视觉语言应用落地成为现实。
运行环境要求
- Linux
- 必需 NVIDIA GPU
- 标准训练:7B 模型需 2x A100 (33.9G 显存),13B 模型需 8x A100 (55.9G 显存)
- 轻量版 (LaVIN-lite/4-bit):单卡即可,7B 需约 9G 显存 (如 RTX 3090),13B 需约 14-15G 显存
未说明

快速开始

本仓库包含 NeurIPS 2023 论文的实现:
廉价且快速:面向大型语言模型的高效视觉-语言指令微调 [项目页面] [论文]
Gen Luo1, Yiyi Zhou12, Tianhe Ren1, Shengxin Chen1, Xiaoshuai Sun12, Rongrong Ji12
1厦门大学信息学院人工智能系媒体分析与计算实验室
2厦门大学人工智能研究院
在本工作中,我们提出了一种新颖且经济实惠的视觉-语言指令微调方案,即模态混合适应(MMA)。
具体而言,MMA 是一种端到端的优化机制,通过轻量级适配器将图像编码器与 LLM 连接起来。同时,我们还提出了一种新的路由算法,能够帮助模型自动切换针对单模态和多模态指令的推理路径。基于 MMA,我们开发了一个名为 LaVIN 的大型视觉-语言指令模型,在多种指令遵循任务中表现出比现有多模态 LLM 更高的训练效率和更强的推理能力。
新闻
2023/09/22: 🔥🔥🔥 我们的论文已被 NeurIPS 2023 接收!2023/06/30: 🔥🔥🔥 在训练数据和成本都非常有限的情况下,LaVIN 在 MME 基准测试 的“感知与认知”类别中取得了第 5 名,性能超越了七种现有的多模态 LLM。评估代码现已公开。2023/06/27: 🔥4-bit 训练现已可用!LaVIN-lite 可以在单张 3090 GPU 上进行训练,分别使用约 9G 和 15G 的显存即可完成 7B 和 13B 参数规模的训练。相关技术细节已在 知乎 上发布。2023/05/29: 🔥我们发布了多模态聊天机器人的演示及预训练检查点(LLaMA-13B)。2023/05/25: 🔥我们发布了 LaVIN:大型视觉-语言指令模型 的代码,在 ScienceQA 数据集上分别达到了 89.4(LaVIN-7B)和 90.8(LaVIN-13B)的准确率!🔥借助我们提出的 模态混合适应 方法,训练时间和可训练参数分别减少至 1.4 小时和 380 万!请查看 论文。
待办事项
- 发布训练代码。
- 发布检查点和演示。
- 支持 4-bit 训练。
- 支持更多模态,例如音频和视频。
目录
设置
安装软件包
conda create -n lavin python=3.8 -y
conda activate lavin
# 安装 PyTorch
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 -c pytorch
# 安装依赖和 lavin
pip install -r requirements.txt
pip install -e .
数据准备
- 对于 ScienceQA,请从 官方仓库 准备数据集。
- 对于多模态聊天机器人,从 MSCOCO 下载 train2014 分割中的图片,并从 这里 获取已整理好的 5.2 万条纯文本和 15.8 万条图文结合的指令遵循数据。
- 从 此表单 获取 LLaMA 权重(官方来源),或从 HuggingFace 下载 LLaMA-7B 和 LLaMA-13B(非官方来源)。
- 如果希望使用 Vicuna 权重初始化模型,请从 HuggingFace 下载。 完成上述步骤后,文件结构应如下所示:
LaVIN/
|-- lavin
|-- scripts
|-- train.py
|-- eval.py
......
data/
|-- problem.json
|-- pid_splits.json
|-- captions.json
|-- all_data.json
|-- images
|-- train2014 # MSCOCO 2014
|-- val2014 # MSCOCO 2014
|-- train # ScienceQA 训练集图片
|-- val # ScienceQA 验证集图片
|-- test # ScienceQA 测试集图片
|-- weights
|-- tokenizer.model
|--7B
|-- params.json
|-- consolidated.00.pth
|--13B
|-- params.json
|-- consolidated.00.pth
|-- consolidated.01.pth
|--vicuna_7B
|--vicuna_13B
|-- config.json
|-- generation_config.json
|-- pytorch_model.bin.index.json
|-- special_tokens_map.json
|-- tokenizer_config.json
|-- tokenizer.model
|-- pytorch_model-00001-of-00003.bin
|-- pytorch_model-00002-of-00003.bin
|-- pytorch_model-00003-of-00003.bin
......
微调
ScienceQA
重现 LaVIN-7B 在 ScienceQA 上的表现。 对于 7B 模型,我们在 2 张 A100 上进行微调(我们发现性能会受到 GPU 数量的影响,目前正在解决这一问题)。
LLaMA 权重:
bash ./scripts/finetuning_sqa_7b.sh
Vicuna 权重:
bash ./scripts/finetuning_sqa_vicuna_7b.sh
LaVIN-lite 使用 LLaMA 权重(单 GPU):
bash ./scripts/finetuning_sqa_vicuna_7b_lite.sh
重现 LaVIN-13B 在 ScienceQA 上的表现(约 2 小时,使用 8 张 A100 卡,共 80G 显存)。 对于 13B 模型,我们在 8 张 A100 上进行微调。
LLaMA 权重:
bash ./scripts/finetuning_sqa_13b.sh
Vicuna 权重:
bash ./scripts/finetuning_sqa_vicuna_13b.sh
LaVIN-lite 使用 LLaMA 权重(单 GPU):
bash ./scripts/finetuning_sqa_vicuna_13b_lite.sh
多模态聊天机器人
在 21 万条指令遵循数据上微调 LaVIN-13B(使用 8 张 A100 卡,共 80G 显存,运行 15 个 epoch 约需 75 小时,运行 5 个 epoch 约需 25 小时)。
LLaMA 权重:
bash ./scripts/vl_instruction_tuning_13b.sh
Vicuna 权重:
bash ./scripts/vl_instruction_tuning_vicuna_13b.sh
若需在较少的 GPU 上训练,可在脚本中减少 GPU 数量,并通过 --accum_iter 增加梯度累积,以确保总批次大小为 32。在脚本中设置 --gradient_checkpointing 和 --bits 4bit 可显著降低对显存的需求。
演示
LaVIN 支持单模态和多模态的指令输入。您可以在我们的演示中尝试自定义指令:
- 在您的机器上启动一个 Gradio Web 服务器,然后您可以随意与 LaVIN 互动。
torchrun --nproc_per_node 1 demo.py --server_name 127.0.0.1
模型库
ScienceQA
| 模型 | 权重 | 时间 | 内存 | 参数量 | 准确率 | 权重 |
|---|---|---|---|---|---|---|
| LaVIN-7B-lite | LLaMA | 29 小时(单 GPU) | 9G | 3.8M | 88.35 | google drive |
| LaVIN-13B-lite | LLaMA | 42 小时(单 GPU) | 14G | 5.4M | 89.44 | google drive |
| LaVIN-7B | LLaMA | 1.4 小时 | 33.9G | 3.8M | 89.37 | google drive |
| LaVIN-7B | Vicuna | 1.4 小时 | 33.9G | 3.8M | 89.41 | google drive |
| LaVIN-13B | LLaMA | 2 小时 | 55.9G | 5.4M | 90.54 | google drive |
| LaVIN-13B | LLaMA | 4 小时 | 55.9G | 5.4M | 90.8 | - |
多模态聊天机器人
| 模型 | 权重 | 时间 | 内存 | 参数量 | 准确率 | 权重 |
|---|---|---|---|---|---|---|
| LaVIN-13B | LLaMA | 25 小时 | 55.9G | 5.4M | - | - |
| LaVIN-13B | LLaMA | 75 小时 | 55.9G | 5.4M | - | google drive |
示例
星标历史
引用
如果您认为我们的代码和论文有所帮助,请引用 LaVIN 和 RepAdapter:
@article{luo2023towards,
title={Towards Efficient Visual Adaption via Structural Re-parameterization},
author={Luo, Gen and Huang, Minglang and Zhou, Yiyi and Sun, Xiaoshuai and Jiang, Guangnan and Wang, Zhiyu and Ji, Rongrong},
journal={arXiv preprint arXiv:2302.08106},
year={2023}
}
@article{luo2023cheap,
title={Cheap and Quick: Efficient Vision-Language Instruction Tuning for Large Language Models},
author={Luo, Gen and Zhou, Yiyi and Ren, Tianhe and Chen, Shengxin and Sun, Xiaoshuai and Ji, Rongrong},
journal={Advances in neural information processing systems (NeurIPS)},
year={2023}
}
致谢
本仓库借鉴了来自 LLaMA、Stanford Alpaca、LLaVA、MiniGPT-4 和 LLaMA-Adapter 的部分数据和代码。感谢他们的杰出工作。
版本历史
v1.12023/06/28v1.02023/06/28常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
