ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ZeroGUI-OSWorld-7B模型架构全景图:基于Qwen2-VL的7B多模态GUI智能体参数与权重详解

ZeroGUI-OSWorld-7B模型架构全景图:基于Qwen2-VL的7B多模态GUI智能体参数与权重详解

【免费下载链接】ZeroGUI-OSWorld-7B

项目地址:https://ai.gitcode.com/OpenGVLab/ZeroGUI-OSWorld-7B
点击查看免费下载

ZeroGUI-OSWorld-7B 是一款由 ZeroGUI 全自动在线强化学习框架训练出的7B 级多模态 GUI 智能体模型,基于 Qwen2-VL 架构、以 bfloat16 精度保存,可直接接收屏幕截图并输出 GUI 操作。本文带你逐层拆解 config.json 中的核心参数、视觉编码器配置、特殊 Token ID 以及 4 个 safetensors 权重分片的分布规律,帮你快速理解这个模型的"解剖结构"。

一、它是什么:一个"零人工成本"训练出来的 GUI 智能体

ZeroGUI 是一个全自动的在线强化学习(Online RL)框架,目标是让 GUI Agent 在交互式环境中零人工成本地自我训练与适应,具备三大能力:

  • 自动任务生成:自动生成多样、可执行的 GUI 任务;
  • 自动奖励评估:基于轨迹截图给出二值任务奖励,并用投票机制避免"幻觉式成功";
  • 两阶段在线 RL:结合生成任务训练与测试时自适应,持续提升智能体表现。

ZeroGUI-OSWorld-7B 就是该框架训练出的模型产物,针对OSWorld 基准进行了强化,用于在真实计算机桌面环境中执行点击、输入等 GUI 操作。

关键信息说明
基座模型ByteDance-Seed/UI-TARS-7B-DPO(见 README.md)
模型架构Qwen2VLForConditionalGeneration(Qwen2-VL 条件生成模型)
任务类型image-text-to-text:输入截图+文本,输出操作文本
权重精度bfloat16
训练框架ZeroGUI(论文:ZeroGUI: Automating Online GUI Learning at Zero Human Cost)

二、模型卡速览:仓库文件各自的角色

本仓库是一个标准的 Hugging Face 模型权重仓库,每个文件各司其职:

文件作用新手须知
config.json模型主配置架构、层数、隐藏维度、视觉塔参数都在这里
generation_config.json生成配置定义了开始/结束 Token ID(151643 / 151645)
preprocessor_config.json图像预处理配置决定截图如何缩放、切块、归一化
tokenizer.json、vocab.json、merges.txt分词器文本↔Token ID 的转换规则
added_tokens.json新增特殊 Token多模态与对话占位符的 ID 映射
model-00001-of-00004.safetensors ~ model-00004-of-00004.safetensors模型权重分片权重按层切分为 4 片存储
model.safetensors.index.json权重索引记录每个参数位于哪个分片
chat_template.json、tokenizer_config.json对话模板与分词器配置多轮对话的 prompt 拼装规则

💡 新手建议:加载模型时只需读取config.json+ 4 个权重分片 + 分词器文件,其余是运行时配套配置。

三、语言骨干核心参数表:28 层 Transformer 一览

打开 config.json,语言主干是典型的 Qwen2 风格解码器:

参数值通俗解读
num_hidden_layers28Transformer 层数,决定模型"思考深度"
hidden_size3584每个 Token 的向量维度
num_attention_heads28注意力头数,每头维度 128(3584÷28)
num_key_value_heads4GQA 分组查询注意力:28 个 Q 头共享 4 组 KV,显著省显存
intermediate_size18944FFN 中间层宽度,约为主干宽度的 5.3 倍
vocab_size152064词表规模,覆盖中英文及多模态占位符
max_position_embeddings32768最长上下文 32K Token,足以容纳"多轮截图+历史操作"
hidden_actsilu激活函数
rope_theta1000000.0RoPE 位置编码基频,支持长上下文
mrope_section[16, 24, 24]M-RoPE 多模态旋转位置编码,分别编码时间/高度/宽度三个维度
torch_dtypebfloat16权重精度
tie_word_embeddingsfalse输入 Embedding 与输出词表不共享权重

其中M-RoPE(mrope_section: [16, 24, 24])是 GUI 智能体的关键设计:它把位置信息拆成"时间 + 空间"三路,让模型既知道"这是第几张截图",也理解"按钮在屏幕的哪个位置",这正是 GUI 任务所必需的空间感知能力。

四、视觉塔配置:一张截图如何变成模型能懂的序列

config.json内的vision_config描述了 ViT 视觉编码器,配合 preprocessor_config.json 中的图像处理参数,构成完整的"看"能力:

配置值含义
depth32视觉编码器 32 层 Transformer
embed_dim1280视觉特征维度
num_heads16视觉注意力头数
patch_size14图像被切成 14×14 像素的小块
spatial_merge_size22×2 的视觉小块合并为 1 个 Token
temporal_patch_size2视频/连续截图中每 2 帧合并,支持时序输入
mlp_ratio4视觉 FFN 宽度倍数
hidden_size3584视觉特征经 Merger 模块对齐到语言主干宽度

