File size: 5,753 Bytes
3c35bdf 05facf9 3c35bdf 05facf9 93c1ba6 05facf9 93c1ba6 05facf9 93c1ba6 05facf9 93c1ba6 05facf9 93c1ba6 05facf9 5a03cfe 05facf9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | ---
license: cc-by-nc-sa-4.0
base_model: Qwen/Qwen3.5-9B
base_model_relation: adapter
tags:
- multimodal
- vision
- decision-model
- lora
- qwen3_5
---
# Jolt-9B

Jolt-9B is a multimodal decision model. Given text or an image and a set of
candidate answers, it returns candidate probabilities, a truth estimate, or an
ordered score. It does not generate free-form answers.
## Model details
| Property | Value |
| --- | --- |
| Base model | [Qwen/Qwen3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B) |
| Base revision | `c202236235762e1c871ad0ccb60c8ee5ba337b9a` |
| Checkpoint | L2, seed 42, selected at update 3,600 |
| Development macro accuracy | 85.31% (checkpoint selection partition) |
| Training objective | Direct-composite loss |
| Training precision | BF16 base |
| Trainable weights | Rank-8 language LoRA and a linear candidate scorer |
| Input | Text, or text plus one decoded image |
| Limits | 2–128 candidates per question; 4,096-token inference limit |
The reported development score selected the checkpoint within its run. It is not
an independent test score. Test data were not used to select this checkpoint.
### Local evaluation results
| Held-out test lane | Dataset macro | Row weighted |
| --- | ---: | ---: |
| Text · 18 datasets | 85.81% | 86.55% |
| Images · 8 datasets | 84.88% | 97.51% |
| All · 26 datasets | 85.52% | 94.08% |
JevBench v1.2.2 public subset: **182/231** (78.79% pooled; 84.96% tier-balanced). The public subset contains 231 tasks; 303 official tasks were unavailable. This is a single checkpoint, seed 42, selected at update 3,600. Unit temperatures were used; no post-training temperature fit was applied.
### JevBench

### 18 text dataset benchmarks

### 8 image dataset benchmarks

You can find a comprehensive model comparison report at: *model_comparison_dashboard.html*
## Use
This repository contains the compact Jolt adapter and inference source. It does
not duplicate Qwen's base weights: the runtime downloads the pinned public Qwen
revision on first use and caches it locally. The adapter format is Jolt's custom
decision-model format, so load it with the included runtime rather than
`AutoModel.from_pretrained`.
The runtime currently requires Python 3.12+, a CUDA-enabled PyTorch setup, and a
CUDA GPU. From a clone or downloaded copy of this repository:
```bash
python -m pip install -r requirements-cuda.txt
python -m pip install -e . --no-deps
```
Then:
```python
from jolt.predictor import Predictor
model = Predictor.from_checkpoint("mlengineer-ai/Jolt-9B")
result = model.predict(
{"message": "I was charged twice. Please refund the duplicate."},
{
"route": {
"type": "choice",
"instructions": "Which team should handle this request?",
"criteria": ["billing", "technical support", "sales"],
},
"refund": {
"type": "noul",
"instructions": "Is a refund requested?",
},
},
)
print(result["answers"]["route"]["choice"])
print(result["answers"]["refund"]["noul"])
```
For an image question, pass a decoded PIL image as `state["image"]`. This
example uses the `model` loaded above:
```python
from PIL import Image
image = Image.open("path/to/image.jpg").convert("RGB")
image_result = model.predict(
{"image": image, "question": "Which animal is shown?"},
{
"animal": {
"type": "choice",
"instructions": "Identify the animal in the image.",
"criteria": ["cat", "dog", "bird", "other"],
}
},
)
print(image_result["answers"]["animal"]["choice"])
```
## Training and data
Jolt follows the recipe based on the [Dohnuts](https://huggingface.co/PsiACE/Dohnuts-0.1.0-0.8B) project. These checkpoints start from the
Qwen3.5 base model listed above; they do not use Dohnuts model weights as their
base. Jolt trained rank-8 LoRA weights and a candidate scorer with the base
model frozen. Jolt's public-data task suite and split design are adapted from
Dohnuts. Its [data reference](https://github.com/PsiACE/dohnuts/blob/main/docs/data-and-evaluation.md)
lists source datasets and their known terms. The adapter metadata records
fingerprints for Jolt's training and development partitions. Training data are
not included here.
## Model variations
* https://huggingface.co/mlengineer-ai/Jolt-0.8B
* https://huggingface.co/mlengineer-ai/Jolt-2B
* https://huggingface.co/mlengineer-ai/Jolt-4B
* https://huggingface.co/mlengineer-ai/Jolt-9B
## Licensing
This release offers the adapter and decision-head weights under CC BY-NC-SA 4.0;
see `LICENSE`. For this prepared release, this conservative default follows the
original Dohnuts model release. It is not a legal determination that every source
dataset's terms necessarily apply to trained weights. The training mixture
includes sources with different terms, including
[ScienceQA](https://github.com/lupantech/ScienceQA/blob/main/README.md), whose
maintainers specify CC BY-NC-SA 4.0 for the dataset. The available records do
not establish commercial clearance for these trained weights; review the source
dataset terms before use.
The bundled inference source is adapted from Dohnuts and is licensed under
Apache-2.0; see `LICENSE-CODE` and `NOTICE-CODE`. The Qwen base model is
separately licensed by its publisher under Apache-2.0. Those licenses do not
replace or change the terms of training data.
|