ProCreations commited on
Commit
2dd9cd4
·
verified ·
1 Parent(s): ffa3e4a

Model card

Browse files
.gitattributes CHANGED
@@ -34,3 +34,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  tokenizer.json filter=lfs diff=lfs merge=lfs -text
 
 
 
 
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  tokenizer.json filter=lfs diff=lfs merge=lfs -text
37
+ assets/bench_apps.png filter=lfs diff=lfs merge=lfs -text
38
+ assets/bench_live.png filter=lfs diff=lfs merge=lfs -text
39
+ assets/bench_live_synth.png filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ license_link: https://huggingface.co/Qwen/Qwen3.5-4B/blob/main/LICENSE
4
+ base_model:
5
+ - Qwen/Qwen3.5-4B
6
+ base_model_relation: finetune
7
+ library_name: transformers
8
+ pipeline_tag: image-text-to-text
9
+ language:
10
+ - en
11
+ tags:
12
+ - browser-agent
13
+ - browser-use
14
+ - computer-use
15
+ - agent
16
+ - tool-use
17
+ - qwen3.5
18
+ ---
19
+
20
+ # Nib 4B (preview)
21
+
22
+ **Nib is a small browser agent.** It is [Qwen3.5-4B](https://huggingface.co/Qwen/Qwen3.5-4B) post-trained to work
23
+ websites through the tools of common agent harnesses (Playwright MCP, browser-use, agent-browser-style CLIs, Chrome
24
+ DevTools MCP, Aside, computer-use loops and coding agents that drive a browser). It reads page snapshots and
25
+ screenshots, calls tools, and reports what it found.
26
+
27
+ This is a **preview**: it is useful, but it still makes mistakes a bigger model would not, and it too often reports
28
+ success on tasks it did not finish (see [Limitations](#limitations)). Check its answers before you rely on them.
29
+
30
+ - **About twice as good as its base** on our browser tasks: 62% vs 29–30% on live web + synthetic tasks, and 80% vs 23%
31
+ on self-hosted web apps.
32
+ - **Close to models many times its size**: on the combined set it is within noise of DeepSeek V4.1 Flash (high) and of
33
+ the untrained Qwen3.8-27B (tied with thinking off, 3–6 points behind with thinking on), and it leads both on
34
+ self-hosted apps.
35
+ - **Fewer tokens**: 1,300–2,500 output tokens per task, 17–41% fewer than its base with thinking on.
36
+ - **Four reasoning efforts**: thinking off, low, medium and xhigh, picked per request.
37
+
38
+ ## Benchmarks
39
+
40
+ Every model ran the same tasks with the same harnesses (Aside, Playwright MCP and an agent-browser-style bash CLI).
41
+ These are our own task sets, not public benchmarks:
42
+
43
+ - **Live web (120 tasks):** real websites. Graded by one LLM judge with an evidence digest of the episode.
44
+ - **Synthetic (108 tasks):** generated web apps with planted facts and forms. Graded by code.
45
+ - **Self-hosted web apps (62 tasks):** fresh sandboxes of Gitea, WordPress, Odoo and similar apps. Graded by code against
46
+ the app's state.
47
+
48
+ Charts plot success against mean output tokens per task; lines connect a model's reasoning efforts.
49
+
50
+ ![Live web + synthetic tasks](https://huggingface.co/ProCreations/nib-4b-preview/resolve/main/assets/bench_live_synth.png)
51
+
52
+ ![Live web tasks](https://huggingface.co/ProCreations/nib-4b-preview/resolve/main/assets/bench_live.png)
53
+
54
+ ![Self-hosted web-app tasks](https://huggingface.co/ProCreations/nib-4b-preview/resolve/main/assets/bench_apps.png)
55
+
56
+ Success % on live web + synthetic / live web only / self-hosted apps, and mean output tokens per task (live + synthetic):
57
+
58
+ | Model | Setting | Live + synthetic | Live web | Self-hosted apps | Tokens |
59
+ |---|---|---:|---:|---:|---:|
60
+ | **Nib 4B** | off | 56.6 | 52.5 | 80.6 | 1,293 |
61
+ | **Nib 4B** | low | 61.8 | 53.3 | **82.3** | 1,783 |
62
+ | **Nib 4B** | medium | 59.2 | 49.2 | 79.0 | 1,955 |
63
+ | **Nib 4B** | xhigh | 62.3 | 55.8 | 80.6 | 2,537 |
64
+ | Qwen3.5-4B (base, untrained) | off | 30.3 | 37.5 | 22.6 | 1,807 |
65
+ | Qwen3.5-4B (base, untrained) | thinking on | 28.5 | 35.6 | 22.6 | 3,040 |
66
+ | Qwen3.5-9B (untrained) | off | 41.2 | 49.2 | not run | 1,926 |
67
+ | Qwen3.5-9B (untrained) | thinking on | 36.7 | 42.2 | not run | 2,983 |
68
+ | Qwen3.8-27B (untrained) | off | 56.1 | 55.0 | 64.5 | 1,444 |
69
+ | Qwen3.8-27B (untrained) | low | 65.8 | 65.0 | 75.8 | 2,727 |
70
+ | Qwen3.8-27B (untrained) | medium | 64.9 | 66.7 | 64.5 | 2,188 |
71
+ | Qwen3.8-27B (untrained) | xhigh | 65.8 | 66.7 | 77.4 | 3,771 |
72
+ | Qwen3.8-Flash-Next | medium | 74.6 | 70.8 | not run | 3,179 |
73
+ | Mistral Large 4 | high | 63.6 | 67.5 | 79.0 | 2,884 |
74
+ | DeepSeek V4.1 Flash | high | 60.1 | 55.8 | 66.1 | 3,311 |
75
+ | GLM 5.3 | high | 47.4 | 48.3 | 64.5 | 1,163 |
76
+
77
+ - 95% confidence intervals are about ±6 points (live + synthetic), ±9 (live web) and ±10 (apps).
78
+ - Qwen3.5-4B and Qwen3.5-9B have no effort levels (their chat template only turns thinking on or off); their
79
+ "thinking on" row averages three runs.
80
+ - Nib trained on other tasks from the same synthetic generators and the same self-hosted apps (never the evaluation
81
+ tasks), so part of its lead there is in-distribution. Live web is the fairest comparison.
82
+ - The other models ran through their providers' APIs at one setting, two days before Nib's runs. Live sites change;
83
+ synthetic and app tasks do not.
84
+ - On a larger and harder live-web set (581 tasks across 8 harnesses), Nib scores about 45% against 56% for the
85
+ untrained Qwen3.8-27B, using about half the tokens.
86
+
87
+ ## Using Nib
88
+
89
+ Nib uses the Qwen3.5 architecture (hybrid Gated DeltaNet + attention, with a vision encoder). We tested it with
90
+ **SGLang 0.5.21**:
91
+
92
+ ```bash
93
+ python -m sglang.launch_server \
94
+ --model-path ProCreations/nib-4b-preview --served-model-name nib-4b \
95
+ --context-length 131072 --reasoning-parser qwen3 --tool-call-parser qwen3_coder \
96
+ --mamba-ssm-dtype bfloat16 --mamba-radix-cache-strategy extra_buffer_lazy --trust-remote-code
97
+ ```
98
+
99
+ Pick the reasoning effort per request through the chat template:
100
+
101
+ ```python
102
+ from openai import OpenAI
103
+ client = OpenAI(base_url="http://127.0.0.1:30000/v1", api_key="none")
104
+ resp = client.chat.completions.create(
105
+ model="nib-4b",
106
+ messages=[{"role": "user", "content": "Find the opening hours of the Louvre today."}],
107
+ tools=my_browser_tools, # your harness's tools
108
+ temperature=1.0, top_p=0.95, # what all our evaluations used
109
+ extra_body={"chat_template_kwargs": {"enable_thinking": True, "reasoning_effort": "low"}},
110
+ )
111
+ ```
112
+
113
+ | Effort | `chat_template_kwargs` | When to use it |
114
+ |---|---|---|
115
+ | off | `{"enable_thinking": false}` | fastest and cheapest; fine for simple, well-specified tasks |
116
+ | low | `{"enable_thinking": true, "reasoning_effort": "low"}` | best balance in our tests |
117
+ | medium | `{"enable_thinking": true, "reasoning_effort": "medium"}` | |
118
+ | xhigh | `{"enable_thinking": true}` (the default) | most careful, most tokens |
119
+
120
+ Tips:
121
+ - Nib works best inside an agent harness that gives it browser tools and page snapshots. It was trained with
122
+ Playwright MCP, browser-use, agent-browser-style CLIs, Chrome DevTools MCP, Aside, Qwen-style computer use, and coding
123
+ agents (Pi, OpenCode) driving a browser.
124
+ - Screenshots help: it was trained with the images these harnesses send.
125
+ - Most training episodes fit in 32k tokens. Longer sessions work, but quality on very long contexts is untested.
126
+ - Not tested with vLLM, llama.cpp or MLX. They may work wherever Qwen3.5 is supported.
127
+
128
+ ## Quantized versions
129
+
130
+ Every quant keeps the vision encoder, embeddings, norms, Gated DeltaNet gates and MTP weights in their original
131
+ precision. Agreement is measured against these BF16 weights on 5,070 held-out assistant tokens from agent episodes.
132
+
133
+ | Repo | Format | Size | Mean KL | Top-1 agreement | Browser tasks (581-task live set) |
134
+ |---|---|---:|---:|---:|---|
135
+ | this repo | BF16 | 9.3 GB | – | – | 45.3% |
136
+ | [nib-4b-preview-FP8](https://huggingface.co/ProCreations/nib-4b-preview-FP8) | FP8 block 128×128 (SGLang) | 5.8 GB | 0.0028 | 98.9% | 42.5% (within run-to-run noise) |
137
+ | [nib-4b-preview-NVFP4](https://huggingface.co/ProCreations/nib-4b-preview-NVFP4) | NVFP4 (SGLang, Blackwell) | 5.0 GB | 0.0147 | 97.0% | 45.6% |
138
+ | [nib-4b-preview-EXL3](https://huggingface.co/ProCreations/nib-4b-preview-EXL3) | EXL3 3.05–6.05 bpw (exllamav3 / TabbyAPI) | 3.6–4.9 GB | 0.0257–0.0007 | 96.3–99.3% | not run |
139
+
140
+ ## How Nib was trained
141
+
142
+ 1. **Supervised fine-tuning** on browser-agent episodes that were verified as successful, from larger teacher models
143
+ (Qwen3.8-27B-class and Qwen3.8-Flash-Next), across about ten harnesses, with screenshots. It also included
144
+ demonstrations of reporting plainly when a task could not be done.
145
+ 2. **On-policy distillation**: Nib ran tasks itself, and larger teachers scored its own tokens, first a browser-tuned
146
+ Qwen3.8-27B, then Qwen3.8-Flash-Next. This preview is the third update of the final round, picked by a held-out live
147
+ evaluation. Later updates and an honesty-penalty round did not score higher.
148
+
149
+ Rewards and filters came from code checkers (synthetic tasks, app databases) and an LLM judge (live websites). The
150
+ evaluation tasks were held out from training. The training data is not released.
151
+
152
+ ## Limitations
153
+
154
+ - **It often claims success when it failed.** In a held-out check, about 7 in 10 of its failed live-web tasks ended
155
+ with a confident (wrong) answer rather than a plain "I could not do this". Verify important results.
156
+ - **Behind larger models on the open web.** On live websites it trails the untrained Qwen3.8-27B by 11–18 points
157
+ with thinking on, and by about 11 points on our harder 581-task live set.
158
+ - **Small-model knowledge.** It can guess wrong URLs or facts that a bigger model would know, and should look things up
159
+ instead.
160
+ - Training and evaluation tasks were almost all in English.
161
+ - These are our own benchmarks; live-web results drift as sites change.
162
+
163
+ ## License
164
+
165
+ Apache 2.0, the same as the base model [Qwen/Qwen3.5-4B](https://huggingface.co/Qwen/Qwen3.5-4B).
assets/bench_apps.png ADDED

Git LFS Details

  • SHA256: 8c51028c686fd67b243819eefe8b56dca5a7644ef7b781117b8e5fcd7a15525d
  • Pointer size: 131 Bytes
  • Size of remote file: 160 kB
assets/bench_live.png ADDED

Git LFS Details

  • SHA256: a3cf7260696cf9c7fe08c1fb20c2fdef5dfe9f88ebd6d2caab8fcb0f4d4516e1
  • Pointer size: 131 Bytes
  • Size of remote file: 182 kB
assets/bench_live_synth.png ADDED

Git LFS Details

  • SHA256: 4458772feae1ab0715567be451e106331112c9fcf1b083747126d87f8b5e06a7
  • Pointer size: 131 Bytes
  • Size of remote file: 190 kB