Image-Text-to-Text
Transformers
Safetensors
qwen3_5
decision-making
routing
mixture-of-experts
moqle
lora
agents
e2e-testing
games
multilingual
on-device
system-one
conversational
Instructions to use labqoat/squad-0.8b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use labqoat/squad-0.8b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="labqoat/squad-0.8b") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("labqoat/squad-0.8b") model = AutoModelForMultimodalLM.from_pretrained("labqoat/squad-0.8b", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use labqoat/squad-0.8b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "labqoat/squad-0.8b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "labqoat/squad-0.8b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/labqoat/squad-0.8b
- SGLang
How to use labqoat/squad-0.8b with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "labqoat/squad-0.8b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "labqoat/squad-0.8b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "labqoat/squad-0.8b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "labqoat/squad-0.8b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use labqoat/squad-0.8b with Docker Model Runner:
docker model run hf.co/labqoat/squad-0.8b
squad-0.8b 2026-10-27: new e2e expert (JAX-sim on-policy imitation; real unseen apps: 52/61 eval-app tests, 69/82 held-out test)
Browse files- README.md +19 -14
- SHA256SUMS +3 -3
- specialists/manifest.json +2 -2
- specialists/slots_2bit.safetensors +1 -1
README.md
CHANGED
|
@@ -50,11 +50,12 @@ a web app), **multilingual** (10 languages) and **documents**.
|
|
| 50 |
- **Fast:** 3.7 ms median per decision on one L40S (single requests), about 110 decisions/s with 16 clients. The router
|
| 51 |
and experts cost nothing measurable.
|
| 52 |
- **Better** than the previous squad-0.8b on rule following (+10 points on Rules-7), consistency (+5.8 on JevBench
|
| 53 |
-
coherence), game boards (+3.9 on JevSpatial) and web-app tests on apps it never saw (
|
| 54 |
slightly lower on Benchmark Heaven (β0.5) and games_bench (β0.9), both within run-to-run noise.
|
| 55 |
-
- **New e2e expert (2026-10-
|
| 56 |
-
|
| 57 |
-
|
|
|
|
| 58 |
|
| 59 |
## Results
|
| 60 |
|
|
@@ -71,8 +72,8 @@ engine, per-question requests). basal-omni-pico (Remek/basal-omni-pico) was serv
|
|
| 71 |
| JevBench coherence | 70.6 | **76.4** | 74.2 |
|
| 72 |
| KLEJ (Polish, 7 tasks, 500 test items each) | 70.9 (trunk only) | 73.4 | **75.3** |
|
| 73 |
| games_bench (9 unseen games, closed loop; 0 = random, 100 = planner) | 11.3 | 10.4 | 7.5 |
|
| 74 |
-
| e2e, 14 unseen apps (82 tests, held-out test split) | β | **
|
| 75 |
-
| e2e, 8 real web apps (61 tests Γ 3 runs, eval only) | 10 / 183 |
|
| 76 |
|
| 77 |
Speed on one NVIDIA L40S (Benchmark Heaven requests, one question each, after warm-up):
|
| 78 |
|
|
@@ -88,12 +89,14 @@ Speed on one NVIDIA L40S (Benchmark Heaven requests, one question each, after wa
|
|
| 88 |
- Rules-7: part of the gain comes from procedurally generated rule-application data whose layout (the policy inside the
|
| 89 |
question) resembles Rules-7's. No benchmark text was used; labels are computed by code. Sub-scores vary across
|
| 90 |
training seeds.
|
| 91 |
-
- e2e: runs of one test are near-copies (decisions are argmax), so count tests, not runs.
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
|
|
|
|
|
|
| 97 |
- games_bench is our own closed-loop benchmark of games never trained on; all models are close to random when a game
|
| 98 |
is shown as a raw grid, coordinates or prose.
|
| 99 |
- **Image input was not re-evaluated** for this revision (the trunk changed; the vision tower is unchanged).
|
|
@@ -160,8 +163,10 @@ with experts) Β· `qev_image.py`, `qev_image_server.py` (transformers image path,
|
|
| 160 |
|
| 161 |
## Limitations
|
| 162 |
|
| 163 |
-
Text decisions only were evaluated for this revision. The e2e expert
|
| 164 |
-
|
|
|
|
|
|
|
| 165 |
the previous version's temperatures; check them on your own data before using them as error rates.
|
| 166 |
|
| 167 |
License: Apache-2.0.
|
|
|
|
| 50 |
- **Fast:** 3.7 ms median per decision on one L40S (single requests), about 110 decisions/s with 16 clients. The router
|
| 51 |
and experts cost nothing measurable.
|
| 52 |
- **Better** than the previous squad-0.8b on rule following (+10 points on Rules-7), consistency (+5.8 on JevBench
|
| 53 |
+
coherence), game boards (+3.9 on JevSpatial) and web-app tests on apps it never saw (84% vs 21% of tests passed);
|
| 54 |
slightly lower on Benchmark Heaven (β0.5) and games_bench (β0.9), both within run-to-run noise.
|
| 55 |
+
- **New e2e expert (2026-10-27):** trained in a JAX simulation of the tester-army executor (93 generated app
|
| 56 |
+
families, exact prompts, exact gold at every state; on-policy imitation of an oracle), selected only by real
|
| 57 |
+
closed-loop runs on apps it never saw. It passes 52 of the 8 real eval apps' 61 tests (shipped c13: 12) and 69 of 82
|
| 58 |
+
on held-out test apps (previous expert: 29).
|
| 59 |
|
| 60 |
## Results
|
| 61 |
|
|
|
|
| 72 |
| JevBench coherence | 70.6 | **76.4** | 74.2 |
|
| 73 |
| KLEJ (Polish, 7 tasks, 500 test items each) | 70.9 (trunk only) | 73.4 | **75.3** |
|
| 74 |
| games_bench (9 unseen games, closed loop; 0 = random, 100 = planner) | 11.3 | 10.4 | 7.5 |
|
| 75 |
+
| e2e, 14 unseen apps (82 tests, held-out test split) | β | **69 / 82** (first release of this revision: 17 / 82) | β |
|
| 76 |
+
| e2e, 8 real web apps (61 tests Γ 3 runs, eval only) | 10 / 183 (4 tests) | **156 / 183** (52 tests; first release: 34 / 183) | β |
|
| 77 |
|
| 78 |
Speed on one NVIDIA L40S (Benchmark Heaven requests, one question each, after warm-up):
|
| 79 |
|
|
|
|
| 89 |
- Rules-7: part of the gain comes from procedurally generated rule-application data whose layout (the policy inside the
|
| 90 |
question) resembles Rules-7's. No benchmark text was used; labels are computed by code. Sub-scores vary across
|
| 91 |
training seeds.
|
| 92 |
+
- e2e: runs of one test are near-copies (decisions are argmax), so count tests, not runs. Held-out apps: 14
|
| 93 |
+
validation apps (67 / 82; used to pick the checkpoint among ~120) and 14 test apps (69 / 82, 69 on a repeat). On the
|
| 94 |
+
8 eval-only real apps 52 of 61 tests pass in every one of 3 runs (expenses 2/2, tracker 8/9, shop 8/9, billing 8/9,
|
| 95 |
+
helpdesk 8/9, booking 8/9, TodoMVC react 5/7, vue 5/7). The last training step focused on Enter-only list inputs
|
| 96 |
+
after a failure analysis of the eval apps' TodoMVC failures, so the 8-app number is not fully independent of the
|
| 97 |
+
selection. Repeat noise: about Β±3 tests. Real-app skill peaks after few updates and decays with more training on
|
| 98 |
+
generated apps, so checkpoints are chosen only by real runs. The e2e expert is used only when the router gives it at
|
| 99 |
+
least 35%.
|
| 100 |
- games_bench is our own closed-loop benchmark of games never trained on; all models are close to random when a game
|
| 101 |
is shown as a raw grid, coordinates or prose.
|
| 102 |
- **Image input was not re-evaluated** for this revision (the trunk changed; the vision tower is unchanged).
|
|
|
|
| 163 |
|
| 164 |
## Limitations
|
| 165 |
|
| 166 |
+
Text decisions only were evaluated for this revision. The e2e expert still fails some real-app patterns: identical
|
| 167 |
+
row buttons where the goal names the row by another column, submitting before a form is filled, and repeating an
|
| 168 |
+
action that changed nothing; it also cannot work around harness gaps (controls the executor doesn't expose, loading
|
| 169 |
+
screens). Polish sentiment and QA (KLEJ) are behind basal-omni-pico. Probabilities are calibrated with
|
| 170 |
the previous version's temperatures; check them on your own data before using them as error rates.
|
| 171 |
|
| 172 |
License: Apache-2.0.
|
SHA256SUMS
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930 .gitattributes
|
| 2 |
-
|
| 3 |
d9ab6f1698a46bbf04895d171fa0666816745e0d7209b9493d44d3df0caa1b5f config.json
|
| 4 |
a9d356d7bdf1ef4949e3e748e95b8e10ad9d4e2e838eddc38a0a7b6b94d1db8d merges.txt
|
| 5 |
7320444c00718f75f2ab6467d5ba450133eda534fd8def1eb8fbf5d273bdcc43 model.safetensors
|
|
@@ -22,9 +22,9 @@ a7967611382edddc4245eb3b80aad4cbc252c3c445fba19dd94b123bac2da42d qev_image.py
|
|
| 22 |
a6047450cf0c7fd5ac6eadf996bdcb2c2388665bf28a9341fd21081d02a923bf qev_server.py
|
| 23 |
d7f47d96a76f395a93bd9c04c78e5193d7390c162c86b9ea8ce7010ec78b7ac7 requirements-cuda.txt
|
| 24 |
b60d5907148b1d4c9191a02b3910c485852af951a529527ebc1b30089939500f requirements.txt
|
| 25 |
-
|
| 26 |
581488a9a73ae888fde14766fc5d992c49bbc55619ade17db4cda5b712bd096a specialists/router.safetensors
|
| 27 |
-
|
| 28 |
466f27fefa1f44a7bb82cb1b42163c761e01dc6f7f51fc4f3d0a499a5a9b4249 tokenizer.json
|
| 29 |
e611fbccc7c29ef3b1cafb1cb7ea548d189968632901d678fd62be68c47885de tokenizer_config.json
|
| 30 |
d039cd7d88b3502a99edd455496b75b44ecf7dd3b3669748bafac37e6cecc085 video_preprocessor_config.json
|
|
|
|
| 1 |
34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930 .gitattributes
|
| 2 |
+
a26b16a53ec8bcc0de0004dc083d1d08eb5491150c6767f6a465835ee5ae74e4 README.md
|
| 3 |
d9ab6f1698a46bbf04895d171fa0666816745e0d7209b9493d44d3df0caa1b5f config.json
|
| 4 |
a9d356d7bdf1ef4949e3e748e95b8e10ad9d4e2e838eddc38a0a7b6b94d1db8d merges.txt
|
| 5 |
7320444c00718f75f2ab6467d5ba450133eda534fd8def1eb8fbf5d273bdcc43 model.safetensors
|
|
|
|
| 22 |
a6047450cf0c7fd5ac6eadf996bdcb2c2388665bf28a9341fd21081d02a923bf qev_server.py
|
| 23 |
d7f47d96a76f395a93bd9c04c78e5193d7390c162c86b9ea8ce7010ec78b7ac7 requirements-cuda.txt
|
| 24 |
b60d5907148b1d4c9191a02b3910c485852af951a529527ebc1b30089939500f requirements.txt
|
| 25 |
+
165f3e09816472e325b562e0e8779d3a1ade7f5b1b96f7eeb2f31947e7d35dce specialists/manifest.json
|
| 26 |
581488a9a73ae888fde14766fc5d992c49bbc55619ade17db4cda5b712bd096a specialists/router.safetensors
|
| 27 |
+
6a9f0c260fcd8be265a98a75598a269e3c5db80b3c2aa425674eb9b888047046 specialists/slots_2bit.safetensors
|
| 28 |
466f27fefa1f44a7bb82cb1b42163c761e01dc6f7f51fc4f3d0a499a5a9b4249 tokenizer.json
|
| 29 |
e611fbccc7c29ef3b1cafb1cb7ea548d189968632901d678fd62be68c47885de tokenizer_config.json
|
| 30 |
d039cd7d88b3502a99edd455496b75b44ecf7dd3b3669748bafac37e6cecc085 video_preprocessor_config.json
|
specialists/manifest.json
CHANGED
|
@@ -38,11 +38,11 @@
|
|
| 38 |
},
|
| 39 |
"source": {
|
| 40 |
"format": "jev-slot-serve/2",
|
| 41 |
-
"label": "
|
| 42 |
"dequant_max_abs_err": 0.0
|
| 43 |
},
|
| 44 |
"sha256": {
|
| 45 |
-
"slots_2bit.safetensors": "
|
| 46 |
"router.safetensors": "581488a9a73ae888fde14766fc5d992c49bbc55619ade17db4cda5b712bd096a"
|
| 47 |
}
|
| 48 |
}
|
|
|
|
| 38 |
},
|
| 39 |
"source": {
|
| 40 |
"format": "jev-slot-serve/2",
|
| 41 |
+
"label": "fsf_todo-s5",
|
| 42 |
"dequant_max_abs_err": 0.0
|
| 43 |
},
|
| 44 |
"sha256": {
|
| 45 |
+
"slots_2bit.safetensors": "6a9f0c260fcd8be265a98a75598a269e3c5db80b3c2aa425674eb9b888047046",
|
| 46 |
"router.safetensors": "581488a9a73ae888fde14766fc5d992c49bbc55619ade17db4cda5b712bd096a"
|
| 47 |
}
|
| 48 |
}
|
specialists/slots_2bit.safetensors
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 10781808
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6a9f0c260fcd8be265a98a75598a269e3c5db80b3c2aa425674eb9b888047046
|
| 3 |
size 10781808
|