CogAgent 是开源、基于视觉语言模型(VLM)的端到端 GUI Agent(图形界面智能体)。官方仓库为 zai-org/CogAgent,提供模型说明、推理与微调方法、App 示例等资料。
主要版本与进展
- 2024 年 12 月:开源最新版 CogAgent-9B-20241220 模型。相比前代,在 GUI 感知、推理准确度、动作空间完整性、任务通用性与泛化能力上有显著提升,支持通过屏幕截图和自然语言进行中英双语交互。
- 2024 年 6 月:CogAgent 被 CVPR 2024 接收,并被认定为会议 Highlight(前 3%)。
- 2023 年 12 月:开源首个 GUI Agent:CogAgent(原仓库见介绍),并发布论文 CogAgent Paper。
- 2023 年 11 月:发布第一代 CogAgent,相关代码与模型权重见 CogVLM & CogAgent 官方仓库。
模型介绍 CogAgent-9B-20241220 基于 GLM-4V-9B,这是一个双语开源 VLM 基座模型。通过数据收集与优化、多阶段训练和策略改进,该版本在 GUI 感知、推理预测准确度、动作空间完整性和跨任务泛化方面取得明显进步,支持截图与语言输入的中英双语交互。该模型已应用于智谱 AI 的 GLM-PC 产品。
能力演示 该模型在多个平台和类别的 GUI Agent 任务及 GUI Grounding 基准上取得领先结果。技术博客中将其与基于 API 的商业模型(GPT-4o-20240806、Claude-3.5-Sonnet)、商业 API 加 GUI Grounding 模型(GPT-4o + UGround、GPT-4o + OS-ATLAS)以及开源 GUI Agent 模型(Qwen2-VL、ShowUI、SeeClick)进行了比较。结果显示,CogAgent 在 GUI 定位(Screenspot)、单步操作(OmniAct)、中文逐步自研基准(CogAgentBench-basic-cn)和多步操作(OSWorld)上领先;在 OSWorld 上仅略逊于专注 Computer Use 的 Claude-3.5-Sonnet 以及 GPT-4o 结合外部 GUI Grounding 模型的方案。
推理与微调成本
- 推理至少需要 29GB 显存(BF16 精度)。不建议使用 INT4 推理,因为性能损失明显;INT4 推理显存约 8GB,INT8 约 15GB,在 inference/cli_demo.py 中已注释掉相关行,可取消注释使用,但仅支持 NVIDIA 设备。
- 以上 GPU 指 A100 或 H100,其他设备需相应计算所需 GPU/CPU 内存。
- 监督微调(SFT)时,代码库冻结视觉编码器,批大小为 1,使用 8 张 A100 训练;总输入 token(含图像,图像占 1600 token)合计 2048 token。该代码库无法在不冻结视觉编码器的情况下进行 SFT 微调。LoRA 微调不冻结视觉编码器,批大小为 1,使用 1 张 A100;总输入 token(含图像 1600 token)也为 2048。上述设置中,SFT 微调每张 GPU 至少需要 60GB 显存(共 8 卡),LoRA 微调单卡至少需要 70GB 显存(无法拆分)。
- Ascend 设备未测试 SFT 微调,仅在 Atlas800 训练服务器集群上测试过;需根据 Ascend 设备下载链接中的加载机制修改推理代码。
- 在线演示链接不支持控制计算机,只能查看模型推理结果,建议本地部署。
模型输入与输出 cogagent-9b-20241220 是智能体型执行模型,而非对话模型,不支持连续对话,但支持连续执行历史。每次需开启新会话,并向模型提供过去历史。为获得最佳 GUI Agent 表现,采用严格输入输出格式。用户输入拼接顺序为:query = f'{task}{history}{platform}{format}'。若需模型继续回答,可在 {task} 后追加 '[Continue]\n',拼接为:query = f'{task}[Continue]\n{history}{platform}{format}'。
- task 字段:用户任务描述,文本格式,类似提示词,需简洁清晰。
- platform 字段:支持三个平台——Windows 10、11 使用 WIN;macOS 14、15 使用 Mac;Android 13、14、15(及其他 GUI 操作相似变体)使用 Mobile。若不是这些系统,效果可能欠佳。
- format 字段:返回格式选项包括:Answer in Action-Operation-Sensitive format(本仓库默认演示返回类型,返回动作、对应操作与敏感级别);Answer in Status-Plan-Action-Operation format(返回状态、计划与对应操作);Answer in Status-Action-Operation-Sensitive format(返回状态、动作、对应操作与敏感);Answer in Status-Action-Operation format(返回状态与动作);Answer in Action-Operation format(返回动作与对应操作)。
- history 字段:按上述顺序拼接。
- 输出内容可包含:敏感操作(<<敏感操作>> 与 <<一般操作>>,仅在请求 Sensitive 格式时返回);Plan、Status、Action 字段(仅请求对应字段时返回);General answer 部分(格式化答案前的总结);Grounded Operation 字段(描述具体操作,包括位置、类型与动作细节;box 属性表示执行坐标区域,element_type 表示元素类型,element_info 描述元素,均包裹在“操作指令”中)。 注意:即使没有历史动作,提示中仍需追加 'History steps:'。模型输出为严格格式的字符串,不支持 JSON 输出,需严格按官方要求解析。模型必须输入图像,纯文本对话无法完成 GUI Agent 任务。
运行模型 需安装 Python 3.10.16 或以上,并安装依赖。基于 transformers 的本地推理可运行相应命令;命令行交互代码需提供图像路径。若模型返回含边界框的结果,会输出标注边界框的图像,指示操作应执行区域,保存到 output_image_path,文件名为 {your_input_image_name}_{round}.png。format_key 表示期望响应格式,platform 字段指定平台(如 Mac),因此 platform 设为 Mac 时所有上传截图必须来自 macOS。若需运行在线 Web 演示,支持连续上传图像进行交互推理,可运行相应命令,体验与 HuggingFace Space 在线演示相同,模型返回对应边界框与执行类别。
App 与微调 官方提供基础演示 App,说明如何在带 GPU 的服务器上部署模型并在本地运行 cogagent-9b-20241220 执行自动化 GUI 操作。官方声明无法保证 AI 行为安全,使用时需谨慎,示例仅供学术参考,对由此产生的问题不承担法律责任。若对 App 感兴趣,可查看文档;若想微调模型,可参考相关说明。