OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  CogVLM — 开源视觉语言模型,适合多模态理解与问答

CogVLM — 开源视觉语言模型,适合多模态理解与问答

 
  mail ·  2026-03-05 12:31:49 · 4 次点击  · 0 条评论  

CogVLM & CogAgent

📗 中文版README

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

📔 更详细的使用信息,请参阅:CogVLM & CogAgent 技术文档(中文)

CogVLM

📖 论文: CogVLM: Visual Expert for Pretrained Language Models

CogVLM 是一个强大的开源视觉语言模型 (VLM)。CogVLM-17B 拥有 100 亿视觉参数和 70 亿语言参数,支持 490*490 分辨率的图像理解和多轮对话

CogVLM-17B 在 10 个经典跨模态基准测试中取得了最先进的性能,包括 NoCaps、Flicker30k captioning、RefCOCO、RefCOCO+、RefCOCOg、Visual7W、GQA、ScienceQA、VizWiz VQA 和 TDIUC。

CogAgent

📖 论文: 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。在 GUI 操作数据集(包括 AITW 和 Mind2Web)上显著超越了现有模型

🌐 CogVLM2 的 Web Demo: 此链接

目录

发布动态

  • 🔥🔥🔥 新闻: 2024/5/20: 我们发布了下一代模型 CogVLM2,它基于 llama3-8b,在大多数情况下达到(或优于)GPT-4V 的水平!立即下载试用!
  • 🔥🔥 新闻: 2024/4/5: CogAgent 被选为 CVPR 2024 亮点论文!
  • 🔥 新闻: 2023/12/26: 我们发布了 CogVLM-SFT-311K 数据集,其中包含超过 15 万条我们用于仅 CogVLM v1.0 训练的数据。欢迎关注和使用。
  • 新闻: 2023/12/18: 新版 Web UI 上线! 我们推出了基于 Streamlit 的新版 Web UI,用户可以无痛地与 CogVLM、CogAgent 在我们的 UI 中对话,获得更好的用户体验。
  • 新闻: 2023/12/15: CogAgent 正式发布! CogAgent 是基于 CogVLM 开发的图像理解模型。它具有基于视觉的 GUI Agent 能力,并在图像理解方面有进一步增强。它支持 1120*1120 分辨率的图像输入,并具备多轮图像对话、GUI Agent、Grounding 等多种能力。
  • 新闻: 2023/12/8 我们已将 cogvlm-grounding-generalist 的检查点更新为 cogvlm-grounding-generalist-v1.1,在训练时加入了图像增强,因此更加鲁棒。详见详情
  • 新闻: 2023/12/7 CogVLM 现在支持4位量化!推理仅需 11GB GPU 显存!
  • 新闻: 2023/11/20 我们已将 cogvlm-chat 的检查点更新为 cogvlm-chat-v1.1,统一了聊天和 VQA 版本,并在多个数据集上刷新了 SOTA。详见详情
  • 新闻: 2023/11/20 我们在 🤗Huggingface 上发布了 cogvlm-chatcogvlm-grounding-generalist/basecogvlm-base-490/224。现在你可以用 transformers 库几行代码进行推理了!
  • 2023/10/27 CogVLM 双语版本已在线可用!欢迎试用!
  • 2023/10/5 CogVLM-17B 发布。

快速开始

选项 1:使用 Web Demo 进行推理。

如需使用 Agent 和 Grounding 功能,请参考 使用指南 - 任务提示词

选项 2:自行部署 CogVLM / CogAgent

我们支持两种模型推理的 GUI:命令行界面Web Demo。如果你想在 Python 代码中使用,可以轻松修改 CLI 脚本以适应你的情况。

首先,需要安装依赖项。

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

所有推理代码都位于 basic_demo/ 目录下。请先切换到该目录,然后再进行后续操作。

情况 2.1 命令行界面 (SAT 版本)

通过以下命令运行 CLI demo:

# 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

程序将自动下载 SAT 模型并在命令行中进行交互。你可以通过输入指令并按回车键生成回复。
输入 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
# 在 SAT 版本中,--quant 应与 --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 参数的对应关系。

情况 2.2 命令行界面 (Huggingface 版本)

通过以下命令运行 CLI demo:

# 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-hf --bf16
  • 如果你想手动下载权重,可以将 --from_pretrained 后面的路径替换为模型路径。
  • 你可以将 --bf16 改为 --fp16,或 --quant 4。例如,我们的模型支持 Huggingface 的4位量化

    bash python cli_demo_hf.py --from_pretrained THUDM/cogvlm-chat-hf --quant 4

情况 2.3 Web Demo

我们还提供了一个基于 Gradio 的本地 Web Demo。首先,运行 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

Web Demo 的 GUI 界面如下:

选项 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:(将下面的 4 替换为你训练时的 MP_SIZE
    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 Vision 格式

我们提供了与 GPT-4V 相同的 API 示例,你可以在 openai_demo 中查看。

  1. 首先,启动服务节点
    python openai_demo/openai_api.py
  2. 接着,运行请求示例节点,这是一个连续对话的示例
    python openai_demo/openai_api_request.py
  3. 你将得到类似以下的输出
    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.

硬件要求

  • 模型推理:
    • INT4 量化:1 * RTX 3090(24G) (CogAgent 约需 ~ 12.6GB,CogVLM 约需 ~ 11GB)
    • FP16:1 * A100(80G) 或 2 * RTX 3090(24G)
  • 微调:
    • FP16:4 * A100(80G) [推荐] 或 8 * RTX 3090(24G)。

模型检查点

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

  • CogAgent
模型名称 输入分辨率 简介 Huggingface 模型 SAT 模型
cogagent-chat 1120 CogAgent 的聊天版本。支持 GUI Agent、多轮对话和视觉定位。 HF 链接
OpenXLab 链接
HF 链接
OpenXLab 链接
cogagent-vqa 1120 CogAgent 的 VQA 版本。在单轮视觉对话方面能力更强。推荐用于 VQA 基准测试。 HF 链接
OpenXLab 链接
HF 链接
OpenXLab 链接
  • CogVLM
模型名称 输入分辨率 简介 Huggingface 模型 SAT 模型
cogvlm-chat-v1.1 490 同时支持多轮聊天和 VQA,使用不同的提示词。 [HF
4 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私政策 ·  服务条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 77 ms
Developed with Cursor