SargeDev commited on
Commit
48b9ad8
·
verified ·
1 Parent(s): 0b1cc11

model card

Browse files
Files changed (1) hide show
  1. README.md +217 -0
README.md ADDED
@@ -0,0 +1,217 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Solar-JEV-27B-R32
2
+
3
+ **The best-measured build of this release.** Uncensored 27B tuned for everyday
4
+ decision-making — crisp calls with honestly-calibrated confidence instead of
5
+ hedge-fests — with the decision readout trained INTO the model.
6
+
7
+ > **What this repo is.** huihui Qwen3.8-27B-abliterated + the AutoTrust `r32`
8
+ > `lm_head` LoRA, merged. **No solar delta.** These are the same weights as
9
+ > the already-public `SargeDev/JEV-27B-Uncensored` (verified: bit-identical
10
+ > `lm_head`, md5 `bb95f4fd…`, and the backbone differs from the
11
+ > r32+solar merge only on the 400 solar-targeted tensors). This repo exists so
12
+ > the family has one consistent naming scheme and so the **GGUF ladder for the
13
+ > best model** is published — the r32+solar merge in
14
+ > `SargeDev/Solar-Decision-JEV-27B` is a *different, weaker* model.
15
+
16
+ - Full bf16 weights (51 GB), serves directly in vLLM / transformers
17
+ (`Qwen3_5ForCausalLM`).
18
+ - Refusal rate and calibration measured below — the uncensoring claim is
19
+ probed, not assumed.
20
+
21
+ ## What makes this one different
22
+
23
+ The decision readout is an **`lm_head` LoRA**: the 24-slot decision head is
24
+ re-expressed as a LoRA on the output projection (only the 24 verbalizer rows
25
+ change), so a typed decision is a **single prefill with `max_tokens=1`**,
26
+ constrained to the option tokens, read back as log-probabilities. No separate
27
+ head to run, no adapter to swap.
28
+
29
+ That difference is worth a lot. On the same 27,695 rows with the same harness
30
+ and the same decision head + calibration:
31
+
32
+ | model | decision readout | choice top-1 | score top-1 | score KL | noul AUROC |
33
+ |---|---|---|---|---|---|
34
+ | AutoTrust (published reference) | trained into the model | 0.9041 | 0.8910 | 0.0210 | 0.9961 |
35
+ | **this model (r32 + lm_head)** | trained into the model | **0.8693** | **0.8135** | **0.0619** | **0.9919** |
36
+ | solar r16 (no lm_head) | separate projection at read time | 0.5054 | 0.5369 | 0.4699 | 0.9449 |
37
+
38
+ The `solar r16` merge reads a decision through a *separate* projection over
39
+ the final hidden state, and lands at 0.5054 choice top-1. The same backbone
40
+ with the readout in the training loop lands at 0.8693. That is the main
41
+ finding of this release: **the readout has to be trained into the model.**
42
+
43
+ Full ablation, including the r32+solar combined merge (which measured *worse*
44
+ than r32 alone — 0.8162), is in the `SargeDev/Solar-Decision-JEV-27B` card.
45
+
46
+ ## Quick start (vLLM, one GB10/Spark-class box)
47
+ ```bash
48
+ vllm serve SargeDev/Solar-Decision-JEV-27B \
49
+ --served-model-name jev-judgment-r32 --trust-remote-code \
50
+ --max-model-len 8192 --gpu-memory-utilization 0.85 \
51
+ --default-chat-template-kwargs '{"enable_thinking": false}'
52
+ ```
53
+
54
+
55
+ ## Decision gate (AutoTrust-style, test_set_30k with yuri_v1 D1 placeholders excluded)
56
+
57
+ Read this table carefully, because it contains two very different comparisons.
58
+
59
+ - **The sibling merge** is our other build, scored on the **same 27,695 rows**
60
+ with the **same** harness and the **same** head + calibration. It is a
61
+ sibling model, not a quality bar — but it is the honest apples-to-apples
62
+ reference for what the `lm_head` LoRA is worth.
63
+ - **AutoTrust reference** is the number published by the authors of the original
64
+ AutoTrust work for *their* model on this task set. This is the bar.
65
+
66
+ On the typed-decision kinds (multiple-choice `choice`, ordinal `score`) this
67
+ model is **still below the published AutoTrust reference**, and the gap is
68
+ large - not a rounding difference. On the binary `noul` kind the gap is
69
+ narrower. Cells marked "(below bar)" differ from the published reference by
70
+ more than 5 points.
71
+
72
+ What this means: the fine-tune produces a *usable* decision instrument and a
73
+ clearly better everyday-chat model than its base (see the benchmark matrix
74
+ below), but it is **not** a reproduction of AutoTrust-level typed-decision
75
+ accuracy. Treat the `choice` and `score` columns as an open result, not a
76
+ solved one. We are publishing the numbers as measured, including the gap.
77
+
78
+ **Harness validation.** These numbers were produced by our own HTTP gate
79
+ client, so we checked it against a known path: re-gating the r32 merge
80
+ reproduced the reference's own numbers to within 0.001 on every metric
81
+ (choice top-1 0.8704 -> 0.8693, score KL 0.0623 -> 0.0619, noul AUROC
82
+ 0.9920 -> 0.9919). The harness is sound, so the gaps above are real.
83
+
84
+ | metric | n | **Jev Judgment r32+lm_head (ours)** | Jev Judgment solar r16 | AutoTrust reference (published) |
85
+ |---|---|---|---|---|
86
+ | noul.AUROC | 9969 | 0.9919 (below bar) | 0.9449 | 0.9961 |
87
+ | noul.top-1 | 9969 | 0.9486 | 0.8657 | n/a |
88
+ | noul.ECE | 9969 | 0.0122 | 0.0143 | n/a |
89
+ | noul.KL | 9969 | 0.0081 | 0.0448 | n/a |
90
+ | choice.top-1 | 9199 | 0.8693 (below bar) | 0.5054 | 0.9041 |
91
+ | choice.ECE | 9199 | 0.0051 | 0.0338 | n/a |
92
+ | choice.KL | 9199 | 0.0530 | 0.4994 | n/a |
93
+ | score.top-1 | 8527 | 0.8135 (below bar) | 0.5369 | 0.8910 |
94
+ | score.ECE | 8527 | 0.0367 | 0.0368 | n/a |
95
+ | score.KL | 8527 | 0.0619 (below bar) | 0.4699 | 0.0210 |
96
+ | overall.top-1 | 27695 | 0.8807 | 0.6448 | n/a |
97
+ | overall.ECE | 27695 | 0.0090 (below bar) | 0.0211 | 0.0011 |
98
+ | overall.KL | 27695 | 0.0396 (below bar) | 0.3267 | 0.0185 |
99
+
100
+
101
+ ### Ablation: where the decision readout has to live
102
+
103
+ All four rows below are scored on the SAME 27,695 rows, with the SAME
104
+ harness and the SAME decision head + calibration. The only difference is
105
+ where the decision distribution is produced.
106
+
107
+ | model | decision readout | choice top-1 | score top-1 | score KL | noul AUROC | overall ECE |
108
+ |---|---|---|---|---|---|---|
109
+ | AutoTrust (published reference) | trained into the model (lm_head LoRA) | 0.9041 | 0.8910 | 0.0210 | 0.9961 | 0.0011 |
110
+ | r32 + lm_head LoRA (r=32, alpha=64) | trained into the model (lm_head LoRA) | 0.8693 | 0.8135 | 0.0619 | 0.9919 | 0.0090 |
111
+ | solar r16 (no lm_head LoRA) | separate projection at read time | 0.5054 | 0.5369 | 0.4699 | 0.9449 | 0.0211 |
112
+ | r32 + lm_head LoRA + solar (combined) | trained into the model (lm_head LoRA) | 0.8162 | 0.7192 | 0.1332 | 0.9810 | 0.0625 |
113
+
114
+ Two findings, in order of how much they matter:
115
+
116
+ 1. **The readout has to be trained INTO the model.** A separate projection
117
+ over the final hidden state (the `solar r16` row) reaches only 0.5054
118
+ choice top-1; the same backbone with an `lm_head` LoRA in the training
119
+ loop reaches 0.8693 on the identical rows. A separate projection can
120
+ work, but it needs the backbone to cooperate, and a backbone trained
121
+ without the readout in the loop does not.
122
+
123
+ 2. **Adding a second, readout-free adapter on top makes the typed-decision
124
+ accuracy WORSE, not better.** The `combined` row is the r32 merge plus
125
+ the solar r16 delta applied on top (bit-exact arithmetic, verified).
126
+ It lands between the two parents on every metric - 0.8162 choice top-1,
127
+ between r32's 0.8693 and solar's 0.5054 - rather than above r32. The
128
+ two LoRA deltas are near-orthogonal (mean cosine 0.003), so they do not
129
+ cancel, but solar's delta still degrades the readout r32 trained.
130
+
131
+ We publish the combined row because it is a real, reproducible result, but
132
+ **the r32+lm_head merge is the better model** and is the one this release
133
+ recommends. We are not going to present a merge as an improvement when our
134
+ own numbers say it is a regression.
135
+
136
+ ## Benchmark matrix (lm-eval-harness 0.4.13, greedy, same prompts for every row)
137
+ | model | GSM8K (8-shot CoT) | IFEval (0-shot, prompt-strict) | MMLU subset (5-shot, 8 subjects) | refusal rate |
138
+ |---|---|---|---|---|
139
+ | huihui Qwen3.8-27B (uncensored base) | 97.7 | 76.0 | 81.2 | 0.0% (5/5 probes) |
140
+ | **Jev Judgment bf16** (solar r16) | 96.0 | 81.5 | 81.2 | 0.0% (5/5 probes) |
141
+ | Jev Judgment bf16 (r32+lm_head + solar) | 91.0 | 72.5 | 80.8 | 0.0% (5/5 probes) |
142
+ | Jev Judgment bf16 (r32 + lm_head) | 94.0 | 81.0 | 82.5 | 0.0% (5/5 probes) |
143
+ | Jev Judgment NVFP4+FP8 | 95.3 | 80.5 | 80.5 | 0.0% (5/5 probes) |
144
+ | GGUF Q4_K_M | 95.3 | 79.5 | 82.0 | 0.0% (5/5 probes) |
145
+ | GGUF Q8_0 | 95.7 | 81.0 | 81.0 | 0.0% (5/5 probes) |
146
+
147
+ Questions scored per task:
148
+ | task | questions scored per model |
149
+ |---|---|
150
+ | GSM8K (8-shot CoT) | 300 |
151
+ | IFEval (0-shot, prompt-strict) | 200 |
152
+ | MMLU subset (5-shot, 8 subjects) | 400 |
153
+
154
+ Note: GSM8K scored with flexible-extract (the model answers in its own format).
155
+ MMLU subset subjects: high_school_mathematics, college_biology, professional_psychology,
156
+ jurisprudence, machine_learning, astronomy, global_facts, logical_fallacies (5-shot, _generative variants).
157
+ MMLU --limit applies PER SUBJECT, so the subset is 8 x per-subject-limit questions.
158
+
159
+ Reproducibility: decoding is greedy (do_sample=False, temperature 0, seed 1234), but
160
+ the server batches concurrent requests, and batch composition changes floating-point
161
+ reduction order. Repeat runs of the same config can therefore differ by a point or two
162
+ on the small-n tasks. The error bars in the table are the harness's own stderr over the
163
+ scored rows.
164
+
165
+ ## Lineage & credits
166
+
167
+ This release is a descendant of the earlier `SargeDev/JEV-27B-Uncensored` and
168
+ `SargeDev/JEV-27B-VL-Uncensored` repos. The credit chain is unchanged and is
169
+ reproduced here in full:
170
+
171
+ - **AutoTrust AI** — Blocks-of-Experts recipe, the System-1 decision LoRA
172
+ (r16/r32) + 24-slot decision head, and the *serve_decide.py* decision
173
+ harness, from
174
+ [autotrust/JEV-27B](https://huggingface.co/autotrust/JEV-27B) and
175
+ [autotrust/JEV-27B-VL](https://huggingface.co/autotrust/JEV-27B-VL)
176
+ (Apache-2.0). The `r32` adapter used here is theirs, unmodified: the
177
+ backbone LoRA with the decision head re-expressed as an `lm_head` LoRA, so
178
+ only the 24 verbalizer rows of the output projection change.
179
+ - **huihui-ai** — the *abliterated* (uncensored) Qwen3.8-27B backbone used here
180
+ ([Huihui-Qwen3.8-27B-abliterated](https://huggingface.co/huihui-ai/Huihui-Qwen3.8-27B-abliterated),
181
+ Apache-2.0; layers 18-51 ablated, vision tower untouched).
182
+ - **SargeDev** — [jev-distill-corpus-v3](https://huggingface.co/datasets/SargeDev/jev-distill-corpus-v3),
183
+ the 740,957-row calibrated typed-decision corpus AutoTrust's JEV models were
184
+ trained on (Apache-2.0), and the **solar r16** adapter trained here on
185
+ [jev-distill-corpus-v4](https://huggingface.co/datasets/SargeDev/jev-distill-corpus-v4)
186
+ (the 1,219-step JEV System-1 run, 17-domain tokenized mix).
187
+ - **Qwen** — [Qwen3.8-27B](https://huggingface.co/Qwen/Qwen3.8-27B) base
188
+ (Apache-2.0).
189
+ - **TypeSafe AI** — Jev 1.13, the original closed teacher behind the System-1
190
+ typed-decisions framing (referenced; not redistributed).
191
+
192
+ **Base**: huihui-ai/Qwen3.8-27B-abliterated (bf16; the text-only builds strip
193
+ the vision tower and serve as a plain `qwen3_5_text` causal LM, the VL build
194
+ keeps the tower and serves as `qwen3_5` / `Qwen3_5ForConditionalGeneration`).
195
+ - **Adapters** — this release ships two, and they are NOT interchangeable:
196
+ - `solar r16` (alpha 32, 400 modules, **no `lm_head`**): trained 1,219 steps
197
+ on the JEV System-1 corpus (jev-distill-corpus-v4 tokenized mix: T1 gold
198
+ domains + memory_relevance + 17-domain fill), KL+RPS decision-head
199
+ distillation objective (AutoTrust-style), cosine LR 2e-4, KL_W 1.0,
200
+ RPS_W 0.3. Merged with peft `merge_and_unload`; merge fidelity verified by
201
+ re-gating the bare merged model (it reproduced the adapter-mounted
202
+ numbers).
203
+ - `r32` (alpha 64, 401 modules, **includes `lm_head`**): the backbone LoRA
204
+ plus the 24-slot decision head re-expressed as an `lm_head` LoRA
205
+ (only the 24 verbalizer rows change), so a typed decision is a single
206
+ prefill step with `max_tokens=1` constrained to the option tokens.
207
+ - **Decision head + calibration.json** (shipped in this repo root): the
208
+ instrument-panel piece agents call for numeric confidence — the 24-slot
209
+ verbalizer id list, the per-slot bias, and the per-kind temperature. This
210
+ is the SAME head and the SAME calibration file (verified byte-identical,
211
+ md5 `11359173…` and `7f0f3914…`) that produced every gate number in this
212
+ card, so a consumer reproducing our numbers reproduces them exactly.
213
+ For everyday natural-language judgment, chat with the model directly and
214
+ set `enable_thinking:false` in `chat_template_kwargs`.
215
+ - **Everything measured on one NVIDIA GB10 (DGX Spark-class)**; quantized with
216
+ llmcompressor 0.14.0 (NVFP4) and llama.cpp (GGUF ladder).
217
+