ArkidMitra commited on
Commit
4bbab19
·
verified ·
1 Parent(s): d753ff6

Card: overview, models table and quick start; 4B details below; JevBench v1.5.5 standing

Browse files
Files changed (1) hide show
  1. README.md +79 -35
README.md CHANGED
@@ -30,16 +30,66 @@ datasets:
30
 
31
  # Hopper
32
 
33
- > **Also in this repository: Hopper 12B (trained).** A LoRA adapter (rank 32) on
34
- > [`google/gemma-4-12B-it`](https://huggingface.co/google/gemma-4-12B-it), Apache-2.0, on the branch
35
- > [`hopper-12b`](https://huggingface.co/HopitAI/hopper/tree/hopper-12b) (revision
36
- > `4b605f25eb903c2cf4d121040ffb097240b3bc37`), with its own model card, readout map, licence and checksums.
37
- > Serve it with the code at [github.com/hopit-ai/hopper](https://github.com/hopit-ai/hopper) (tag `12b-1.1.0`):
38
- > `hopper-serve --base-loader gemma-4-12b-it --adapter HopitAI/hopper@4b605f25eb903c2cf4d121040ffb097240b3bc37`
39
- > plus its readout map (see that branch's card). The files on this `main` branch are the original 4B Hopper
40
- > described below.
41
 
42
- > **Research and demo use only.** This adapter is published for research and demonstration. Its training data included passages from RACE (via the `cais/mmlu` auxiliary set), which its authors release for non-commercial research only and whose terms extend to derived data. Do not use this adapter commercially. A version trained without these passages is in development.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
 
44
  Hopper is a LoRA adapter (rank 16) for
45
  [`Qwen/Qwen3.5-4B`](https://huggingface.co/Qwen/Qwen3.5-4B) at revision
@@ -64,31 +114,14 @@ question go in, and a probability distribution over a fixed set of options comes
64
  HTTP server with the JevBench `/v1/systemone` wire format. At load it merges the adapter into the
65
  bf16 weights, and it refuses to start if the fast linear-attention kernels are not active.
66
 
67
- The serving code is licensed Apache-2.0. The adapter weights are offered for research and demo use
68
- only, because of the RACE training-data terms described above and under "Training data". The base
69
- model is Apache-2.0 ([licence](https://huggingface.co/Qwen/Qwen3.5-4B/blob/main/LICENSE)), and this
70
- adapter does not change its terms.
71
-
72
- ## Leaderboards (official)
73
-
74
- - **[JevBench](https://benchmarkheaven.com/jev-models)**: **59.43, #7** in v1.4.2.2 (27 Sep 2026), measured by the
75
- maintainer on adapter 1.0.0: Intelligence 48.0, Calibration 79.1, Speed 86.8, Cost 58.7. Accuracy is 82.3 % on the
76
- public items and 34.1 % on the maintainer's sealed set.
77
- - **[Jev Decision Index](https://huggingface.co/spaces/multimodalart/jev-decision-index)**: Hopper 1.1.1 scored
78
- 36.71, #12 of 49 (edition 0.2, 25 Sep 2026), then 39.67, #19 of 67 (edition 0.2.1). Its row has since been replaced by
79
- [Hopper (G) 1.2](https://huggingface.co/HopitAI/hopper-g), the general-purpose line served with the same code,
80
- at 40.77. A newer build, Hopper (G) 1.3, is published in the same repository.
81
-
82
- Both boards change as entrants are added; the live pages are authoritative.
83
-
84
- ## Intended use
85
 
86
  Hopper makes single-step policy decisions over a short document: yes/no (`noul`), choice among
87
  named options, and ordinal scores. It returns calibrated probabilities, and it is meant to be run
88
  and measured on JevBench. It is not a chat model. It is also not meant for decisions with legal,
89
  medical, financial or safety consequences unless a person reviews them.
90
 
91
- ## Prompt format
92
 
93
  The chat template of Qwen3.5-4B is applied with `enable_thinking=False` and a generation prompt.
94
 
@@ -102,7 +135,7 @@ The readout is the next-token logits at the end of the prompt, restricted to the
102
  then a softmax, then the calibration map. `hopper_decisions/request.py` and `prompt.py` in the code
103
  repository build this prompt exactly.
104
 
105
- ## How to load it
106
 
107
  The easiest way to serve it is with the package (`pip install` the code repository, see its README):
108
 
@@ -139,7 +172,7 @@ to run at full speed. Without them, transformers silently falls back to a path t
139
  10x slower. The pinned versions are `torch==2.8.0`, `transformers==5.17.0`, `peft==0.21.0` and
140
  `accelerate==1.15.0`.
141
 
142
- ## Training data
143
 
144
  The adapter was trained on a mix of three sources:
145
 
@@ -169,7 +202,7 @@ The adapter was trained on a mix of three sources:
169
  The calibration map was fitted only on our own held-out JevBench-style items — the same fitting
170
  set in 1.1.0 as in 1.0.0, with the 66 leakage-flagged items dropped. It never saw a JevBench item.
171
 
172
- ## Evaluation
173
 
174
  **These are local numbers, not official JevBench results.** They were computed with our own
175
  evaluation path on the 231 public JevBench items (argmax over the exact label set, with ties
@@ -217,10 +250,21 @@ not on this fold.
217
  - Expect the held-out hard items to score below the public ones, and expect the judge tier, which
218
  we have never seen, to be the least predictable part.
219
 
220
- ## Long menus (more than 26 options), from code release 1.1.1
 
 
 
 
 
 
 
 
 
 
 
221
 
222
- The adapter answers by reading one letter per option, so a single forward pass can weigh at most 26
223
- options. From release 1.1.1 of the serving code (github.com/hopit-ai/hopper, tag v1.1.1), a choice
224
  question with more options is answered in two disclosed stages, using this same adapter and map:
225
 
226
  1. **First stage.** By default a *tournament*: the menu is dealt with a fixed seed into
@@ -248,7 +292,7 @@ frozen base model within sampling error. On BANKING77 the served top choice is o
248
  top probability 0.78 against 0.67 accuracy). The 5 % residual is a default, not yet refitted to
249
  held-out long menus. Research and demo use only, as for the rest of this card.
250
 
251
- ## Limitations
252
 
253
  - **One pass of a 4B model.** Hopper does not reason step by step. Any problem that needs a chain
254
  of intermediate results is decided in one forward pass by Qwen3.5-4B.
 
30
 
31
  # Hopper
32
 
33
+ Hopper models make single-pass decisions: a document, a policy and a question go in, and a probability for every
34
+ allowed option comes out. One forward pass per decision; no text is generated. They are served by
35
+ [github.com/hopit-ai/hopper](https://github.com/hopit-ai/hopper), an HTTP server that speaks the
36
+ [JevBench](https://github.com/fstandhartinger/jevbench) `/v1/systemone` wire format.
 
 
 
 
37
 
38
+ ## Models in this repository
39
+
40
+ | Model | Where | Base model | Adapter | Licence | Status |
41
+ | --- | --- | --- | --- | --- | --- |
42
+ | **Hopper (4B)** | `main` (this page) | [`Qwen/Qwen3.5-4B`](https://huggingface.co/Qwen/Qwen3.5-4B) @ `851bf6e` | LoRA rank 16 | research and demo use only¹ | [JevBench](https://benchmarkheaven.com/jev-models) **67.5, #16** (v1.5.5, 2 Oct 2026) |
43
+ | **Hopper 12B (trained)** | branch [`hopper-12b`](https://huggingface.co/HopitAI/hopper/tree/hopper-12b) @ `4b605f2` | [`google/gemma-4-12B-it`](https://huggingface.co/google/gemma-4-12B-it) @ `707f0a3` | LoRA rank 32, served unmerged | Apache-2.0 | requested on JevBench ([issue #164](https://github.com/fstandhartinger/jevbench/issues/164)) |
44
+
45
+ ¹ The 4B adapter's training data included passages from RACE, which is released for non-commercial research only.
46
+ Do not use it commercially. See [Licence and research-only notice](#licence-and-research-only-notice).
47
+
48
+ The general-purpose line, Hopper (G), lives at [`HopitAI/hopper-g`](https://huggingface.co/HopitAI/hopper-g).
49
+
50
+ ## Quick start
51
+
52
+ ### Hopper 12B (trained)
53
+
54
+ ```sh
55
+ pip install "git+https://github.com/hopit-ai/hopper@12b-1.1.0"
56
+ hopper-serve --base-loader gemma-4-12b-it \
57
+ --adapter HopitAI/hopper@4b605f25eb903c2cf4d121040ffb097240b3bc37 \
58
+ --readout-map "$(python -c 'import hopper_decisions, pathlib; print(pathlib.Path(hopper_decisions.__file__).parent / "maps/hopper-12b-trained-readout.json")')" \
59
+ --port 8080
60
+ ```
61
+
62
+ Always pin the revision: `HopitAI/hopper` without one resolves to `main`, the Qwen3.5-4B adapter, which does not fit
63
+ this base. Files, checksums, training data and licence are on the
64
+ [`hopper-12b` branch's model card](https://huggingface.co/HopitAI/hopper/blob/hopper-12b/README.md).
65
+
66
+ ### Hopper (4B)
67
+
68
+ Install the serving code from [github.com/hopit-ai/hopper](https://github.com/hopit-ai/hopper) as its README
69
+ describes (with the pinned kernel packages listed under [How to load it](#how-to-load-it)), then:
70
+
71
+ ```sh
72
+ hopper-serve --adapter HopitAI/hopper --port 8080
73
+ ```
74
+
75
+ For the Python API and for loading with transformers and peft directly, see [How to load it](#how-to-load-it).
76
+
77
+ ## Hopper (4B) details
78
+
79
+ ### Licence and research-only notice
80
+
81
+ > **Research and demo use only.** This adapter is published for research and demonstration. Its training data
82
+ > included passages from RACE (via the `cais/mmlu` auxiliary set), which its authors release for non-commercial
83
+ > research only and whose terms extend to derived data. Do not use this adapter commercially. Hopper 12B (trained),
84
+ > on branch [`hopper-12b`](https://huggingface.co/HopitAI/hopper/tree/hopper-12b), was trained without these passages
85
+ > and is Apache-2.0.
86
+
87
+ The serving code is licensed Apache-2.0. The adapter weights are offered for research and demo use
88
+ only, because of the RACE training-data terms described above and under "Training data". The base
89
+ model is Apache-2.0 ([licence](https://huggingface.co/Qwen/Qwen3.5-4B/blob/main/LICENSE)), and this
90
+ adapter does not change its terms.
91
+
92
+ ### How it works
93
 
94
  Hopper is a LoRA adapter (rank 16) for
95
  [`Qwen/Qwen3.5-4B`](https://huggingface.co/Qwen/Qwen3.5-4B) at revision
 
114
  HTTP server with the JevBench `/v1/systemone` wire format. At load it merges the adapter into the
115
  bf16 weights, and it refuses to start if the fast linear-attention kernels are not active.
116
 
117
+ ### Intended use
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
 
119
  Hopper makes single-step policy decisions over a short document: yes/no (`noul`), choice among
120
  named options, and ordinal scores. It returns calibrated probabilities, and it is meant to be run
121
  and measured on JevBench. It is not a chat model. It is also not meant for decisions with legal,
122
  medical, financial or safety consequences unless a person reviews them.
123
 
124
+ ### Prompt format
125
 
126
  The chat template of Qwen3.5-4B is applied with `enable_thinking=False` and a generation prompt.
127
 
 
135
  then a softmax, then the calibration map. `hopper_decisions/request.py` and `prompt.py` in the code
136
  repository build this prompt exactly.
137
 
138
+ ### How to load it
139
 
140
  The easiest way to serve it is with the package (`pip install` the code repository, see its README):
141
 
 
172
  10x slower. The pinned versions are `torch==2.8.0`, `transformers==5.17.0`, `peft==0.21.0` and
173
  `accelerate==1.15.0`.
174
 
175
+ ### Training data
176
 
177
  The adapter was trained on a mix of three sources:
178
 
 
202
  The calibration map was fitted only on our own held-out JevBench-style items — the same fitting
203
  set in 1.1.0 as in 1.0.0, with the 66 leakage-flagged items dropped. It never saw a JevBench item.
204
 
205
+ ### Evaluation
206
 
207
  **These are local numbers, not official JevBench results.** They were computed with our own
208
  evaluation path on the 231 public JevBench items (argmax over the exact label set, with ties
 
250
  - Expect the held-out hard items to score below the public ones, and expect the judge tier, which
251
  we have never seen, to be the least predictable part.
252
 
253
+ ### Leaderboards
254
+
255
+ - **[JevBench](https://benchmarkheaven.com/jev-models)**: **67.5, #16** in v1.5.5 (2 Oct 2026), measured on adapter
256
+ 1.0.0: Intelligence 49.9, Calibration 87.9, Speed 87.2, Cost 62.3.
257
+ - **[Jev Decision Index](https://huggingface.co/spaces/multimodalart/jev-decision-index)**: Hopper 1.1.1 scored
258
+ 36.71, #12 of 49 (edition 0.2, 25 Sep 2026), then 39.67, #19 of 67 (edition 0.2.1). Its row has since been replaced by
259
+ [Hopper (G) 1.2](https://huggingface.co/HopitAI/hopper-g), the general-purpose line served with the same code,
260
+ at 40.77. A newer build, Hopper (G) 1.3, is published in the same repository.
261
+
262
+ Both boards change as entrants are added; the live pages are authoritative.
263
+
264
+ ### Long menus (more than 26 options)
265
 
266
+ The adapter answers by reading one letter per option, so a single forward pass can
267
+ weigh at most 26 options. From release 1.1.1 of the serving code (github.com/hopit-ai/hopper, tag v1.1.1), a choice
268
  question with more options is answered in two disclosed stages, using this same adapter and map:
269
 
270
  1. **First stage.** By default a *tournament*: the menu is dealt with a fixed seed into
 
292
  top probability 0.78 against 0.67 accuracy). The 5 % residual is a default, not yet refitted to
293
  held-out long menus. Research and demo use only, as for the rest of this card.
294
 
295
+ ### Limitations
296
 
297
  - **One pass of a 4B model.** Hopper does not reason step by step. Any problem that needs a chain
298
  of intermediate results is decided in one forward pass by Qwen3.5-4B.