MCPcopy
hub / github.com/zai-org/CogVLM

github.com/zai-org/CogVLM @main sqlite

repository ↗ · DeepWiki ↗
247 symbols 889 edges 32 files 38 documented · 15%
README

CogVLM & CogAgent

📗 README in English

🌟 跳转到详细介绍: CogVLM介绍, 🆕 CogAgent的介绍

📔 如需获取更详细的使用信息,请参阅: CogVLM&CogAgent技术文档

CogVLM

📖 Paper: CogVLM: Visual Expert for Pretrained Language Models CogVLM 是一个强大的开源视觉语言模型(VLM)。CogVLM-17B拥有100亿的视觉参数和70亿的语言参数,支持490*490分辨率的图像理解和多轮对话。 CogVLM-17B 17B在10个经典的跨模态基准测试中取得了最先进的性能包括NoCaps, Flicker30k captioning, RefCOCO, RefCOCO+, RefCOCOg, Visual7W, GQA, ScienceQA, VizWiz VQA 和 TDIUC 基准测试。

CogAgent

📖 Paper: CogAgent: A Visual Language Model for GUI Agents CogAgent 是一个基于CogVLM改进的开源视觉语言模型。CogAgent-18B拥有110亿的视觉参数和70亿的语言参数, 支持1120*1120分辨率的图像理解。在CogVLM的能力之上,它进一步拥有了GUI图像Agent的能力。 CogAgent-18B 在9个经典的跨模态基准测试中实现了最先进的通用性能,包括 VQAv2, OK-VQ, TextVQA, ST-VQA, ChartQA, infoVQA, DocVQA, MM-Vet, 和 POPE 测试基准。它在包括AITW和Mind2Web在内的GUI操作数据集上显著超越了现有的模型。
🌐 CogVLM2 在线体验: this link

目录

发布

  • 🔥🔥🔥 News: 2024/4/5: CogAgent 成功被评选为CVPR 2024 Highlights!
  • 🔥🔥 News: 2023/12/26:我们公开了 CogVLM-SFT-311K 数据集,它包含了超过15万条我们用于训练 CogVLM v1.0(仅该模型) 的数据。欢迎关注和使用。
  • 🔥 News: 2023/12/18: 新的Streamlit用户界面已经上线!我们已经基于Streamlit推出了新的网页用户界面,用户可以在我们的界面上轻松与CogVLM,CogAgent交谈。带来更好的用户体验。
  • 🔥 News: 2023/12/15: CogAgent 正式发布! CogAgent是基于CogVLM开发的图像理解模型。它具有基于视觉的GUI Agent功能,并在图像理解方面进行了进一步的增强。它支持分辨率为1120*1120的图像输入,并具有包括与图像进行多轮对话、GUI Agent、Grounding等多种能力。

  • News: 2023/12/8: 我们已将cogvlm-grounding-generalist的检查点更新为cogvlm-grounding-generalist-v1.1,训练过程中增加了图像增强,因此更加稳健。查看详情

  • News: 2023/12/7 CogVLM现在支持4-bit量化!您只需要11GB的GPU内存就可以进行推理!

  • News: 2023/11/20我们已将cogvlm-chat的检查点更新为cogvlm-chat-v1.1,统一了聊天和VQA的版本,并刷新了各种数据集上的SOTA,查看详情

  • News: 2023/11/20 我们在🤗Huggingface上发布了 cogvlm-chat, cogvlm-grounding-generalist/base, cogvlm-base-490/224,使用transformers 快速 推理

  • 2023/10/27 CogVLM双语版本已经在线上可用!欢迎试用

  • 2023/10/5 CogVLM-17B v1.0 发布。

开始使用

选项1:使用网页演示进行推理

如果您需要使用代理和接地功能,请参考Cookbook - Task Prompts

选项2:自行部署CogVLM / CogAgent

我们支持两种模型推理的图形用户界面,命令行界面和网络演示。如果你想在你的Python代码中使用它,修改命令行脚本以适应你的情况。 首先,我们需要安装依赖项。

# CUDA >= 11.8
pip install -r requirements.txt
python -m spacy download en_core_web_sm

所有的推理代码都位于 basic_demo/ 目录下。请在进行进一步操作之前,先切换到这个目录。

Situation 2.1 CLI (SAT version)

通过以下方式运行CLI演示:

# CogAgent
python cli_demo_sat.py --from_pretrained cogagent-chat --version chat --bf16  --stream_chat
python cli_demo_sat.py --from_pretrained cogagent-vqa --version chat_old --bf16  --stream_chat

# CogVLM
python cli_demo_sat.py --from_pretrained cogvlm-chat --version chat_old --bf16  --stream_chat
python cli_demo_sat.py --from_pretrained cogvlm-grounding-generalist --version base --bf16  --stream_chat

该程序将自动下载卫星模型并在命令行中进行交互。您可以通过输入指令并按回车来生成回复。输入clear 以清除对话历史,输入stop 以停止程序。

