GS1-0.8B (General System One)

Fast, Faithful, Frontier System One Intelligence.

Code Β· Quick Start Β· Evaluation Β· Playground

GS1 returns probabilities over user-defined candidates in a single decision pass. Use the YeS1 framework to run this model; standard text-generation pipelines do not implement its decision head.

GS1 is a family of fast, uncertainty-aware decision models developed by BIGAI (Beijing Institute for General Artificial Intelligence). It computes native probability distributions over variable candidate sets for agent routing, verification, extraction, and control.

πŸ“Œ Model Details

  • Developed by: BIGAI (Beijing Institute for General Artificial Intelligence)
  • Correspondence: Zilong Zheng (zlzheng@bigai.ai)
  • Model Family: GS1-0.8B, GS1-2B, GS1-4B, GS1-9B
  • Base Architecture: Qwen3.5 with hybrid Gated DeltaNet (GDN) and full-attention layers
  • License: Apache 2.0
  • Primary Task: Agentic decision making

πŸ”₯ GS1 Highlights

  • Native Cross-Attention Decision Head: Computes probabilities directly over candidates. At fixed context, permuting head inputs preserves probabilities when candidate order is restored.
  • Segmented Bidirectional Visibility: Combines causal GDN with segmented bidirectional full attention, allowing candidates to observe their comparison context while keeping shared prefixes reusable.
  • Carry-Preserving Attention Residuals (AttnRes): Routes information from earlier representations while retaining the explicit skip-connection anchor.
  • Typed Outputs: One probability distribution supports three decision modes:
    • Choice: Select a candidate and return every candidate's probability.
    • Noul: Return the probability that a statement is true.
    • Score: Return the expected zero-based ordinal level, $\sum_k k\pi_k$.

πŸ’‘ Advanced Post-Training & Reliability

  • Calibrated Reward Policy Optimization (CRPO): Uses sampled decision probabilities in a Brier-shaped penalty to align calibration rewards with the deployed policy.
  • Learned Abstention: Optimizes accuracy and non-hallucination rates under Lagrangian constraints, making abstention an explicit action.
  • Multi-Step RL: Extends CRPO to interaction trajectories with shared terminal feedback, including StarCraft II against the Very Hard computer opponent.
  • Recursive Self-Improvement: Uses separate loops for data synthesis and infrastructure tuning.

πŸ† Performance Benchmarks

Results on Decision Index 0.3 (Public):

Model GS1 Score Top Displayed Baseline Gain
GS1-0.8B 56.15 53.79 (StartLux v1.1 0.8B) +2.36
GS1-2B 62.22 60.64 (GLIDE 2B) +1.58
GS1-4B 68.95 67.81 (StartLux v1.1 4B) +1.14
GS1-9B 70.47 69.98 (StartLux v1.1 9B) +0.49

Decision Index reports a composite score, not accuracy.

Evaluate your checkpoint

Run a separate AG News evaluation and save results with provenance:

uv run python -m evaluation --suites agnews \
  --model artifacts/GS1-0.8B --device cuda --precision bf16 \
  --out runs/evaluation/gs1-0.8b-agnews

This writes evaluation.json and accuracy_manifest.json. See the evaluation guide for other suites and Decision Index 0.3 preparation.

⚑ Inference Efficiency

GS1 replaces autoregressive answer generation with state encoding and decision-head evaluation. Shared execution can reuse state and head projections across questions.

On one RTX 4090, the trained GS1-2B artifact with BF16 compute and warmed reference CUDA graphs achieved 16.00 ms for one question (3.38Γ—) and 357.76 ms for 32 questions (4.72Γ—) against the single-branch reference baseline.

These are median engine timings for a fixed 2B workload, excluding compilation, HTTP overhead, and graph capture. They are not GS1-0.8B latency measurements. See measurement details.

πŸš€ Quick Start

Install and download

Use Python 3.13 and an NVIDIA CUDA environment for the GPU examples. The lockfile pins PyTorch 2.9.1 and Transformers 5.3.0.

git clone https://github.com/zilongzheng/YeS1.git
cd YeS1
uv sync --locked --extra train --extra sources

uv run python - <<'PY'
from huggingface_hub import model_info, snapshot_download

repo_id = "bigai/GS1-0.8B"
revision = model_info(repo_id).sha
snapshot_download(repo_id, revision=revision, local_dir="artifacts/GS1-0.8B")
print(f"Model revision: {revision}")
PY

Save the printed model revision and the framework commit (git rev-parse HEAD) with your results. To repeat a download, set revision to the saved model SHA.

Run a decision locally

Save as quickstart.py and run with uv run python quickstart.py:

from typesafe_sdk import Choice, Noul, Score

from yes1.api.schema import DecisionRequest
from yes1.inference.engine import Engine
from yes1.model.artifact import load_artifact

artifact = load_artifact("artifacts/GS1-0.8B", device="cuda", precision="bf16")
artifact.model.eval()
engine = Engine(
    artifact.model,
    artifact.compiler(),
    mode="reference",
    precision="bf16",
    reference_batching=False,
)

