--- license: apache-2.0 library_name: transformers tags: - gs1 - decision-model - custom_code - system-one - safetensors base_model: - Qwen/Qwen3.5-9B --- # GS1-9B ![GS1 — Fast, Faithful, Frontier](assets/banner.svg) > ***Fast, Faithful, Frontier System One Intelligence.*** [Code](https://github.com/bigai-nlco/GS1) · [Model](https://huggingface.co/collections/bigai/gs1) · [Documentation](https://github.com/bigai-nlco/GS1/blob/main/docs/README.md) · [Playground](https://github.com/bigai-nlco/GS1/blob/main/playground/README.md) **GS1** is a family of open-source decision models developed by **BIGAI** (Beijing Institute for General Artificial Intelligence). It computes native probability distributions over runtime-defined candidates for agent routing, verification, extraction and control. ## GS1 Highlights - **Fast - Native Runtime Decision Head.** - Produce Choice, Noul and Score distributions directly, with zero generated output tokens. - A native multi-head cross-attention decision head queries state evidence using question and candidate representations. - Within the GS1 family, CUDA Graph lets GS1-0.8B reach 12.51 ms P50 for one short question and **6.05×** speedup over default inference for eight short questions. - **Faithful — multi-step RL with calibrated rewards** - Reinforcement learning optimizes sampled action probabilities with a Brier reward. [RLCD](https://github.com/bigai-nlco/GS1/blob/main/docs/RLCD.md) - Native probabilities and confidence support evidence gathering, deferral and explicit abstention choices. - **Frontier — Hybrid Architecture, Competitive Quality** - **Causal Gated DeltaNet** and **Segmented Bidirectional Full Attention** give candidates their complete comparison context while preserving immutable prefixes for reuse across questions. - Carry-preserving **Attention Residual** lets sparse full-attention receivers query earlier representations while retaining the explicit skip-connection anchor. [Architecture](https://github.com/bigai-nlco/GS1/blob/main/docs/model.md) - GS1-9B reaches **70.45** on the latest Decision Index 0.4.1 Public index. All GS1 sizes lie on the displayed parameter–performance frontier. ## Model Overview | Specification | GS1-9B | | --- | ---: | | Model type | Native typed decision model | | Stored parameters | 8,829,078,768 | | Hidden dimension | 4,096 | | Decoder layers | 32 | | Decision attention heads | 16 | | Candidate-routing layers | 2 | | Decision projection dimension | 2,048 | | Maximum complete branch length | 32,768 tokens | GS1 uses a Qwen3.5 hybrid backbone that interleaves three causal Gated DeltaNet layers with one segmented full-attention layer. A native cross-attention decision head compares runtime-defined candidates against state evidence. [Architecture](https://github.com/bigai-nlco/GS1/blob/main/docs/model.md) Text and decision-head weights are stored in FP32, and the retained vision tower in BF16. Inference supports BF16 computation with FP32 final logits and probability reductions. Stored dtypes are preserved by default loading. ![GS1 architecture](assets/architecture.svg) | Primitive | Typical use | Output | | --- | --- | --- | | **Choice** | Routing, classification, tool selection | Candidate ID, all candidate probabilities, confidence | | **Noul** | Verification and binary judgments | Probability that the proposition is true: `p(true)` | | **Score** | Ordered ratings and rubric judgments | Expected zero-based level, level probabilities, confidence | ## Benchmark Results ### Decision Index The following are the **latest complete public-suite results** (edition 0.3). Each model completes **140,178 requests** and **312,320 decisions** across **43 text benchmarks**, with **100% coverage** and zero failed or unsupported requests. **37 benchmarks** contribute to the chance-corrected Public index; six additional benchmarks are displayed separately. The private Full score is evaluated by the leaderboard maintainers. | Metric | [GS1-0.8B](https://huggingface.co/bigai/GS1-0.8B) | [GS1-2B](https://huggingface.co/bigai/GS1-2B) | [GS1-4B](https://huggingface.co/bigai/GS1-4B) | [GS1-9B](https://huggingface.co/bigai/GS1-9B) | | --- | ---: | ---: | ---: | ---: | | Public index ↑ | **56.12** | **62.22** | **68.97** | **70.45** | | Raw index ↑ | 67.36 | 71.70 | 76.47 | 77.46 | | Coverage | 100% | 100% | 100% | 100% | ![GS1 parameter–performance Pareto frontier](assets/gs1_pareto_frontier.svg) The frontier refers to the comparison models displayed in the figure. ### Area Scores Chance-corrected area scores on a 0–100 scale; higher is better. | Area | GS1-0.8B | GS1-2B | GS1-4B | GS1-9B | | --- | ---: | ---: | ---: | ---: | | Knowledge & Reasoning | 33.32 | 41.84 | 52.40 | 56.01 | | Language Understanding | 56.25 | 63.67 | 71.12 | 72.62 | | Retrieval & Classification | 68.62 | 71.21 | 75.55 | 75.58 | | Tools & Automation | 79.26 | 83.57 | 87.49 | 87.61 | | Arts & Human Taste | 47.47 | 54.16 | 59.26 | 60.57 |
Complete text benchmark results — 43 benchmarks Native benchmark scores are scaled to 0–100 before chance correction. The metric is shown for each row. † marks the six display-only benchmarks that do not contribute to the Public index. All rows use the Decision Index typed-decision protocol. | Benchmark | Native metric | GS1-0.8B | GS1-2B | GS1-4B | GS1-9B | | --- | --- | ---: | ---: | ---: | ---: | | BFCL | case exact accuracy | 90.44 | 93.27 | 97.52 | 96.99 | | ToolRet | nDCG@10 | 67.52 | 69.25 | 71.16 | 70.90 | | API-Bank | accuracy | 67.52 | 76.97 | 84.45 | 85.43 | | BANKING77 | macro-F1 | 85.33 | 88.34 | 92.09 | 92.76 | | CLINC150+OOS | macro-F1 | 85.51 | 90.61 | 94.35 | 93.48 | | RouterBench † | selected quality (quality objective) | 79.63 | 71.76 | 79.06 | 79.86 | | Home appliance simulator | case exact accuracy | 98.86 | 100.00 | 100.00 | 100.00 | | SGD/SGD-X † | macro-F1 | 61.15 | 65.16 | 68.10 | 67.60 | | ContractNLI | macro-F1 | 84.41 | 84.14 | 85.99 | 86.16 | | ANLI | macro-F1 | 58.98 | 65.80 | 75.74 | 77.32 | | BPoMP | accuracy | 78.14 | 87.24 | 92.02 | 93.92 | | Humicroedit | accuracy | 61.80 | 62.56 | 65.68 | 64.50 | | POP909-CL | accuracy | 84.40 | 84.95 | 84.70 | 85.05 | | cfcolor | accuracy | 69.02 | 68.70 | 71.26 | 71.38 | | MMLU † | accuracy | 56.09 | 65.65 | 77.95 | 81.42 | | GPQA Diamond | accuracy | 33.67 | 35.71 | 44.39 | 48.47 | | ARC-Easy † | accuracy | 88.97 | 95.50 | 98.19 | 98.82 | | ARC-Challenge † | accuracy | 78.16 | 87.54 | 95.05 | 96.08 | | WinoGrande | accuracy | 71.11 | 80.82 | 89.66 | 92.74 | | HellaSwag | accuracy | 80.85 | 89.44 | 94.81 | 96.28 | | GSM8K | accuracy | 49.47 | 57.35 | 69.37 | 71.04 | | ChessBench | accuracy | 25.44 | 26.24 | 28.60 | 29.08 | | MuSR | accuracy | 62.10 | 70.08 | 71.94 | 74.60 | | SATA-Bench | case exact accuracy | 46.48 | 53.33 | 54.61 | 55.70 | | SimpleBench † | accuracy | 0.00 | 10.00 | 0.00 | 10.00 | | BRIGHT | nDCG@10 | 37.32 | 38.75 | 46.58 | 45.40 | | Amazon ESCI | macro-F1 | 56.30 | 57.51 | 60.69 | 61.48 | | ACOS | per-review F1 | 51.22 | 52.45 | 56.19 | 56.93 | | FinEntity | macro-F1 | 85.65 | 87.77 | 95.53 | 94.83 | | iSarcasmEval | Sarcasm F1 · track A, English | 44.64 | 59.44 | 63.76 | 68.02 | | VAST | macro-F1 | 76.52 | 77.34 | 78.62 | 78.49 | | NLI4CT | macro-F1 | 66.64 | 73.41 | 80.38 | 82.39 | | CRUXEval | accuracy | 42.98 | 57.89 | 78.60 | 81.40 | | CLadder | accuracy | 89.44 | 87.74 | 91.30 | 94.82 | | HLE | accuracy | 14.97 | 13.97 | 11.98 | 11.58 | | Habermas Machine | accuracy | 56.80 | 59.13 | 61.93 | 63.13 | | PhishNChips phishing decisions | accuracy | 98.20 | 97.85 | 99.30 | 98.90 | | MMLU-Pro | accuracy | 38.66 | 47.10 | 60.51 | 64.06 | | BBH fixed-option tasks | accuracy | 68.88 | 76.96 | 84.07 | 87.07 | | RAGTruth response-level hallucination | F1 on hallucinated class | 79.96 | 83.00 | 85.20 | 85.08 | | HoVer claim verification | accuracy | 85.85 | 88.10 | 89.15 | 90.05 | | When2Call MCQ | accuracy | 86.39 | 89.40 | 91.59 | 92.06 | | New Yorker caption matching | accuracy | 56.25 | 65.91 | 73.67 | 76.52 |
Evaluation uses BF16 native reference inference and the official scorer. Independent re-scoring of the compressed predictions reproduces the results exactly. ### Inference Performance Latest family measurements for the 256-token, single-question fixture: | Model | GS1 Default P50 (ms) | CUDA Graph P50 / P95 (ms) | Speedup | Graph allocated (GiB) | | --- | ---: | ---: | ---: | ---: | | GS1-0.8B | 54.10 | **12.51 / 13.22** | 4.32× | 4.07 | | GS1-2B | 53.95 | **18.64 / 18.69** | 2.89× | 10.60 | | GS1-4B | 72.87 | **35.17 / 35.24** | 2.07× | 23.68 | Single RTX 4090 reporting 48 GiB, BF16 computation, five warmups and 30 timed calls per group. Timing covers the complete in-process decision call, including validation, prompt compilation, model execution, probabilities and typed responses; model loading, graph capture, HTTP and SDK transport are excluded. Speedup compares GS1 Default P50 with CUDA Graph P50 using identical weights and inputs. Latency and memory depend on request shape. ![Inference Latency](assets/inference-latency.svg) ## Quickstart ### Hugging Face Transformers Use Python 3.11+ and install the dependencies: ```bash python -m pip install torch==2.9.1 torchvision==0.24.1 transformers==5.3.0 accelerate safetensors 'pydantic>=2.8,<3' typesafe-sdk==0.7.0 pillow ``` Load the Hub ID or a local model directory and submit all three decision primitives in one call: ```python import torch from transformers import AutoModel model = AutoModel.from_pretrained( "bigai/GS1-9B", trust_remote_code=True, ).eval().to("cuda") request = { "state": "A customer was charged twice and requests an urgent refund.", "questions": { "team": { "type": "choice", "instructions": "Which team should handle this ticket?", "criteria": { "billing": "Payments and refunds", "technical": "Software problems" } }, "refund": { "type": "noul", "instructions": "Does the customer request a refund?" }, "urgency": { "type": "score", "instructions": "Rate the urgency of handling this ticket.", "criteria": [ "Routine", "Soon", "Immediate" ] } } } with torch.autocast("cuda", dtype=torch.bfloat16, cache_enabled=False): result = model.decide(**request, precision="bf16") print(result["answers"]) print(result["usage"]) ``` The response contains `model`, `answers` and `usage`. Choice preserves candidate IDs and returns every candidate probability; Noul returns `p(true)`; Score returns the expected zero-based rubric level and its full probability distribution. Generated `output_tokens` is zero. `chat_template.jinja` renders the native GS1 state, question and options, including XML escaping, the trained user/assistant boundaries, the empty thinking prefix and `<|decide|>`. It is exported from the same serializer in `compiler.py`. `model.decide` prepares typed candidates, branch spans, masks, positions and budget checks. [Native template usage](https://github.com/bigai-nlco/GS1/blob/main/docs/inference.md#native-decision-template) ### GS1 Runtime The GS1 runtime adds shared-state reuse, compatible batching, HTTP serving and qualified CUDA Graph replay: ```bash git clone https://github.com/bigai-nlco/GS1.git cd GS1 uv sync --locked --extra serve --extra cuda uv run gs1 serve --model bigai/GS1-9B --model-name GS1 ``` The service exposes `POST /v1/systemone` and `GET /v1/models` at `http://127.0.0.1:8000`. The [Playground](https://github.com/bigai-nlco/GS1/blob/main/playground/README.md) provides an interactive Query workspace. ### TypeSafe SDK Call the running service through the official SDK: ```python from typesafe_sdk import Choice, Noul, Score, TypeSafeClient with TypeSafeClient( base_url="http://127.0.0.1:8000", api_key="local", model="GS1", ) as client: result = client.system_one( state="A customer was charged twice and requests an urgent refund.", questions={ "team": Choice( instructions="Which team should handle this ticket?", criteria={"billing": "Payments and refunds", "technical": "Software problems"}, ), "refund": Noul(instructions="Does the customer request a refund?"), "urgency": Score( instructions="Rate the urgency of handling this ticket.", criteria=["Routine", "Soon", "Immediate"], ), }, ) print(result.choices["team"].choice) print(result.choices["team"].probabilities) print(result.nouls["refund"].noul) print(result.scores["urgency"].score) ``` Use the API root as `base_url` and match `model` to the server alias configured by `--model-name`. The SDK accepts `api_key="local"` for this local service. ## License Code and released model weights use [Apache-2.0](LICENSE). ## Citation If you find our work helpful, feel free to give us a cite. ```bibtex @techreport{zheng2026gs1, title={GS1: Fast, Faithful, Frontier System One Intelligence}, author={Zheng, Zilong and Liu, Yang and Qin, Shuhan and Lin, Ziyong and Li, Jiaqi and Jia, Zixia and Zhu, Song-Chun}, institution={BIGAI}, year={2026} } ```