我们也支持模型并行推理,该推理将模型分割到多个(2/4/8)GPU上。使用 --nproc-per-node=[n] 控制使用的GPU数量。

torchrun --standalone --nnodes=1 --nproc-per-node=2 cli_demo_sat.py --from_pretrained cogagent-chat --version chat --bf16
  • 如果你想手动下载权重,你可以用模型路径替换 --from_pretrained 后的路径。

  • 我们的模型支持SAT的4位量化和8位量化。你可以将 --bf16 更改为 --fp16, 或 --fp16 --quant 4, 或 --fp16 --quant 8.

例如

```bash
python cli_demo_sat.py --from_pretrained cogagent-chat --fp16 --quant 8 --stream_chat
python cli_demo_sat.py --from_pretrained cogvlm-chat-v1.1 --fp16 --quant 4 --stream_chat
# In SAT version,--quant should be used with --fp16
```
  • 该程序提供以下超参数来控制生成过程: ``` usage: cli_demo_sat.py [-h] [--max_length MAX_LENGTH] [--top_p TOP_P] [--top_k TOP_K] [--temperature TEMPERATURE]

    optional arguments: -h, --help show this help message and exit --max_length MAX_LENGTH max length of the total sequence --top_p TOP_P top p for nucleus sampling --top_k TOP_K top k for top k sampling --temperature TEMPERATURE temperature for sampling ```

  • 点击 这里 查看不同模型与 --version 参数之间的对应关系的对应关系。

Situation 2.2 CLI (Huggingface version)

通过以下方式运行CLI演示:

# CogAgent
python cli_demo_hf.py --from_pretrained THUDM/cogagent-chat-hf --bf16
python cli_demo_hf.py --from_pretrained THUDM/cogagent-vqa-hf --bf16

# CogVLM
python cli_demo_hf.py --from_pretrained THUDM/cogvlm-chat-hf --bf16
python cli_demo_hf.py --from_pretrained THUDM/cogvlm-grounding-generalist --bf16
  • 如果你想手动下载权重,你可以将 --from_pretrained 后的路径替换为模型路径。

  • 你可以将 --bf16 更改为 --fp16, 或者 --quant 4。例如,我们的模型支持Huggingface的4-bit quantization: bash python cli_demo_hf.py --from_pretrained THUDM/cogvlm-chat-hf --quant 4

Situation 2.3 Web Demo

我们还提供了一个基于Gradio的本地网络演示。首先,通过运行 pip install gradio 来安装Gradio。然后下载并进入这个仓库,运行 web_demo.py。 详细的使用方法请参见下一节:

python web_demo.py --from_pretrained cogagent-chat --version chat --bf16
python web_demo.py --from_pretrained cogagent-vqa --version chat_old --bf16
python web_demo.py --from_pretrained cogvlm-chat-v1.1 --version chat_old --bf16
python web_demo.py --from_pretrained cogvlm-grounding-generalist --version base --bf16

网页演示的图形用户界面如下:

<img src=assets/web_demo-min.png width=70% />

选项3:微调 CogAgent / CogVLM

你可能想在你自己的任务中使用CogVLM,这需要 不同的输出风格或领域知识. 所有用于微调的代码都位于 finetune_demo/ 目录中。

我们在这里提供了一个使用lora进行 验证码识别 的微调示例。

  1. 首先下载 Captcha Images数据集。下载完成后,解压ZIP文件的内容。

  2. 要创建一个以80/5/15的比例进行训练/验证/测试划分,请执行以下操作: bash python utils/split_dataset.py

  3. 使用此命令开始微调:

    bash bash finetune_demo/finetune_(cogagent/cogvlm)_lora.sh

  4. 将模型合并到 model_parallel_size=1: (用你的训练 MP_SIZE 替换下面的4)

    bash torchrun --standalone --nnodes=1 --nproc-per-node=4 utils/merge_model.py --version base --bf16 --from_pretrained ./checkpoints/merged_lora_(cogagent/cogvlm490/cogvlm224)

  5. 估你的模型的性能。 bash bash finetune_demo/evaluate_(cogagent/cogvlm).sh

选项4:OpenAI格式

We provide the same API examples as GPT-4V, which you can view in openai_demo.

  1. 首先,启动节点
python openai_demo/openai_api.py
  1. 接下来,运行请求示例节点,这是一个连续对话的例子
python openai_demo/openai_api_request.py
  1. 你将得到类似于以下的输出
This image showcases a tranquil natural scene with a wooden pathway leading through a field of lush green grass. In the distance, there are trees and some scattered structures, possibly houses or small buildings. The sky is clear with a few scattered clouds, suggesting a bright and sunny day.

硬件需求

  • 模型推理:

For INT4 quantization: 1 * RTX 3090(24G) (CogAgent takes ~ 12.6GB, CogVLM takes ~ 11GB)

