Text Classification
Transformers
Safetensors
English
Chinese
gemma4
image-text-to-text
decision-model
system-one
decision-index
lora-merged
Instructions to use PelaAI/KnowLine-31B-Gen1.5 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use PelaAI/KnowLine-31B-Gen1.5 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="PelaAI/KnowLine-31B-Gen1.5")# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("PelaAI/KnowLine-31B-Gen1.5") model = AutoModelForMultimodalLM.from_pretrained("PelaAI/KnowLine-31B-Gen1.5", device_map="auto") - Notebooks
- Google Colab
- Kaggle
|
Download README.md from PelaAI/KnowLine-31B-Gen1.5: direct link, hf CLI and curl.
- Browser
- Download file 26.2 kB
-
https://huggingface.co/PelaAI/KnowLine-31B-Gen1.5/resolve/main/README.md
- Command line
-
hf download hf://PelaAI/KnowLine-31B-Gen1.5/README.md
-
curl -L -o README.md https://huggingface.co/PelaAI/KnowLine-31B-Gen1.5/resolve/main/README.md
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). | |