TinyGPT-V
TinyGPT-V 是一款高效的多模态大语言模型,旨在通过轻量化的架构实现强大的图文理解能力。它主要解决了传统多模态模型依赖庞大骨干网络、导致计算资源消耗高且部署困难的问题。借助小型化主干网络(如 Phi-2),TinyGPT-V 在大幅降低参数量和推理成本的同时,性能仍能达到主流大型模型(如 InstructBLIP)的 98%,实现了效率与效果的出色平衡。
这款工具非常适合研究人员探索轻量化多模态技术,也适合开发者将其集成到资源受限的边缘设备或实际应用中。对于希望低成本体验先进图文交互能力的技术爱好者,TinyGPT-V 同样提供了友好的在线演示和开源代码。
其独特亮点在于创新的四阶段训练策略,通过逐步对齐视觉与语言特征,让小模型也能具备复杂的推理能力。此外,项目完全开源,提供了从环境配置、预训练权重下载到微调评估的完整流程,支持社区快速复现与二次开发。无论是用于学术研究还是构建轻量级 AI 应用,TinyGPT-V 都是一个兼具实用性与前沿性的优秀选择。
使用场景
某初创教育科技公司希望在其移动端 App 中集成“拍照搜题”功能,让资源有限的学生能通过手机摄像头上传题目图片并获取详细解析。
没有 TinyGPT-V 时
- 部署成本高昂:传统多模态大模型(如 InstructBLIP)参数量巨大,需要昂贵的 GPU 服务器集群支持,初创团队难以承担云端推理的高额账单。
- 响应延迟严重:由于模型体积庞大,网络传输和推理耗时较长,用户上传图片后往往需等待数秒甚至更久才能看到结果,严重影响学习体验。
- 端侧运行无望:模型无法在普通智能手机或边缘设备上本地运行,导致在无网络环境下功能完全不可用,限制了使用场景。
- 迭代维护困难:庞大的模型结构使得微调和更新变得复杂且耗时,难以针对特定的教辅数据快速优化模型表现。
使用 TinyGPT-V 后
- 大幅降低算力门槛:TinyGPT-V 基于 Phi-2 等小型骨干网络构建,在保持高性能的同时显著减小了模型体积,使得单张消费级显卡甚至边缘设备即可流畅运行,云服务成本降低 90% 以上。
- 实现毫秒级响应:得益于高效的架构设计,推理速度大幅提升,学生拍照后几乎能实时获得题目解析,交互体验丝滑流畅。
- 支持端云协同部署:轻量化特性使得 TinyGPT-V 有机会直接部署在高端手机终端,即使在离线状态下也能提供基础的搜题服务,极大扩展了适用人群。
- 快速定制与迭代:较小的参数量让团队能够利用自有的教辅数据集快速完成微调(Fine-tuning),迅速适配新的题型和解题风格,保持内容竞争力。
TinyGPT-V 通过“小骨干”实现了“大能力”,让资源受限的团队也能低成本、高效率地落地高质量的多模态 AI 应用。
运行环境要求
- Linux
- Windows
- 需要 NVIDIA GPU,默认 16 位精度需约 8GB 显存
- 可通过配置 low_resource=True 在低于 8GB 显存的设备上以 8 位精度运行
未说明

快速开始
TinyGPT-V
TinyGPT-V:基于小型骨干网络的高效多模态大语言模型
✟圣母大学,❁莱high大学,❋上海交通大学
李兆旭是莱high大学LAIR实验室的访问学生。
英语 | 简体中文
新闻
[2024年4月8日] 更新论文v2版本。我们修正了一些排版错误,提供了更多细节,并更新了TinyGPT-V的最新结果。
[2024年3月20日] 更新Phi-2权重下载链接。
[2024年1月22日] 欢迎访问Hugging Face在线演示,试用我们的模型(适用于Stage-4 v1)!
[2024年1月19日] 重大更新!我们正式发布TinyGPT-V v1版本!经评估,TinyGPT-V的性能已达到InstructBLIP的98%,并超越了同期其他模型!
[2024年1月3日] 欢迎访问Hugging Face在线演示,试用我们的模型(适用于Stage-3)!
[2023年12月28日] 突发!我们发布了TinyGPT-V的代码。
TinyGPT-V模型结构
整体模型结构

语言模型结构

TinyGPT-V训练流程

TinyGPT-V结果
雷达图

性能与效率

