【免费下载链接】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_layers | 28 | Transformer 层数,决定模型"思考深度" |
hidden_size | 3584 | 每个 Token 的向量维度 |
num_attention_heads | 28 | 注意力头数,每头维度 128(3584÷28) |
num_key_value_heads | 4 | GQA 分组查询注意力:28 个 Q 头共享 4 组 KV,显著省显存 |
intermediate_size | 18944 | FFN 中间层宽度,约为主干宽度的 5.3 倍 |
vocab_size | 152064 | 词表规模,覆盖中英文及多模态占位符 |
max_position_embeddings | 32768 | 最长上下文 32K Token,足以容纳"多轮截图+历史操作" |
hidden_act | silu | 激活函数 |
rope_theta | 1000000.0 | RoPE 位置编码基频,支持长上下文 |
mrope_section | [16, 24, 24] | M-RoPE 多模态旋转位置编码,分别编码时间/高度/宽度三个维度 |
torch_dtype | bfloat16 | 权重精度 |
tie_word_embeddings | false | 输入 Embedding 与输出词表不共享权重 |
其中M-RoPE(mrope_section: [16, 24, 24])是 GUI 智能体的关键设计:它把位置信息拆成"时间 + 空间"三路,让模型既知道"这是第几张截图",也理解"按钮在屏幕的哪个位置",这正是 GUI 任务所必需的空间感知能力。
四、视觉塔配置:一张截图如何变成模型能懂的序列
config.json内的vision_config描述了 ViT 视觉编码器,配合 preprocessor_config.json 中的图像处理参数,构成完整的"看"能力:
| 配置 | 值 | 含义 |
|---|---|---|
depth | 32 | 视觉编码器 32 层 Transformer |
embed_dim | 1280 | 视觉特征维度 |
num_heads | 16 | 视觉注意力头数 |
patch_size | 14 | 图像被切成 14×14 像素的小块 |
spatial_merge_size | 2 | 2×2 的视觉小块合并为 1 个 Token |
temporal_patch_size | 2 | 视频/连续截图中每 2 帧合并,支持时序输入 |
mlp_ratio | 4 | 视觉 FFN 宽度倍数 |
hidden_size | 3584 | 视觉特征经 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:
| Token | ID | 用途 |
|---|---|---|
<|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_id | 151643 | 序列起始符 |
当一张截图进入模型时,它会被展开为<\|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
- 定位:ZeroGUI 在线强化学习框架 × OSWorld 基准训练的 GUI 操作智能体,基座为 UI-TARS-7B-DPO,架构是 Qwen2-VL;
- 架构:28 层、宽 3584 的语言解码器 + 32 层、宽 1280 的 ViT 视觉塔,通过 M-RoPE 与动态分辨率理解屏幕截图;
- 权重:4 个 safetensors 分片共 15.44 GiB(bf16,约 83 亿参数),索引文件精确映射每个参数位置;
- 部署:单张 24 GB 显存显卡即可跑满血 bf16,长上下文开销受 GQA 大幅优化。
理解了这个"全景图",你就能快速判断它的能力边界(32K 上下文、约 2700 视觉 Token 上限),并在自己的环境中把它接入 GUI 自动化流程。
【免费下载链接】ZeroGUI-OSWorld-7B
相关推荐
拆解ZeroGUI-AndroidLab-7B的Qwen2-VL架构:7B参数与动态分辨率完全解析
拆解ZeroGUI AndroidLab 7B的Qwen2 VL架构:7B参数与动态分辨率完全解析 本文带你完整拆解 ZeroGUI AndroidLab 7B
3个关键升级:如何让Mac上的CrossOver游戏性能翻倍?
3个关键升级:如何让Mac上的CrossOver游戏性能翻倍? 还在为Mac上运行Windows游戏时的卡顿和兼容性问题烦恼吗?每次启动游戏都要忍受漫长的加载时
桌面应用开发工具Qwen2-VL-7B-Instruct 多模态模型深度解析与使用指南
Qwen2 VL 7B Instruct 多模态模型深度解析与使用指南 引言 Qwen2 VL 7B Instruct 是 Qwen VL 系列的最新版本,代表
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考