CountingSheep commited on
Commit
bc1754c
·
verified ·
1 Parent(s): 99841e9

Add model card

Browse files
Files changed (1) hide show
  1. README.md +141 -0
README.md ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-nc-4.0
3
+ base_model: Qwen/Qwen3.5-4B
4
+ base_model_relation: finetune
5
+ library_name: transformers
6
+ pipeline_tag: image-text-to-text
7
+ language: [en, zh]
8
+ tags: [judgment, classification, calibration, vision-language, system-one, vev]
9
+ model-index:
10
+ - name: vev-4b
11
+ results:
12
+ - task: {type: text-classification, name: Judgment}
13
+ dataset: {name: "judgekit (Chinese)", type: judgekit}
14
+ metrics: [{type: accuracy, value: 0.9615}]
15
+ - task: {type: text-classification, name: Judgment}
16
+ dataset: {name: "JevBench (public subset)", type: jevbench}
17
+ metrics: [{type: accuracy, value: 0.7662}]
18
+ - task: {type: text-classification, name: Judgment}
19
+ dataset: {name: "nimble", type: nimble}
20
+ metrics: [{type: accuracy, value: 0.7068}]
21
+ - task: {type: text-classification, name: Judgment}
22
+ dataset: {name: "kev transfer-v4", type: kev_transfer_v4}
23
+ metrics: [{type: accuracy, value: 0.7762}]
24
+ - task: {type: text-classification, name: Judgment}
25
+ dataset: {name: "MMBench-EN", type: mmbench_en}
26
+ metrics: [{type: accuracy, value: 0.8814}]
27
+ - task: {type: text-classification, name: Judgment}
28
+ dataset: {name: "POPE", type: pope}
29
+ metrics: [{type: accuracy, value: 0.8894}]
30
+ - task: {type: text-classification, name: Judgment}
31
+ dataset: {name: "MMStar", type: mmstar}
32
+ metrics: [{type: accuracy, value: 0.6268}]
33
+ ---
34
+
35
+ # vev-4b
36
+
37
+ Vev is an open judgment model. Given a state (text, JSON, images, or a mix) and typed questions (yes/no, multiple
38
+ choice, graded score), it returns a probability for every allowed answer in one forward pass, without generating
39
+ text. `vev-4b` is a LoRA fine-tune of [Qwen/Qwen3.5-4B](https://huggingface.co/Qwen/Qwen3.5-4B). The `vev` server exposes it through an
40
+ HTTP API with the same request and response format as TypeSafe's `/v1/systemone`.
41
+
42
+ This is v0.1, a research preview, released for non-commercial use under CC BY-NC 4.0.
43
+
44
+ This repository holds merged weights: the adapter is already folded into the base model. The adapter alone is in [CountingSheep/vev-4b-lora](https://huggingface.co/CountingSheep/vev-4b-lora).
45
+
46
+ ## Usage
47
+
48
+ ```bash
49
+ pip install vev-ai
50
+ vev serve --model CountingSheep/vev-4b
51
+ ```
52
+
53
+ ```python
54
+ from typesafe_sdk import Choice, Noul, TypeSafeClient
55
+
56
+ client = TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8009")
57
+ resp = client.system_one(
58
+ state="Order #4411 still shows 'label created' after 9 days. I need it before Friday.",
59
+ questions={
60
+ "urgent": Noul(instructions="Is the customer asking for something time-sensitive?"),
61
+ "team": Choice(instructions="Which team should handle this?",
62
+ criteria={"shipping": "Delivery and tracking", "billing": "Charges and refunds"}),
63
+ },
64
+ )
65
+ print(resp.answers["urgent"].noul, resp.answers["team"].probabilities)
66
+ ```
67
+
68
+ Images go into the state as `{"image": {"url": "data:image/png;base64,..."}}`. The API specification, the server
69
+ and the evaluation code are at [https://github.com/Xiaooolong/vev](https://github.com/Xiaooolong/vev).
70
+
71
+ The weights also load with plain `transformers` as a Qwen3.5 vision-language model. Vev reads its answers from the
72
+ next-token probabilities of the answer tokens (Yes/No, option letters, level digits) at the end of a fixed prompt;
73
+ the prompt format is in `vev/readout.py` and `vev/pointer.py` in the code repository. `head.pt` is an all-zero
74
+ head kept for the loader; it does not change the output.
75
+
76
+ ## Evaluation
77
+
78
+ Accuracy on full sets with the harness in the code repository. The zero-shot column is the base model read the
79
+ same way without fine-tuning. kev-4B was run locally with the same harness; Jev was queried through TypeSafe's API
80
+ (`jev-latest`, 23–24 September 2026).
81
+
82
+ | Set | n | Qwen3.5-4B zero-shot | vev-4b | kev-4B | Jev |
83
+ |---|---|---|---|---|---|
84
+ | judgekit (Chinese) | 130 | 0.962 | 0.962 | 0.846 | 0.962 |
85
+ | JevBench (public subset) | 231 | 0.758 | 0.766 | 0.719 | 0.861 |
86
+ | nimble | 324 | 0.710 | 0.707 | 0.735 | 0.923 |
87
+ | kev transfer-v4 | 1528 | 0.758 | 0.776 | 0.802 | 0.854 |
88
+
89
+ | Set | n | Qwen3.5-4B zero-shot | vev-4b |
90
+ |---|---|---|---|
91
+ | MMBench-EN | 1164 | 0.872 | 0.881 |
92
+ | POPE | 9000 | 0.894 | 0.889 |
93
+ | MMStar | 1498 | 0.544 | 0.627 |
94
+ | policy_mod: violates this safety policy? (LlavaGuard) | 659 | 0.686 | 0.742 |
95
+ | game_glitch: screenshot contains a glitch? (VideoGameQA-Bench) | 1000 | 0.646 | 0.613 |
96
+ | game_clip: object clips into character? (VideoGameQA-Bench) | 686 | 0.561 | 0.671 |
97
+ | ui_toggle: switch on / off? (MobileViews) | 800 | 0.901 | 0.928 |
98
+ | ui_input: text input field present? (MobileViews) | 800 | 0.949 | 0.951 |
99
+ | t2i_elem: generated image shows the prompt element? (EvalMuse) | 1027 | 0.690 | 0.715 |
100
+
101
+ The last six rows are judgment sets we converted from human-labelled public data; they are not established
102
+ benchmarks. Brier score and calibration error for every set are in `results/` in the code repository;
103
+ significance tests against the base model, kev-4B and Jev are marked in its README.
104
+
105
+ Reversing the order of the options changes the top answer on this fraction of questions: judgekit (Chinese) 0.031; JevBench (public subset) 0.172; nimble 0.214; kev transfer-v4 0.170; MMStar 0.192.
106
+ On JevBench, nimble and kev transfer-v4, kev-4B's rate is 0.10–0.12 and Jev's under 0.04.
107
+
108
+ ## Limitations
109
+
110
+ - Jev is more accurate than Vev on nimble and kev transfer-v4 (by 18–22 and 7–8 points), and than vev-4b on
111
+ JevBench.
112
+ - Answers depend on option order more than kev-4B's and Jev's do (rates above).
113
+ - Judgments that need several reasoning steps are weaker than the base model's own answer when it may think
114
+ first (4–8 points on one internal scenario set).
115
+ - On "is something wrong here?" questions the model flags problems less often than the labels do.
116
+ - The output format matches `/v1/systemone`; the behaviour is not Jev's. Vev is not affiliated with TypeSafe.
117
+
118
+ ## Training
119
+
120
+ LoRA rank 16 on all linear layers of the language model, vision tower frozen; 2,500 steps on 100,000 records
121
+ sampled from a mixture of 42 public text and image datasets (English and Chinese), with a KL term that keeps the
122
+ answer distribution close to the base model's on training rows and on 10,123 extra unlabeled anchor rows. One
123
+ NVIDIA H800. The exact recipe, library versions and the list of sources with their licenses are in
124
+ [TRAINING.md](https://github.com/Xiaooolong/vev/blob/main/TRAINING.md).
125
+
126
+ ## License
127
+
128
+ CC BY-NC 4.0. Six of the training sources are research-only or non-commercial and eleven have no clear license
129
+ for their data; this license does not replace their terms. The base model, Qwen/Qwen3.5-4B, is Apache 2.0.
130
+
131
+ ## Citation
132
+
133
+ ```bibtex
134
+ @software{vev2026,
135
+ title = {Vev: an open judgment model for text and images},
136
+ author = {Wang, Xiaolong},
137
+ year = {2026},
138
+ url = {https://github.com/Xiaooolong/vev},
139
+ version = {0.1.0}
140
+ }
141
+ ```