request = DecisionRequest(
    model="GS1",
    state={"battery": 18, "delivery_cost": 12, "required_reserve": 10},
    questions={
        "action": Choice(
            instructions="Choose an action that preserves the required battery reserve.",
            criteria={"deliver": "Deliver now.", "recharge": "Recharge first."},
        ),
        "safe": Noul(
            instructions="Can delivery finish with at least the required battery reserve?",
        ),
        "risk": Score(
            instructions="Rate the risk of delivering now against the reserve requirement.",
            criteria=["No risk.", "Uncertain.", "Reserve would be violated."],
        ),
    },
)

try:
    result = engine.evaluate(request)
    print(result.model_dump_json(indent=2))
finally:
    engine.close()

Put shared facts in state and submit related questions together. Choice returns choice and probabilities; Noul returns noul = $p(\mathrm{true})$; Score returns score and level probabilities. Score levels start at 0.

Serve over HTTP

uv run yes1 serve --model-path artifacts/GS1-0.8B \
  --device cuda --precision bf16 --engine reference --model-name GS1

In another terminal:

curl http://127.0.0.1:8000/v1/systemone \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "GS1",
    "state": {"battery": 18, "delivery_cost": 12, "required_reserve": 10},
    "questions": {
      "action": {
        "type": "choice",
        "instructions": "Choose an action that preserves the required battery reserve.",
        "criteria": {"deliver": "Deliver now.", "recharge": "Recharge first."}
      }
    }
  }'

The server also exposes GET /v1/models and supports the TypeSafe Python SDK. Local requests require no API key.

Keep the complete downloaded artifact, including artifact.json and tokenizer/processor assets. Weights and config.json alone are insufficient for serving. Start with reference; shared execution and CUDA graphs require runtime qualification.

Interactive Playground

With the model server running, open another terminal at the repository root. Requires Node.js 22+:

cd playground
npm ci
npm run build
DEFAULT_BACKEND=yes1_local ../scripts/serve_playground.sh

Open localhost:3000. Use Query to try Choice, Noul, and Score and inspect probabilities, or explore model-driven Go, Maze, and Snake. See the Playground guide for remote backends.

πŸ’» Input Format

Pass structured requests as shown above. The compiler handles XML escaping, the chat template, structural tokens, and the final decision token. Its decision payload has this layout:

<state>
Shared facts and observations
</state>
<question>
Choose the next action.
</question>
<option>
deliver: Deliver now.
</option>
<option>
recharge: Recharge first.
</option>

Choice supports 1–255 candidates; Score requires 2–10 ordered levels. Oversized requests are rejected rather than silently truncated.

Use meaningful option keys and precise descriptions: Choice keys enter the model input. To allow abstention, include an explicit option such as unknown: Insufficient evidence to decide.

Training Data and Recipe

Data provenance: The repository provides adapters for public annotated datasets and independently verified synthetic decision tasks. A checkpoint-specific dataset inventory, corpus manifest, and training logs are not included; supported sources should not be read as a confirmed training mixture. See the data guide.

The maintained 0.8B recipe specifies the defaults below, rather than a verified record of this checkpoint's training:

Phase Objective Updates Peak learning rates: head / language / router
Alignment NLL 100 2e-4 / 4e-5 / 1e-4
Finetuning NLL + Brier Corpus-dependent 2e-5 / 1e-5 / 1e-5

Both phases use BF16, a global batch of 4,096 logical questions, a 16,384-token context limit, seed 12, and gradient checkpointing. Alignment trains structural-token offsets in the language group. These supervised defaults do not document the CRPO or multi-step RL experiments described above.

Intended Use and Limitations

Use GS1 for candidate selection, routing, verification, extraction, and ordinal scoring within agent workflows.

  • Decisions depend on the supplied evidence and candidate set. Include an explicit abstention option when evidence may be insufficient.
  • Probabilities can be miscalibrated under distribution shift. Validate accuracy, calibration, and abstention on your own workload before setting thresholds.
  • Biases from the base model and training data may affect decisions; use human review for consequential applications. Reported text benchmarks do not establish multimodal or safety performance.

πŸ› οΈ Finetuning and Export

To finetune this checkpoint on an existing verified corpus:

uv sync --locked --extra train --extra sources --extra decision-index --extra dev
uv run python scripts/train_gs1.py --config scripts/configs/gs1_0_8b.yaml \
  --base-model artifacts/GS1-0.8B --corpus /path/to/frozen-corpus \
  --run-dir runs/gs1-0.8b --wandb-mode offline

# Serve the complete export produced after training.
uv run yes1 serve --model-path runs/gs1-0.8b/exports/GS1 \
  --device cuda --precision bf16 --model-name GS1

Native GS1 inputs go directly to finetuning. Raw Qwen3.5 inputs run alignment first. For initialization from Qwen:

from yes1.model import GS1Model
from yes1.model.artifact import export_artifact

model, tokenizer = GS1Model.initialize("/path/to/Qwen3.5-0.8B")
export_artifact(model, tokenizer, "artifacts/GS1-untrained", status="untrained")
model = GS1Model.from_pretrained("artifacts/GS1-untrained")

Qwen initialization still requires decision training. Export to a new, empty directory with export_artifact; save_pretrained alone does not create a complete serving artifact.

See the training guide for multi-GPU recipes and resume, and the deployment guide for multi-GPU serving.

Citation

If you find GS1 useful, please cite:

@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}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for bigai/GS1-0.8B

Finetuned
(734)
this model

Collection including bigai/GS1-0.8B

Evaluation results

  • Decision Index Score (release-reported) on Decision Index 0.3 (Public)
    self-reported
    56.150