MCPcopy Index your code
hub / github.com/DLYuanGod/TinyGPT-V

github.com/DLYuanGod/TinyGPT-V @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,666 symbols 4,718 edges 151 files 320 documented · 19% updated 5mo ago★ 1,31627 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

TinyGPT-V

TinyGPT-V: Efficient Multimodal Large Language Model via Small Backbones

Zhengqing Yuan❁, Zhaoxu Li❁, Lichao Sun❋

❁Visiting Students at LAIR Lab, Lehigh University ❋Lehigh University

English | 简体中文

最新消息

[Jan.03 2024] 我们创建了huggingface demo,试用我们的模型(第三阶段)!

[Dec.28 2023] 我们公开了TinyGPT-V的代码.

TinyGPT-V 训练过程

Traning_Process

TinyGPT-V 模型结构

Model

TinyGPT-V 结果

Results

准备开始

下载

1. 准备代码和环境

Git克隆我们的存储库,创建一个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. 从下面的huggingface空间下载相应的LLM权重通过git-lfs克隆存储库:

Phi-2 2.7B: Download

然后,将模型配置文件中的变量phi_model设置为LLM权重路径。

  • 设置LLM路径 here 在第14行, here 第18行 here 第16行.

3. 准备预训练的模型权重

下载预训练的模型权重*

阶段1后 阶段2后 阶段3后 阶段4后
Download Download Download Download

在评估配置文件中给TinyGPT-V设置预训练权重的路径

阶段1,2,3:tinygptv_stage1_2_3_eval.yaml ,或者阶段4:tinygptv_stage4_eval.yaml 的第8行.

4. 更新transformers库的Phi-2模型.

Linux系统:

cp modeling_phi.py /root/miniconda3/envs/tinygptv/lib/python3.9/site-packages/transformers/models/phi/

Windows系统

找到你自己的: conda_sit/envs/tinygptv/lib/python3.9/site-packages/transformers/models/phi/ 然后用TinyGPT-V/modeling_phi.py 替换 modeling_phi.py .

在本地创建demo

对于阶段4, 运行

python demo_v2.py --cfg-path eval_configs/tinygptv_stage4_eval.yaml  --gpu-id 0

对于阶段1,2,3, 运行

python demo.py --cfg-path eval_configs/tinygptv_stage1_2_3_eval.yaml  --gpu-id 0

为了使用更强大的模型,LLM默认加载为16位。此配置大约需要8G GPU内存。为了更节省GPU内存,你可以通过在相关配置文件中设置“low_resource”为“True”来以8位在8G以下的设备运行:

-注:第4阶段目前是测试版本,因为它使用部分数据进行训练。请使用第3阶段进行演示。

训练

首先,您需要调整LLM中所有更新的权重,以便以全精度计算:Here. 删除以下行中的注释:

                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()

                # Perform a similar operation for the bias item
                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的评估详细信息 here

加🌟历史

Star History Chart

致谢

  • MiniGPT 一个非常通用的MLLMs.

如果您在您的研究或应用中使用TinyGPT-V,请使用本BibTeX引用:


@misc{yuan2023tinygptv,
      title={TinyGPT-V: Efficient Multimodal Large Language Model via Small Backbones}, 
      author={Zhengqing Yuan and Zhaoxu Li and Lichao Sun},
      year={2023},
      eprint={2312.16862},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

许可证

该项目开源自 BSD 3-Clause License. 我们的代码基于 Lavis 与 BSD 3-Clause 许可证 here.

Core symbols most depended-on inside this repo

get
called by 109
TinyGPT-V-main/minigpt4/common/registry.py
get
called by 108
minigpt4/common/registry.py
print
called by 83
minigpt4/common/dist_utils.py
print
called by 75
TinyGPT-V-main/minigpt4/common/dist_utils.py
add_argument
called by 62
minigpt4/common/config.py
info
called by 59
TinyGPT-V-main/minigpt4/common/vqa_tools/vqa.py
info
called by 59
minigpt4/common/vqa_tools/vqa.py
add_argument
called by 58
TinyGPT-V-main/minigpt4/common/config.py

Shape

Method 1,089
Class 310
Function 263
Route 4

Languages

Python100%

Modules by API surface

minigpt4/models/Qformer.py67 symbols
TinyGPT-V-main/minigpt4/models/Qformer.py67 symbols
modeling_phi.py59 symbols
TinyGPT-V-main/modeling_phi.py59 symbols
minigpt4/models/modeling_phi.py51 symbols
TinyGPT-V-main/minigpt4/models/modeling_phi.py51 symbols
minigpt4/datasets/builders/image_text_pair_builder.py43 symbols
TinyGPT-V-main/minigpt4/datasets/builders/image_text_pair_builder.py43 symbols
minigpt4/runners/runner_base.py35 symbols
TinyGPT-V-main/minigpt4/runners/runner_base.py35 symbols
minigpt4/processors/randaugment.py34 symbols
minigpt4/models/eva_vit.py34 symbols

For agents

$ claude mcp add TinyGPT-V \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact