--- license: other license_name: research-and-demo license_link: https://github.com/hopit-ai/hopper/blob/main/MODEL_CARD.md base_model: Qwen/Qwen3.5-4B library_name: peft language: - en tags: - lora - peft - base_model:adapter:Qwen/Qwen3.5-4B - qwen3.5 - decision-making - calibration - jevbench datasets: - allenai/ai2_arc - tau/commonsense_qa - cais/mmlu - stanfordnlp/snli - nyu-mll/multi_nli - tals/vitaminc - google/boolq - rajpurkar/squad_v2 - clinc/clinc_oos - fancyzhx/dbpedia_14 - nvidia/HelpSteer2 --- # Hopper > **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. Hopper is a LoRA adapter (rank 16) for [`Qwen/Qwen3.5-4B`](https://huggingface.co/Qwen/Qwen3.5-4B) at revision `851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a`. It is built for the [JevBench](https://github.com/fstandhartinger/jevbench) setting: a document, a policy and a question go in, and a probability distribution over a fixed set of options comes out. - **One forward pass per decision**, with thinking off. No text is generated. The answer is a softmax over the logits of the option letters (A, B, C, ...), restricted to as many letters as there are options. - **A calibration map** (`hopper.json`) rescales that distribution by one temperature per answer type: choice 0.790, noul 0.753, score 0.900. It was fitted only on our own held-out JevBench-style items, never on a JevBench item. The map never changes the top answer — it divides log-probabilities by a positive number, which cannot reorder them. (In 1.0.0 the map was instead a bounded linear function of option count, state length, JSON-or-not, answer type and the entropy of the model's own distribution. A leave-one-source-out ablation showed that map was worth +0.1 Calibration over no map at all on sources its fitting set had never seen, against +4.5 and +2.9 for the per-answer-type map fitted on the same data, so 1.1.0 replaced it. Answers are identical either way; only the confidences move. The old map ships alongside as `hopper-v1.0-linear.json`.) - **Serving code**: [github.com/hopit-ai/hopper](https://github.com/hopit-ai/hopper). It runs an HTTP server with the JevBench `/v1/systemone` wire format. At load it merges the adapter into the bf16 weights, and it refuses to start if the fast linear-attention kernels are not active. The serving code is licensed Apache-2.0. The adapter weights are offered for research and demo use only, because of the RACE training-data terms described above and under "Training data". The base model is Apache-2.0 ([licence](https://huggingface.co/Qwen/Qwen3.5-4B/blob/main/LICENSE)), and this adapter does not change its terms. ## Intended use Hopper makes single-step policy decisions over a short document: yes/no (`noul`), choice among named options, and ordinal scores. It returns calibrated probabilities, and it is meant to be run and measured on JevBench. It is not a chat model. It is also not meant for decisions with legal, medical, financial or safety consequences unless a person reviews them. ## Prompt format The chat template of Qwen3.5-4B is applied with `enable_thinking=False` and a generation prompt. - **System**: `You make decisions about a document under a policy. Read only what is written in the document. Reply with the letter of the correct option and nothing else.` - **User**: one JSON object, `{"evidence": , "criterion": \n\n, "options": [{"letter": "A", "description": "