开始使用
安装
1. 准备代码和环境
克隆我们的仓库,创建Python环境并激活:
git clone https://github.com/DLYuanGod/TinyGPT-V.git
cd TinyGPT-V
conda env create -f environment.yml
conda activate tinygptv
2. 准备预训练LLM权重
TinyGPT-V基于Phi-2。 通过git-lfs克隆以下Hugging Face空间,下载相应的LLM权重。
Phi-2 2.7B:下载
然后,在模型配置文件中将phi_model变量设置为LLM权重路径。
3. 准备预训练模型检查点
下载预训练模型检查点
| Stage-1之后 | Stage-2之后 | Stage-3之后 | Stage-4之后 |
|---|---|---|---|
| 下载 | 下载 | 下载 | 下载 |
对于TinyGPT-V,在评估配置文件中设置预训练检查点路径: 在tinygptv_stage1_2_3_eval.yaml第8行设置Stage 1、2和3版本;在tinygptv_stage4_eval.yaml第8行设置Stage 4版本。
4. 更新Phi-2的transformers库模型实现。
Linux系统:
cp modeling_phi.py /root/miniconda3/envs/tinygptv/lib/python3.9/site-packages/transformers/models/phi/
Windows系统
找到你的conda环境:conda_sit/envs/tinygptv/lib/python3.9/site-packages/transformers/models/phi/ 将该目录下的modeling_phi.py替换为TinyGPT-V中的modeling_phi.py版本。
本地运行演示
对于Stage 4,运行:
python demo_v2.py --cfg-path eval_configs/tinygptv_stage4_eval.yaml --gpu-id 0
注意:Stage 4具备一定的定位能力,但效果尚不理想,我们正在改进!
对于Stage 1、2和3,运行:
python demo.py --cfg-path eval_configs/tinygptv_stage1_2_3_eval.yaml --gpu-id 0
若希望获得更强的性能,LLMs默认以16位加载。此配置需要约8GB显存。若想节省显存,可在相关配置文件中将low_resource设置为True,以8位模式运行模型,适用于显存低于8GB的设备:
Stage 4 tinygptv_stage4_eval.yaml
Stage 1、2和3 tinygptv_stage1_2_3_eval.yaml
训练
首先,你需要将 LLM 中所有更新后的权重调整为以全精度进行计算:此处。请移除以下代码行的注释:
layer.self_attn.q_layernorm.weight.data = layer.self_attn.q_layernorm.weight.data.float()
layer.self_attn.k_layernorm.weight.data = layer.self_attn.k_layernorm.weight.data.float()
layer.post_layernorm.weight.data = layer.post_layernorm.weight.data.float()
layer.input_layernorm.weight.data = layer.input_layernorm.weight.data.float()
# 对偏置项执行类似操作
if layer.self_attn.q_layernorm.bias is not None:
layer.self_attn.q_layernorm.bias.data = layer.self_attn.q_layernorm.bias.data.float()
if layer.self_attn.k_layernorm.bias is not None:
layer.self_attn.k_layernorm.bias.data = layer.self_attn.k_layernorm.bias.data.float()
if layer.input_layernorm.bias is not None:
layer.input_layernorm.bias.data = layer.input_layernorm.bias.data.float()
llama_model.model.model.final_layernorm.weight.requires_grad = True
llama_model.model.model.final_layernorm.weight.data = llama_model.model.model.final_layernorm.weight.data.float()
if llama_model.model.model.final_layernorm.bias is not None:
llama_model.model.model.final_layernorm.bias.data = llama_model.model.model.final_layernorm.bias.float()
阶段 1 和 2:
数据集:第一阶段数据集准备说明
然后运行:
torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/tinygptv_stage1.yaml
你需要执行上述命令 17 次,才能完成第一阶段的训练。
- 然后运行:
torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/tinygptv_stage2.yaml
阶段 3:
数据集:第三阶段数据集准备说明
然后运行:
torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/tinygptv_stage3.yaml
阶段 4:
数据集:第四阶段数据集准备说明。
然后运行:
torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/tinygptv_stage4.yaml
评估
有关 TinyGPT-V 的评估详情,请查看 此处。
星标历史
致谢
- MiniGPT,一款非常通用的多模态大语言模型。
如果你在研究或应用中使用了 TinyGPT-V,请使用以下 BibTeX 格式引用:
@misc{yuan2024tinygptv,
title={TinyGPT-V: Efficient Multimodal Large Language Model via Small Backbones},
author={Zhengqing Yuan and Zhaoxu Li and Weiran Huang and Yanfang Ye and Lichao Sun},
year={2024},
eprint={2312.16862},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
许可证
本仓库采用 BSD 3-Clause 许可证。 许多代码基于 Lavis,其许可证为 BSD 3-Clause,详见 此处。
常见问题
相似工具推荐
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,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