动态分辨率是精髓所在。预处理配置中min_pixels = 3136、max_pixels = 2116800,意味着:

  • 小图至少保留 16 个 patch(即4 个视觉 Token),避免过度压缩;
  • 大图最多约 11100 个 patch(即约 2700 个视觉 Token),保证细节不丢;
  • 一张 1080p 屏幕截图通常落在几百个视觉 Token 的区间,模型能"看清"按钮文字与图标。

归一化参数image_mean ≈ [0.4815, 0.4578, 0.4082]、image_std ≈ [0.2686, 0.2613, 0.2758]沿用了 CLIP 体系的统计量,让视觉塔稳定工作。

五、特殊 Token ID 速查:模型如何定位截图

GUI 智能体最常用的一条链路是:截图 → <image> 占位符 → 生成动作。相关 ID 记录在 added_tokens.json 与 config.json:

TokenID用途
<|im_start|>/<|im_end|>151644 / 151645对话轮次分隔符(<|im_end|>同时是eos_token_id)
<\|vision_start\|>/<\|vision_end\|>151652 / 151653视觉块起止边界
<\|vision\|>151654视觉块内部占位
<\|image_pad\|>(image_token_id)151655每个视觉 Token 的实际占位符
<\|video_pad\|>(video_token_id)151656视频帧占位符
bos_token_id151643序列起始符

当一张截图进入模型时,它会被展开为<\|vision_start\|>+ N 个image_token_id+<\|vision_end\|>,语言模型据此在正确位置"读取"屏幕内容,随后以文本形式输出诸如点击坐标、按键序列等操作指令。

六、权重分片详解:16.5 GB 权重藏在哪里

model.safetensors.index.json 显示总权重规模total_size = 16,582,751,232 字节(约15.44 GiB),按 bfloat16 双字节反推,模型总参数量约83 亿。按分片内容拆解:

分片存放内容
model-00001-of-00004.safetensors词嵌入model.embed_tokens、语言层 0–9、完整视觉塔(visual.patch_embed、32 层visual.blocks、visual.merger)
model-00002-of-00004.safetensors语言层 10–16(注意力部分)
model-00003-of-00004.safetensors语言层 16(FFN 部分)–25
model-00004-of-00004.safetensors语言层 26–27、最终归一化model.norm、输出头lm_head

几个值得注意的结构细节:

  • 每个注意力层都带有q/k/v_proj.bias(Qwen2-VL 特有的带偏置注意力投影),而 FFN 与输出头无偏置;
  • lm_head.weight独立存储(tie_word_embeddings = false),即 152064 × 3584 的完整输出矩阵;
  • 索引文件本身就是一个"权重地图",加载器靠它按名字精确取回每个参数,这也是 safetensors 比旧格式更安全(不执行任意代码)的原因。

七、部署估算:显存与硬件怎么选

基于上述参数,可以给出新手友好的显存预算:

项目估算
权重(bf16)≈15.5 GiB
KV 缓存(32K 上下文 × 4 组 KV 头 × 128 维 × 28 层)≈1.75 GiB
激活与临时开销数 GiB 起
建议最低显存单卡 24 GB 左右(如 RTX 3090/4090、A10G)

由于采用了GQA(28 Q 头 : 4 KV 头),长轨迹任务的 KV 缓存开销比传统 MHA 低约 7 倍,这对"连续 20+ 张截图"的 GUI 长轨迹场景非常友好。若显存不足,可借助量化推理框架将 bf16 权重压至 int8/int4,但注意 GUI 任务对视觉细节敏感,建议不低于 int8。

⚠️ 本仓库仅提供模型权重,训练与推理代码请参考 ZeroGUI 官方开源实现,论文详见 README.md 引用的 arXiv 2505.23762。

八、总结:3 分钟记住 ZeroGUI-OSWorld-7B

  1. 定位:ZeroGUI 在线强化学习框架 × OSWorld 基准训练的 GUI 操作智能体,基座为 UI-TARS-7B-DPO,架构是 Qwen2-VL;
  2. 架构:28 层、宽 3584 的语言解码器 + 32 层、宽 1280 的 ViT 视觉塔,通过 M-RoPE 与动态分辨率理解屏幕截图;
  3. 权重:4 个 safetensors 分片共 15.44 GiB(bf16,约 83 亿参数),索引文件精确映射每个参数位置;
  4. 部署:单张 24 GB 显存显卡即可跑满血 bf16,长上下文开销受 GQA 大幅优化。

理解了这个"全景图",你就能快速判断它的能力边界(32K 上下文、约 2700 视觉 Token 上限),并在自己的环境中把它接入 GUI 自动化流程。

【免费下载链接】ZeroGUI-OSWorld-7B

项目地址:https://ai.gitcode.com/OpenGVLab/ZeroGUI-OSWorld-7B
点击查看免费下载
上一篇:Saber 手写笔记应用:5 分钟装好,笔迹同步到所有设备
下一篇:3条命令修好Windows DLL缺失:Visual C++运行库一键安装

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进