KnowLine-31B-Gen1.5 / README.md
PEScn's picture
KnowLine-31B-Gen1.5: KnowLine-31B-Gen1 weights with the question header for long requests in the front end
8e56aa1 verified
|
Raw History Blame Contribute Delete
26.2 kB
---
license: apache-2.0
base_model:
- google/gemma-4-31B-it
base_model_relation: finetune
library_name: transformers
pipeline_tag: text-classification
language:
- en
- zh
tags:
- decision-model
- system-one
- decision-index
- lora-merged
---
# KnowLine-31B-Gen1.5
**KnowLine-31B-Gen1 with a new way of serving long requests: the same weights, short requests read twice as before, and
a question header for longer ones.**
[Inference guide](INFERENCE.md) · [中文说明](README.zh.md) · weights Apache-2.0 · previous version:
[KnowLine-31B-Gen1](https://huggingface.co/PelaAI/KnowLine-31B-Gen1) · siblings:
[KnowLine-26B-A4B-Gen2.5](https://huggingface.co/PelaAI/KnowLine-26B-A4B-Gen2.5),
[KnowLine-35B-A3B-Gen1.5](https://huggingface.co/PelaAI/KnowLine-35B-A3B-Gen1.5),
[KnowLine-4B-Gen5.5](https://huggingface.co/PelaAI/KnowLine-4B-Gen5.5)
We raise the minor version when only inference changes and the major version (Gen) when the weights change. Every weight,
config and tokenizer file of Gen1.5 is byte-identical to Gen1.
Highlights:
- **Same weights, a question header for long requests.** A text-only request whose single read fits in 3,000 tokens is
still read twice, as in Gen1. A longer one, up to 32,768 tokens, is now read once with a header that lists the
request's questions before the state, instead of a plain single read. Nothing was trained; see
[What changed in Gen1.5](#what-changed-in-gen15).
- **Decision Index 0.3 public suite: 70.50** (self-run), up from 70.13 for Gen1 with the same weights. Language rises
from 72.0 to 72.8, tools and agents from 84.7 to 85.4 and retrieval and routing from 73.0 to 73.2; knowledge and
reasoning (59.4) and arts and taste (60.5) are unchanged. KnowLine-35B-A3B-Gen1.5 scores 70.72 and
KnowLine-26B-A4B-Gen2.5 68.21 on the same suite, served read twice; see [Comparison](#comparison).
- **Decision tasks from new domains:** on our larger set of decision tasks from domains not in training (34 tasks) it
scores 75.0 (26B-A4B-Gen2.5: 66.4; 35B-A3B-Gen1.5: 56.2). On our older 10-task set it scores 57.7
(26B-A4B-Gen2.5: 56.6; 35B-A3B-Gen1.5: 56.6).
- **Private scores:** the board's full score comes from the maintainers' private run. Gen1 is listed at 71.86. Gen1.5 has
the same weights as Gen1; its private scores will be produced by the maintainers' run.
- **Our other evaluations:** Chinese in-house sets 75.9 / 75.9 (26B-A4B-Gen2.5: 73.7 / 71.0), C-Eval 82.5 (77.9),
Open-Jev 1.1 test / OOD 91.3 / 94.8 (92.7 / 92.7), JevBench / JevBench-hard 90.5 / 80.2 (90.5 / 81.1), English
in-house set 70.2 (70.5); see [Evaluation](#evaluation).
- **Planted instructions:** 0.7% of answers changed because of an instruction planted in the state, and 5.3% with
injection templates not seen in training, more than KnowLine-26B-A4B-Gen2.5 (0.1% and 1.7%); see
[Limitations](#limitations).
- **Calibrated probabilities:** the temperature folded into the weights is unchanged from Gen1. Computed with the board's
method on the public suite, ECE is about 0.013-0.022 and the Brier score about 0.23-0.26 (KnowLine-26B-A4B-Gen2.5:
0.013-0.018 and 0.24-0.27); on our own held-out sets calibration is weaker, see [Calibration](#calibration).
- **Images: unchanged.** Requests with images are sent exactly as in Gen1, so Gen1's image results apply: trained on text
only, it keeps the base model's vision tower and scores 69.9 on our reconstruction of the Decision Index 0.3.1 vision
public suite (26B-A4B-Gen2: 64.7; 35B-A3B-Gen1: 71.2), and 69.3 on the official vision public suite (self-run); see
[Images](#images-zero-shot).
- **Boxes: unchanged.** Box questions are answered exactly as in Gen1, so Gen1's zero-shot results apply: asked for a
named target in an image, it returns a bounding box without box training: ScreenSpot centre-hit 81.3, RefCOCO IoU≥0.5
77.3 (documents weaker, FUNSD 35.3); see [Boxes](#boxes-zero-shot-untrained).
KnowLine is an independent model. It is not affiliated with or endorsed by TypeSafe, Jev or Google, and it is not
derived from TypeSafe or Jev.
## What it does
You send a state (text or a chat) and up to 64 typed questions: yes/no, choose one of k, or score on a rubric. The model
answers every question with a probability distribution over its options:
- one forward pass per question, with no text generation;
- the output is the probability of each option's label token;
- existing Jev clients only need to change the base URL, and users of KnowLine-31B-Gen1 and other KnowLine models only
need to change the model name, because the interface is the same.
| | |
|---|---|
| Base model | [google/gemma-4-31B-it](https://huggingface.co/google/gemma-4-31B-it) (Apache-2.0): dense, about 31B parameters |
| Weights | byte-identical to [KnowLine-31B-Gen1](https://huggingface.co/PelaAI/KnowLine-31B-Gen1), a LoRA fine-tune of gemma-4-31B-it (rank 32, alpha 64, language model only, one epoch, merged into bf16 weights); see the [Gen1 card](https://huggingface.co/PelaAI/KnowLine-31B-Gen1#how-gen1-was-made) for every step |
| Release format | bf16 weights (about 63 GB), with a readout temperature T = 1.44 folded into the final norm weight and the final logit soft-cap (see [Calibration](#calibration)); the front end reads score questions at an effective temperature of 1.0 (`temperatures.json`). The vision tower is unchanged from the base model; the tokenizer is Gemma 4's, not the one of the Qwen-based KnowLine models. |
| Serving | `serve_knowline.sh`: SGLang in bf16, as for Gen1 (we did not test FP8 at load for this model); `knowline_server.py` reads short requests twice, as in Gen1 (on by default), and `serve_knowline.sh` adds `--header-when-long 32768`, so longer text-only requests are read once with the question header (`--header-when-long 0`, the default of `knowline_server.py` started on its own, gives the Gen1 prompts; `--no-read-twice` reads every request once, without the header). SGLang reserves 85% of the GPU's memory by default (MEM); the weights take about 63 GB. We ran every evaluation with one server on one 96 GB H20. |
| Languages | English, Simplified Chinese, Traditional Chinese |
## Quickstart
```bash
pip install "sglang==0.5.21" "transformers==5.12.1" requests
bash serve_knowline.sh PelaAI/KnowLine-31B-Gen1.5 0 8080 # SGLang (bf16) on :9080 + /v1/systemone on :8080
curl -s http://127.0.0.1:8080/v1/systemone -H 'Content-Type: application/json' -d '{
"model": "m",
"state": "Customer: my order arrived broken, I want my money back.",
"questions": {"refund": {"type": "noul", "instructions": "Should the agent offer a refund?"},
"tone": {"type": "choice", "instructions": "Customer tone?",
"criteria": {"angry": "Angry", "neutral": "Neutral", "happy": "Happy"}}}}'
```
- **Front end:** `knowline_server.py` with `knowline_layout.py` next to it; together they depend only on transformers and
requests. Requests that read twice covers, and requests with images, are rendered exactly as by the KnowLine-31B-Gen1
front end, prompt for prompt; only longer text-only requests change.
- **Full settings:** the exact settings used for our Decision Index run are in [INFERENCE.md](INFERENCE.md).
## What changed in Gen1.5
1. **Question header for long requests.** Gen1 read a text-only request of more than 3,000 tokens once: the state, then
the instruction, the question and its options. Gen1.5 puts a header before the state that lists every question of the
request, introduced by the line "Questions that will be asked about the conversation or state below:", and still reads
the request once; the answer is read from the label token as before. The rule is mechanical: it applies to every
text-only request that read twice does not cover, as long as its longest prompt with the header is at most 32,768
tokens (5.6% of the Decision Index requests). Requests of at most 3,000 tokens are read twice exactly as in Gen1
(94.1%); requests with images, and the few whose header prompt would be longer than 32,768 tokens (0.3%), are sent as
in Gen1.
2. **A likely reason.** With causal attention, a long state read once is read before the model knows what will be asked;
with the header, the questions come first, so every token of the state can attend to them.
3. **No training.** The weights, the temperature, the per-type temperatures and the label-token readout are those of
Gen1. We checked the change on our own evaluation sets and on the Decision Index public suite before release.
4. **Credit.** The question header and the read-twice layout follow FlexDM
([github.com/1000luca/FlexDM](https://github.com/1000luca/FlexDM), MIT), and Aleria Judge ([github.com/ALERIA-ML/aleria-judge](https://github.com/ALERIA-ML/aleria-judge), Apache-2.0) uses the same header structure;
repeating the input goes back to RE2 (Xu et
al., 2023, [arXiv:2309.06275](https://arxiv.org/abs/2309.06275)). `knowline_layout.py` is our own implementation.
## Comparison
Scores on the Decision Index. Since Decision Index 0.4, the board's full score is 60% private tests of the same skills
and 40% private tasks from new domains; the public suite is shown but no longer counts. Gen1.5 has no board entry yet.
| model | size | DI 0.3 public | DI 0.4.1 full | source |
|---|---|---|---|---|
| **KnowLine-31B-Gen1.5** | 31B | **70.50** | not yet scored | self-run, official kit |
| KnowLine-31B-Gen1 (same weights) | 31B | 70.13 | 71.86 | board |
| KnowLine-35B-A3B-Gen1.5 | 35B-A3B | 70.72 | 65.77 | board |
| KnowLine-26B-A4B-Gen2.5 | 26B-A4B | 68.21 | 64.57 | board |
| Fastino GLiDE V1.2 | – | 71.99 | 71.52 | board |
| Sieve 31B v3 | 31B | 71.68 | 71.10 | board |
| Turion Jev 31B | 31B | 66.16 | 70.47 | board |
| vLLM-SR d3-ultra | 27B | 71.57 | 70.18 | board |
| Jeffan-31b-1710 | 31B | 73.13 | 69.75 | board |
| H2O Lightning 31B v1.1 | 31B | 67.75 | 68.64 | board |
| WeMM-JEV-27B | 27B | 69.37 | 68.49 | board |
| mammoth-1 | 27B | 75.34 | 68.44 | board |
| Perplexity Decider v1.2 | 27B | 67.74 | 67.98 | board |
| StartLux-Decision v1.1 27B | 27B | 72.88 | 67.92 | board |
| FlexDM · Gemma-4-31B | 31B | 63.63 | 67.56 | board |
| Jev 1.14 | (API) | 60.70 | 60.24 | board |
Board rows from the board's data of 2026-10-29 (17:22 UTC, Decision Index 0.4.1).
Public-suite skill by area (DI 0.3; KnowLine-31B-Gen1.5 with its release serving, the other three served read twice):
| area | KnowLine-31B-Gen1.5 | KnowLine-31B-Gen1 | KnowLine-26B-A4B-Gen2.5 | KnowLine-35B-A3B-Gen1.5 |
|---|---|---|---|---|
| Knowledge & reasoning | 59.4 | 59.4 | 55.1 | 55.0 |
| Language | 72.8 | 72.0 | 71.2 | 72.9 |
| Retrieval & routing | 73.2 | 73.0 | 70.9 | 75.4 |
| Tools & agents | 85.4 | 84.7 | 83.3 | 88.2 |
| Arts & taste | 60.5 | 60.5 | 61.4 | 64.2 |
## Releases
The model is trained in a self-evolving loop, and new versions will follow.
| model | date | DI 0.3 public | golden held-out (en / zh-Hans / zh-Hant) | notes |
|---|---|---|---|---|
| KnowLine-31B-Gen1.5 (this model) | 2026-11-04 | 70.50 | 70.2 / 75.9 / 75.9 | Gen1 weights; read twice, question header for long requests |
| [KnowLine-31B-Gen1](https://huggingface.co/PelaAI/KnowLine-31B-Gen1) | 2026-10-24 | 70.13 | 70.2 / 75.9 / 75.9 | first release on a dense Gemma 4 base; read-twice serving |
| [KnowLine-26B-A4B-Gen2.5](https://huggingface.co/PelaAI/KnowLine-26B-A4B-Gen2.5) | 2026-10-22 | 68.21 | 70.5 / 73.7 / 71.0 | Gen2 weights, read-twice serving |
| [KnowLine-35B-A3B-Gen1.5](https://huggingface.co/PelaAI/KnowLine-35B-A3B-Gen1.5) | 2026-10-22 | 70.72 | 70.8 / 74.6 / 73.2 | 35B-A3B Gen1 weights, read-twice serving |
| [KnowLine-4B-Gen5.5](https://huggingface.co/PelaAI/KnowLine-4B-Gen5.5) | 2026-10-22 | 66.75 | 70.3 / 72.1 / 67.5 | Gen5 weights, read-twice serving |
| [KnowLine-4B-Gen5](https://huggingface.co/PelaAI/KnowLine-4B-Gen5) | 2026-10-21 | 65.67 | 69.6 / 71.7 / 67.1 | 4B, fifth release |
| [KnowLine-26B-A4B-Gen2](https://huggingface.co/PelaAI/KnowLine-26B-A4B-Gen2) | 2026-10-19 | 66.94 | 70.6 / 72.6 / 69.8 | second 26B-A4B release |
| [KnowLine-26B-A4B-Gen1](https://huggingface.co/PelaAI/KnowLine-26B-A4B-Gen1) | 2026-10-19 | 65.76 | 70.6 / 72.2 / 69.2 | first release on a Gemma 4 base |
| [KnowLine-35B-A3B-Gen1](https://huggingface.co/PelaAI/KnowLine-35B-A3B-Gen1) | 2026-10-12 | 69.49 | 70.3 / 73.8 / 72.1 | first 35B-A3B release |
## Evaluation
All results are self-run and have not been verified by a third party. The new serving changes only text-only requests
over 3,000 tokens; every other request is sent exactly as with KnowLine-31B-Gen1. JevBench and the seen-template
injection set were run again in full through the Gen1.5 release server, and the longer requests of our 34-task
new-domain set through our evaluation front end with the same layout. The other sets have no request that changes, so
their numbers below (the other rows of the first table, Mind2Web, images and boxes) are Gen1's, measured with the Gen1
serving (read twice on). The 31B-Gen1 columns repeat the Gen1 card. The rows for our new-domain task sets carry a
footnote on the tasks that resemble our training data. The 26B-A4B-Gen2.5 and 35B-A3B-Gen1.5 numbers are from their
release evaluations with the read-twice front end.
### Held-out and Chinese evaluations
| suite | 31B-Gen1.5 | 31B-Gen1 | 26B-A4B-Gen2.5 | 35B-A3B-Gen1.5 |
|---|---|---|---|---|
| In-house evaluation set, English | 70.2 | 70.2 | 70.5 | 70.8 |
| In-house evaluation set, Simplified Chinese | 75.9 | 75.9 | 73.7 | 74.6 |
| In-house evaluation set, Traditional Chinese | 75.9 | 75.9 | 71.0 | 73.2 |
| C-Eval (4 categories, macro) | 82.5 | 82.5 | 77.9 | 88.1 |
| Open-Jev 1.1 test / OOD | 91.3 / 94.8 | 91.3 / 94.8 | 92.7 / 92.7 | 93.4 / 93.6 |
| JevBench / JevBench-hard | 90.5 / 80.2 | 90.5 / 80.2 | 90.5 / 81.1 | 87.0 / 73.0 |
| Decision tasks from new domains (our own, 34 tasks)¹ | 75.0 | 74.9 | 66.4 | 56.2 |
| Decision tasks from new domains (our own, 10 tasks)¹ | 57.7 | 57.7 | 56.6 | 56.6 |
| Prompt injection: answers changed (lower is better) | 0.7% | 0.4% | 0.1% | 0.0% |
| Prompt injection with templates not seen in training (lower is better) | 5.3% | 5.3% | 1.7% | 1.0% |
- In a paired sign test against KnowLine-26B-A4B-Gen2.5, it is higher on the Simplified and Traditional Chinese in-house
sets, C-Eval and Open-Jev 1.1 OOD (p < 0.001 each) and lower on Open-Jev 1.1 test (p = 0.04); the English in-house set
(p = 0.61), JevBench and JevBench-hard (p = 1.0) do not differ. With unseen injection templates, 32 of 600 answers
moved to the planted option against 10 of 600 (p < 0.001).
- Against KnowLine-35B-A3B-Gen1.5, it is higher on the Simplified (p = 0.03) and Traditional (p = 0.004) Chinese in-house
sets and lower on C-Eval (p < 0.001) and Open-Jev 1.1 test (p = 0.002); the English in-house set (p = 0.42),
Open-Jev 1.1 OOD (p = 0.07), JevBench and JevBench-hard (p = 0.06) do not differ at p < 0.05. With unseen injection
templates, 32 of 600 against 6 of 600 (p < 0.001).
- ¹ Our sets of decision tasks from domains not in training, run through our evaluation front end, which uses the release
layout: KnowLine-31B-Gen1.5 with its serving (read twice, and the question header for the longer requests of the
34-task set), the other three read twice. 11 of the 34 tasks (rules, policies, state tracking) resemble procedural
synthetic tasks in our training data; on the other 23 it scores 73.4 (31B-Gen1: 73.3; 26B-A4B-Gen2.5: 66.1;
35B-A3B-Gen1.5: 57.1).
### Web operation (Mind2Web official test splits, evaluation only)
| split | 31B-Gen1 element selection | 31B-Gen1 operation (balanced) | 26B-A4B-Gen2.5 element selection | 26B-A4B-Gen2.5 operation (balanced) |
|---|---|---|---|---|
| test_task (websites seen in training, new tasks) | 91.5 | 92.8 | 89.8 | 90.3 |
| test_website (new websites) | 91.5 | 95.9 | 89.2 | 94.0 |
| test_domain (new domains) | 90.4 | 96.6 | 89.6 | 92.9 |
- Element selection is higher than with KnowLine-26B-A4B-Gen2.5 on all three splits (paired test p = 0.05, 0.01 and
0.11); operation accuracy is within noise (p ≥ 0.09). No request failed. No Mind2Web request is over 3,000 tokens, so
these results, measured with the Gen1 serving, hold for Gen1.5 unchanged.
- The task is to pick the target element from a candidate set: the target plus up to 5 other elements sampled from the
page. This is easier than the original Mind2Web protocol, so do not compare these results with the Mind2Web
leaderboard.
### Images (zero-shot)
- **No image training:** the vision tower is the base model's, unchanged, and no images were seen in training.
`knowline_server.py` accepts OpenAI-style `image` / `image_url` content parts in a chat state and passes them to
SGLang; each question is still one prefill. Requests with images are read once, without the question header (read
twice and the header are text-only).
- **How we measured it:** the same reconstruction of the Decision Index 0.3.1 vision public suite as for the earlier
releases (11 benchmarks, chance-corrected skill and the board's weights), run through the Gen1 release server, 0 failed
requests. We also ran the official vision public suite (12,210 rows, complete, 0 failed). A request with images is sent
exactly as in Gen1, byte for byte, to the same weights, so these results hold for Gen1.5 and we did not rerun them.
| benchmark | 31B-Gen1 (our reconstruction) | 31B-Gen1 (official vision suite) | 26B-A4B-Gen2 (our reconstruction) | 35B-A3B-Gen1 (our reconstruction) |
|---|---|---|---|---|
| CV-Bench | 73.9 | 74.1 | 70.5 | 75.8 |
| BLINK | 65.7 | 58.0 | 57.4 | 59.8 |
| RealWorldQA | 57.2 | 55.9 | 54.2 | 71.9 |
| CharXiv | 65.8 | 74.7 | 61.9 | 66.9 |
| InfographicVQA | 86.9 | 91.3 | 81.4 | 90.7 |
| Mind2Web | 77.3 | 73.4 | 70.8 | 86.4 |
| Winoground | 85.5 | 86.0 | 78.5 | 80.0 |
| KIE (CORD+FUNSD) | 94.3 | 93.7 | 95.1 | 96.2 |
| Moderation (Hateful Memes) | 49.7 | 44.4 | 41.1 | 41.1 |
| R-Bench-M | 30.3 | 30.3 | 26.2 | 29.1 |
| MMMU-Pro vision | 38.7 | 36.2 | 28.0 | 45.1 |
| **weighted public index** | **69.9** | **69.3** | 64.7 | 71.2 |
- **Between the 26B-A4B and the 35B-A3B:** 5.2 points above KnowLine-26B-A4B-Gen2 and 1.3 points below
KnowLine-35B-A3B-Gen1 on our reconstruction, with the largest gains over the 26B-A4B on MMMU-Pro vision (+10.7),
Hateful Memes (+8.6) and BLINK (+8.3); KIE is 0.8 lower.
- **Indicative only:** the reconstruction is ours, not the board's rows; the official-suite column is a self-run of the
official kit.
### Boxes (zero-shot, untrained)
- **What it does:** a box question names a target in an image; the server returns its bounding box, or a refusal when
the model gives no box. There was no box training: this is the base model's own ability, read out through the
release front end (`--box-prompt gemma --box-coords yxyx`).
- **How we measured it:** one request per item through the Gen1 release server, 280 image soft tokens, images at most
1,568 px per side, at most 64 new tokens. Every item counts and a refusal counts as a miss; 0 requests failed. Box
questions are answered exactly as in Gen1, so these results hold for Gen1.5.
| set | n | measure | 31B-Gen1 | refusals |
|---|---|---|---|---|
| ScreenSpot (6 splits × 50) | 300 | centre inside the target | 81.3 | 5.3% |
| RefCOCO val | 300 | IoU ≥ 0.5 (mean IoU) | 77.3 (72.7) | 5.0% |
| FUNSD | 150 | IoU ≥ 0.5 (centre inside) | 35.3 (58.7) | 4.0% |
| Business UI screenshots, zh/en (our own)² | 1,500 | centre inside the target | 60.5 (en 67.4, zh 56.2) | 5.8% |
| Invoices, zh/en (our own)² | 800 | IoU ≥ 0.5 | 44.6 (clean 74.8, photo 43.4, scan 34.6) | 0.1% |
- **Weak on documents:** form and document fields are weak at the shipped 280 soft tokens (FUNSD 35.3). Higher image
resolution helps documents; it is not offered in this release.
- **Text targets are easier than icons:** on ScreenSpot, icons 68.0 / 70.0 / 74.0 against text 92.0 / 94.0 / 90.0
(desktop / mobile / web).
- **Confidence:** the box confidence is not a calibrated probability (ECE 0.238 on ScreenSpot, 0.153 on RefCOCO and
0.247 on FUNSD). We ship no box calibration file.
- ² Synthetic held-out sets we built ourselves, for reference only; they are not public benchmarks.
### Calibration
Computed on the 0.3 public suite using the method described by the Decision Index board: each field is scored right or
wrong, confidence is the probability of the chosen option, benchmarks are weighted equally, and 10 equal-width bins are
used.
| metric | 31B-Gen1.5 | 31B-Gen1 | 26B-A4B-Gen2.5 | 35B-A3B-Gen1.5 |
|---|---|---|---|---|
| ECE (lower is better) | 0.013-0.022 | 0.012-0.021 | 0.013-0.018 | 0.03-0.04 |
| Brier score (lower is better) | 0.23-0.26 | 0.23-0.26 | 0.24-0.27 | 0.24-0.26 |
| Confidence ≥95% but wrong | 1.0-1.1% | 0.9-1.0% | 0.9% | 1.5% |
| Mean confidence / accuracy | 0.84 / 0.81-0.83 | 0.83-0.84 / 0.81-0.83 | 0.82-0.83 / 0.80-0.82 | 0.85-0.86 / 0.81-0.83 |
- **Temperature in the weights:** unchanged from Gen1: the final norm weight and the final logit soft-cap include a
readout temperature T = 1.44, fitted on our in-training evaluation sets with the read-twice serving, so every final
logit is divided by 1.44 before the softmax over the option labels. The top-ranked option does not change. On our
held-out sets, ECE is 0.044 with every question read at this temperature and 0.102 without it (T = 1).
- **Score questions at temperature 1.0 (as in Gen1):** `serve_knowline.sh` passes `temperatures.json`
(`{"score": 0.6944}`), so the front end divides the logits of score (rubric) questions by a further 0.6944 and reads
them at an effective temperature of 1.44 × 0.6944 = 1.0; yes/no and choice questions stay at 1.44. Score questions
are often read as an expected value over the scale, which a higher temperature pulls toward the middle. This is a
serving setting, not a weight change, and the KnowLine releases before Gen1 did not use it; starting
`knowline_server.py` without `--temperatures` (or `knowline_engine.py` with `--option temperatures=none`) reads every
question at 1.44. The cost is calibration: with the release serving, ECE on our held-out sets is 0.064 (0.044 with
score questions also at 1.44; KnowLine-26B-A4B-Gen2.5: 0.027; KnowLine-35B-A3B-Gen1.5: 0.023).
- **Why ranges:** the board does not publish which benchmarks it uses for calibration, so we report ranges over the
plausible benchmark sets, as for the earlier releases.
- **Recommendation:** the temperature was fitted on our data. If your use depends on probability thresholds, check
calibration on your own data.
## Disclosures
- **Training data:** the weights are those of Gen1, so Gen1's disclosures on training data, Decision Index format data,
decontamination and how the weights were made apply unchanged; see the
[Gen1 card](https://huggingface.co/PelaAI/KnowLine-31B-Gen1#disclosures).
- **Selection on evaluations:** we adopted the question header for long requests after checking it on our own evaluation
sets and on the Decision Index 0.3 public suite (the 70.50 above; [INFERENCE.md](INFERENCE.md) describes how that run
was made).
- **No model outputs as labels:** no output of Jev or any other decision model was used as a training label.
## Limitations
- **Size and speed:** about 63 GB of bf16 weights and dense, so every token uses all 31B parameters; we have only run it
on 96 GB GPUs. One request at a time on one H20, over 700 Decision Index rows sampled in the style of the board's
latency method, requests take 330 ms median and 1,135 ms mean (4,241 ms at the 95th percentile);
KnowLine-26B-A4B-Gen2.5 took 66.3 ms and 151 ms on an earlier sample of 300 rows; see [INFERENCE.md](INFERENCE.md).
- **Read twice and the question header:** text-only requests up to 3,000 tokens are written twice, about 1.54 times the
prompt tokens on the Decision Index suite. Longer ones carry the question header in every question's prompt, so the
summed prompt tokens of the suite are 896 million (323 million with the Gen1 serving); with SGLang's prefix cache,
which prefills the header and the state once per request, the prefilled tokens grow by about 5%. Use `--no-read-twice`
if latency matters more (it also turns the header off); we did not evaluate this model without read twice for this
card.
- **Planted instructions:** easier to steer than our other models: with injection templates not seen in training, 5.3%
of answers moved to the planted option, against 1.7% for KnowLine-26B-A4B-Gen2.5 and 1.0% for KnowLine-35B-A3B-Gen1.5
(0.7% with the seen templates). Keep untrusted text clearly delimited.
- **C-Eval and Open-Jev 1.1 test:** below KnowLine-35B-A3B-Gen1.5 on C-Eval (82.5 against 88.1) and Open-Jev 1.1 test
(91.3 against 93.4).
- **Calibration on our sets:** with score questions read at an effective temperature of 1.0, ECE on our held-out sets
is 0.064, higher than for KnowLine-26B-A4B-Gen2.5 (0.027) and KnowLine-35B-A3B-Gen1.5 (0.023).
- **Images:** there was no image training, so check image use on your own data.
- **Boxes:** zero-shot (no box training); weak on form and document fields, and the box confidence is not calibrated;
see [Boxes](#boxes-zero-shot-untrained).
- **Other attacks:** other prompt-injection attacks may still work.
- **Private tests:** part of the public-suite score comes from benchmarks whose tasks are in our training data, so the
private tests may show a lower score.
## Citation
```bibtex
@misc{knowline31bgen15,
title = {KnowLine-31B-Gen1.5: a 31B decision model served with read twice and a question header},
author = {PelaAI},
year = {2026},
url = {https://huggingface.co/PelaAI/KnowLine-31B-Gen1.5}
}
```
## License
- **Weights:** Apache-2.0, the same as the base model.
- **Base model licence:** google/gemma-4-31B-it is released under Apache-2.0; see Google's licence page,
[ai.google.dev/gemma/docs/gemma_4_license](https://ai.google.dev/gemma/docs/gemma_4_license).
- **Code:** `knowline_server.py`, `knowline_layout.py` and `knowline_engine.py` are MIT (see the file headers).