For FP16: 1 * A100(80G) or 2 * RTX 3090(24G)

  • 微调:

For FP16: 4 * A100(80G) [Recommend] or 8* RTX 3090(24G).

Model checkpoints

如果你从代码仓库运行 basic_demo/cli_demo*.py,它将自动下载SAT或Hugging Face的权重。或者,你也可以选择手动下载必要的权重。

  • CogAgent
模型名称 输入分辨率 介绍 Huggingface model SAT model
cogagent-chat 1120 CogAgent的聊天版本。支持GUI代理,多轮聊天和视觉定位。 link link
cogagent-vqa 1120 CogAgent的VQA版本。在单轮视觉对话中具有更强的能力。推荐用于VQA基准测试。 link link
  • CogVLM
模型名称 输入分辨率 介绍 Huggingface model SAT model
cogvlm-chat-v1.1 490 支持同时进行多轮聊天和视觉问答,支持自由的提示词。 link link
cogvlm-base-224 224 文本-图像预训练后的原始检查点。 link link
cogvlm-base-490 490 通过从 cogvlm-base-224 进行位置编码插值,将分辨率提升到490。 link link
cogvlm-grounding-generalist 490 此检查点支持不同的视觉定位任务,例如REC,定位字幕等。 link link

Introduction to CogVLM

  • CogVLM是一个强大的开源视觉语言模型(VLM)。CogVLM-17B拥有100亿的视觉参数和70亿的语言参数。
  • CogVLM-17B在10个经典的跨模态基准测试中取得了最佳性能,包括 NoCaps, Flicker30k captioning, RefCOCO, RefCOCO+, RefCOCOg, Visual7W, GQA, ScienceQA, VizWiz VQA and TDIUC, 并在 VQAv2, OKVQA, TextVQA, COCO 字幕等方面排名第二., 超越或匹敌 PaLI-X 55B. CogVLM还可以和你聊关于图片的话题。

点击查看MM-VET,POPE,TouchStone的结果。

Method LLM MM-VET POPE(adversarial) TouchStone
BLIP-2 Vicuna-13B 22.4 - -
Otter MPT-7B 24.7 - -
MiniGPT4 Vicuna-13B 24.4 70.4 531.7
InstructBLIP Vicuna-13B 25.6 77.3 552.4
LLaMA-Adapter v2 LLaMA-7B 31.4 - 590.1
LLaVA LLaMA2-7B 28.1 66.3 602.7
mPLUG-Owl LLaMA-7B - 66.8 605.4
LLaVA-1.5 Vicuna-13B 36.3 84.5 -
Emu LLaMA-13B 36.3 - -
Qwen-VL-Chat - - - 645.2
DreamLLM Vicuna-7B 35.9 76.5 -
CogVLM Vicuna-7B 52.8 87.6 742.0

点击查看cogvlm-grounding-generalist-v1.1的结果。

RefCOCO RefCOCO+ RefCOCOg Visual7W
val testA testB val testA testB val test test
cogvim-grounding-generalist 92.51 93.95 88.73 87.52 91.81 81.43 89.46 90.09 90.96
cogvim-grounding-generalist-v1.1 **92.76**

Core symbols most depended-on inside this repo

get_image_processor
called by 10
utils/utils/vision.py
add_model_specific_args
called by 7
utils/models/cogvlm_model.py
show
called by 6
composite_demo/conversation.py
llama2_tokenizer
called by 6
utils/utils/language.py
get_func
called by 5
utils/utils/language.py
get_client
called by 3
composite_demo/client.py
generate_stream
called by 3
composite_demo/client.py
images_are_same
called by 3
composite_demo/utils.py

Shape

Method 101
Function 91
Class 53
Route 2

Languages

Python100%

Modules by API surface

utils/models/eva_clip_L_hf.py54 symbols
openai_demo/openai_api.py22 symbols
utils/models/cogagent_model.py20 symbols
utils/utils/language.py18 symbols
utils/models/cogvlm_model.py17 symbols
utils/models/eva_clip_model.py13 symbols
finetune_demo/finetune_cogagent_demo.py11 symbols
finetune_demo/evaluate_cogagent_demo.py10 symbols
finetune_demo/finetune_cogvlm_demo.py9 symbols
composite_demo/conversation.py9 symbols
utils/utils/dataset.py8 symbols
utils/models/mixin.py8 symbols

Dependencies from manifests, versioned

SwissArmyTransformer0.4.9 · 1×
accelerate0.26.1 · 1×
deepspeed0.13.1 · 1×
fastapi0.110.1 · 1×
httpx0.27.0 · 1×
jsonlines4.0.0 · 1×
loguru0.7.2 · 1×
openai1.16.0 · 1×
pillow10.2.0 · 1×
pydantic2.6.0 · 1×
seaborn0.13.2 · 1×
spacy3.6.0 · 1×

For agents

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

⬇ download graph artifact