🌟 跳转到详细介绍: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-chat、cogvlm-grounding-generalist/base、cogvlm-base-490/224。现在你可以用 transformers 库几行代码进行推理了!2023/10/27 CogVLM 双语版本已在线可用!欢迎试用!2023/10/5 CogVLM-17B 发布。如需使用 Agent 和 Grounding 功能,请参考 使用指南 - 任务提示词
我们支持两种模型推理的 GUI:命令行界面和Web Demo。如果你想在 Python 代码中使用,可以轻松修改 CLI 脚本以适应你的情况。
首先,需要安装依赖项。
# CUDA >= 11.8
pip install -r requirements.txt
python -m spacy download en_core_web_sm
所有推理代码都位于 basic_demo/ 目录下。请先切换到该目录,然后再进行后续操作。
通过以下命令运行 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 后面的路径替换为模型路径。--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 参数的对应关系。
通过以下命令运行 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
我们还提供了一个基于 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 界面如下:
你可能希望在自己的任务中使用 CogVLM,这需要不同的输出风格或领域知识。所有微调代码都位于 finetune_demo/ 目录下。
我们这里提供了一个使用 LoRA 进行验证码识别的微调示例。
bash
python utils/split_dataset.pybash
bash finetune_demo/finetune_(cogagent/cogvlm)_lora.shmodel_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)bash
bash finetune_demo/evaluate_(cogagent/cogvlm).sh我们提供了与 GPT-4V 相同的 API 示例,你可以在 openai_demo 中查看。
python openai_demo/openai_api.pypython openai_demo/openai_api_request.pyThis 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.如果你从代码仓库运行 basic_demo/cli_demo*.py,它将自动下载 SAT 或 Hugging Face 权重。或者,你也可以选择手动下载必要的权重。
| 模型名称 | 输入分辨率 | 简介 | Huggingface 模型 | SAT 模型 |
|---|---|---|---|---|
| cogagent-chat | 1120 | CogAgent 的聊天版本。支持 GUI Agent、多轮对话和视觉定位。 | HF 链接 OpenXLab 链接 |
HF 链接 OpenXLab 链接 |
| cogagent-vqa | 1120 | CogAgent 的 VQA 版本。在单轮视觉对话方面能力更强。推荐用于 VQA 基准测试。 | HF 链接 OpenXLab 链接 |
HF 链接 OpenXLab 链接 |
| 模型名称 | 输入分辨率 | 简介 | Huggingface 模型 | SAT 模型 |
|---|---|---|---|---|
| cogvlm-chat-v1.1 | 490 | 同时支持多轮聊天和 VQA,使用不同的提示词。 | [HF |