Skip to page content
SAVRN
Search Plan a project

Open-weight model · Text generation

s1-gemma4-26b-decision

by Jayasimha j-raghavan/s1-gemma4-26b-decision

s1-gemma4-26b-decision is an open-weight model for text generation from Jayasimha, released under Apache License 2.0. It has 25.8B parameters and a 262,144-token context. At 16-bit it needs about 61.9 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index.

s1 is an open, calibrated System One decision model. Given a state (text or JSON) and a typed question, it returns a probability for every option in one forward pass, with no text generated: It is google/gemma-4-26B-A4B-it (mixture of experts, 26B total and…

Parameters25.8B
Context262,144
Weights51.6 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads—

Runs On

What it takes to serve s1-gemma4-26b-decision (25.8B parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.

PrecisionWeightsMemory neededCheapest setupPer hourAlso fits
16-bit 51.6 GB 61.9 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
8-bit 25.8 GB 31.0 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
4-bit 12.9 GB 15.5 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00

Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 18, 2026.

s1-gemma4-26b-decision on every accelerator the SAVRN Index prices, at every precision

Model Card

By Jayasimha, published under apache-2.0, revision ddb9c4cd9108.

s1 is an open, calibrated System One decision model. Given a state (text or JSON) and a typed question, it returns a probability for every option in one forward pass, with no text generated: It is google/gemma-4-26B-A4B-it (mixture of experts, 26B total and about 4B active parameters) fine-tuned with LoRA on about 100,000 typed decision rows, and merged. Code, data and Held-out test sets. The released snapshot was chosen on separate dev splits by a rule fixed before training. - Mean accuracy over JevBench's 11 accuracy slices; ECE with 10 bins. Raw ECE is 0.083 (Jev: 0.081). - Paired against the untuned model on the same JevBench cases: 103 answers fixed, 58 broken (McNemar p = 0.0005).…

Read Jayasimha's full model card

s1 is an open, calibrated System One decision model. Given a state (text or JSON) and a typed question, it returns a probability for every option in one forward pass, with no text generated:

Question type You give You get
choice keyed options with descriptions a probability per option
noul (yes/no) a condition the probability of yes
score an ordered list of levels a probability per level, and the expected level

It is google/gemma-4-26B-A4B-it (mixture of experts, 26B total and about 4B active parameters) fine-tuned with LoRA on about 100,000 typed decision rows, and merged. Code, data and evaluation are all open: GitHub · training data · website and leaderboard.

Results

Held-out test sets. The released snapshot was chosen on separate dev splits by a rule fixed before training.

System JevBench subset (1,700 cases) raw / calibrated Custom structured decisions raw / calibrated Prompt injections caught / false alarms
s1 (this model, bf16) 0.808 / 0.817 0.971 / 0.981 45/53, 0
Gemma 4 26B-A4B, untuned 0.770 / 0.799 0.948 / 0.960 35/53, 0
s1, int4 through Ollama (Apple-silicon laptop) 0.801 / 0.804 0.966 / 0.981 46/53, 0
Jev 1.13 (closed; predictions published with JevBench) 0.835 / 0.856 — —
  • Mean accuracy over JevBench's 11 accuracy slices; ECE with 10 bins. Raw ECE is 0.083 (Jev: 0.081).
  • Paired against the untuned model on the same JevBench cases: 103 answers fixed, 58 broken (McNemar p = 0.0005).
  • "Calibrated" uses per-task calibrators fitted on the dev splits only (eval/jevbench/calibrate_from_dev.py). That study covers the cases with usable option log-probabilities, where s1's raw JevBench score is 0.804 rather than 0.808.
  • Differences under about ±1.5 points are within noise at this test size.

Latency per decision on one NVIDIA RTX PRO 6000 through vLLM: median 28 ms (p95 95 ms) with FP8 weights, 40 ms (133 ms) in bf16.

How to use

The prompt format matters. Render the question with lettered options, start the prompt with <bos> (Gemma 4's tokenizer does not add it, and accuracy drops by about 3 points without it), prefill the reply with Answer:, and read the next-token logits of " A", " B", ... Load the model with Gemma4ForConditionalGeneration; a plain causal-LM class silently skips the language-model weights.

import json
import torch
from transformers import AutoTokenizer, Gemma4ForConditionalGeneration

MODEL = "j-raghavan/s1-gemma4-26b-decision"
TEMPLATE = "<|turn>user\n{user}<turn|>\n<|turn>model\n<|channel>thought\n<channel|>"
tok = AutoTokenizer.from_pretrained(MODEL)
model = Gemma4ForConditionalGeneration.from_pretrained(MODEL, dtype=torch.bfloat16, device_map="auto").eval()

def decide(state, instructions, options):  # options: {key: description}, 2 to 26 of them
    keys = list(options)
    lines = "\n".join(f"{chr(65 + i)}) {k}: {options[k]}" for i, k in enumerate(keys))
    user = ("You are a decision model. Read the state and answer the question by choosing one option.\n\n"
            f"STATE:\n{json.dumps(state, ensure_ascii=False, indent=1)}\n\nQUESTION: {instructions}\n\n"
            f"OPTIONS:\n{lines}\n\nAnswer with the option letter only.")
    enc = tok("<bos>" + TEMPLATE.format(user=user) + "Answer:", return_tensors="pt",
              add_special_tokens=False).to(model.device)
    with torch.no_grad():
        logits = model(**enc, logits_to_keep=1).logits[0, -1]
    ids = [tok.encode(" " + chr(65 + i), add_special_tokens=False)[0] for i in range(len(keys))]
    return dict(zip(keys, torch.softmax(logits[ids].float(), -1).tolist()))

print(decide({"ticket": "I was charged twice for order 4471."}, "Which team should handle this ticket?",
             {"billing": "Payments and refunds", "shipping": "Deliveries", "tech": "Bugs and outages"}))

This short version writes every option as key: description. The complete version (yes/no and ordinal questions, and option formatting identical to training, checked by tests) is examples/quickstart.py. For a calibrated HTTP endpoint (POST /v1/decisions), see api/server.py in the repository. Serving with vLLM: request one token with logprobs and temperature 0 on the same prompt.

Local, quantised (Ollama int4)

ollama pull jrlabs01/s1     # the int4 build, about 17 GB on disk

Send raw prompts ("raw": true) that start with <bos>: the build does not add it, and Ollama's own chat formatting changes the prompt and the answers. The repository's API does this for you (S1_MODEL=jrlabs01/s1 uv run --extra api uvicorn api.server:app), with calibration fitted on the int4 build's own dev predictions (api/calibration_s1.json). To build it yourself instead: download this repo, write a Modelfile with FROM <folder>, and run ollama create <name> --quantize int4 -f Modelfile.

Measured cost of int4 against bf16 on the test sets: JevBench 0.801 vs 0.808 (the same answer on 92% of cases; paired 36 better, 48 worse, p = 0.23) and custom 0.966 vs 0.971 (p = 0.18); neither difference is significant. On a 32 GB Apple-silicon laptop it takes about 0.8 s per decision (median); Ollama holds about 26 GB while it is loaded, so a 32 GB machine swaps under other load.

Hardware: about 52 GB in bf16 (one 80–96 GB GPU, or device_map="auto" across several GPUs). If the model does not fit, device_map="auto" offloads layers and the forward pass fails unless you also pass offload_folder (slow); use a quantised build instead.

Training

  • Data: 101,470 rows from permissively licensed public datasets (intent, NLI, topic, toxicity, passage QA, science and commonsense QA, math), 199 audited Super-NaturalInstructions decision tasks, rule-generated structured decisions, synthetic policy tasks generated by openai/gpt-oss-120b (kept only where Gemma 4 independently agrees), and prompt-injection sets (SPML, Lakera Gandalf, LLMail-Inject). Full card: j-raghavan/s1-decision-data.
  • Targets: the base model, as teacher, scores every row; its distribution is calibrated per task family and blended with the gold label (gold weight 0.5–0.9 depending on how reliable the label is). Injection and held-out rows use gold labels only.
  • Fine-tune: LoRA rank 64, alpha 128, dropout 0.05 on the language model's attention and dense MLP (experts frozen); AdamW, learning rate 1e-4, 32 rows per step; loss = soft cross-entropy + Brier (+ ranked probability score for ordinal questions); options reshuffled per example. One run on an RTX PRO 6000 in bf16; snapshot at step 1500 (about 48,000 rows seen) chosen on dev, then merged into the base weights.

Methodology and decision rules: docs/methodology.md.

Evaluation data

  • JevBench subset: 1,700 cases from JevBench (100 task families per text slice, fixed seed): safety, agent-trace risk, prompt injection, jailbreaks, banking intent, medical, science and general knowledge, sentiment. Never used for training; dev cases are deduplicated against test and training.
  • Custom structured decisions: 1,200 rule-labelled cases (960 choice or yes/no, 240 ordinal) with JSON states, generated by the repository with no model involved.

Limitations

  • Knowledge questions account for most of the gap to Jev (MMLU-Pro and medical slices).
  • Ordinal sentiment: on SST-5 the MAE (0.611) is worse than the untuned model's (0.522).
  • Prompt injection: 8 of 53 test injections are missed. Do not use s1 as the only security control.
  • English only.
  • Decisions, not explanations: s1 gives probabilities, not reasons. For high-stakes decisions, keep a human or a stronger system in the loop, and use the probability to route uncertain cases.

Licence and attribution

Apache-2.0, like the base model. This model is a modified version of google/gemma-4-26B-A4B-it: fine-tuned with LoRA and merged. It is not endorsed by Google. Training data keep their source licences (Apache-2.0, MIT, BSD, CC0, CC-BY and CC-BY-SA); see the dataset card. s1 is an independent project, not affiliated with TypeSafe AI (Jev) or the JevBench authors.

@software{raghavan2026s1,
  author = {Raghavan, Jayasimha},
  title  = {s1: an open, calibrated System One decision model},
  year   = {2026},
  url    = {https://github.com/j-raghavan/s1-decision-model}
}

Configuration

Architecture
Gemma4ForConditionalGeneration
Context length (tokens)
262,144
Layers
30
Hidden size
2,816
Feed-forward size
2,112
Attention heads
16
Key/value heads
8
Head dimension
256
Vocabulary size
262,144
Experts
128
Sliding window (tokens)
1,024
Model type
gemma4

Identity and Version

Repository
j-raghavan/s1-gemma4-26b-decision
Publisher
Jayasimha
Task
Text generation
Modality
Text
Library
transformers
Parameters
25.8B parameters
Languages
en
Revision
ddb9c4cd9108c072a1a7940f5b22f3c1753e6c9e
First published
2026-10-07
Last updated
2026-10-08

Files and Weights

21 files, 51.6 GB in total. The weights are 11 files totalling 51.6 GB in safetensors.

Weights11 files · 51.6 GB
Configuration4 files · 108.9 KB
Tokenizer2 files · 32.2 MB
Documentation2 files · 20.7 KB
Other1 file · 18.7 KB
Repository1 file · 1.6 KB
Every file
FileTypeSizeSHA-256
model-00001-of-00011.safetensorsWeights4.7 GB d55da2deda1d
model-00002-of-00011.safetensorsWeights4.9 GB 322e9194fcfc
model-00003-of-00011.safetensorsWeights4.9 GB e7c5ebd98ead
model-00004-of-00011.safetensorsWeights4.9 GB 356b0d75cd0a
model-00005-of-00011.safetensorsWeights4.9 GB 17faa747c8c3
model-00006-of-00011.safetensorsWeights4.4 GB a14cdcf44964
model-00007-of-00011.safetensorsWeights4.9 GB bffa0ebd2f03
model-00008-of-00011.safetensorsWeights4.4 GB 56afdea321d2
model-00009-of-00011.safetensorsWeights4.9 GB ad4215736411
model-00010-of-00011.safetensorsWeights4.9 GB 2b32df2773ae
model-00011-of-00011.safetensorsWeights4.0 GB 441c97713a4c
config.jsonConfiguration3.8 KB —
generation_config.jsonConfiguration208 B —
model.safetensors.index.jsonConfiguration103.2 KB —
processor_config.jsonConfiguration1.7 KB —
LICENSEDocumentation11.3 KB —
README.mdDocumentation9.4 KB —
chat_template.jinjaOther18.7 KB —
.gitattributesRepository1.6 KB —
tokenizer.jsonTokenizer32.2 MB cc8d3a0ce364
tokenizer_config.jsonTokenizer3.1 KB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
51.6 GB
Download from Jayasimha

Released by Jayasimha through its official repository on Hugging Face. Read the license.

Built From

Memory Requirements

PrecisionWeights in memory
As published51.6 GB
16-bit51.6 GB
8-bit25.8 GB
4-bit12.9 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About s1-gemma4-26b-decision

How much GPU memory does s1-gemma4-26b-decision need?

About 61.9 GB at 16-bit and 15.5 GB at 4-bit: the weights (25.8B parameters) plus a working margin. A long context needs more.

What is the cheapest GPU to run s1-gemma4-26b-decision on?

At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.

Can I use s1-gemma4-26b-decision commercially?

Yes. s1-gemma4-26b-decision is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

What is s1-gemma4-26b-decision's context length?

262,144 tokens, from the maximum position embeddings in its published configuration.

Similar Models

This checkpoint is an AutoRound model-free MXFP8 RTN quantization of exported in llmcompressor / compressed-tensors format. Routed experts and the self-attention projections present in the source are stored as F8E4M3; sensitive/shared and multimodal weights remain BF16. Static FP8 KV scales were calibrated with AutoRound using the text dataset NeelNanda/pile-10k; the vision tower was not quantized. The accuracy comparison below uses a BF16 reference with BF16 KV cache and this MXFP8 checkpoint with FP8 KV cache. Scores are shown as percentages to two decimal places, with the four-task arithmetic mean and the MXFP8/BF16 score ratio. The runs used different parallelism and batching settings…

Open weights apache-2.0 25.8B parameters 262,144 tokens transformers

This repository contains an MXFP8-weight checkpoint derived from exported in compressed-tensors format. The checkpoint retains the source multimodal components, but the evaluation reported here covers text tasks only. The exported checkpoint contains 11,635 F8E4M3 weight tensors, 838 BF16 weight tensors, 11,635 U8 block-scale tensors, and 171 FP32 scale/metadata tensors. Routed-expert weights and source-present text self-attention projections are MXFP8; the router, shared MLP, vision tower, and embeddings remain BF16. Measured on 2026-09-30 with lm-eval 0.4.13 and vLLM 0.29.0. The tested settings were TRITONATTN, tensor parallelism 2, pipeline parallelism 1, batch size 64, maxnumseqs=64…

Open weights apache-2.0 25.8B parameters 262,144 tokens transformers

Model · Text generation

WaifuGemma4-26b-a4b-v1

HiWaifu Research

Gemma 4 26B-A4B, post-trained with GRPO against a reward model learned from 1.2 million double-blind votes cast by HiWaifu users inside their own role-play conversations. Put back into the same arena, blind, it met GLM-5.1 in 1,430 battles and won 49.6% of the decided votes; against a 13-model field including Gemini, DeepSeek-v4 and Qwen's character models it won 54.7%. Most open role-play models are tuned on preferences that come from an LLM judge, from a handful of annotators, or from synthetic pairs. We had something rarer: a live arena where, inside ordinary chats on our platform, a user is occasionally shown two candidate replies and asked which one they want to continue with. Those…

Open weights gemma 25.8B parameters 262,144 tokens transformers

Model · Text generation

ACE-3-26B-A4B-Preview

APMIC

ACE-3-26B-A4B-Preview-260910 is a preview release of APMIC's ACE-3 model family, built for Traditional Chinese (Taiwan) enterprise scenarios and agentic workflows. The model is based on google/gemma-4-26B-A4B-it, a Mixture-of-Experts model with 26B total parameters and about 4B active parameters per token (the "A4B" in the name). APMIC has further optimized it to strengthen: - Traditional Chinese output in Taiwan usage (terminology, phrasing and orthography) The bundled generationconfig.json uses temperature=1.0, topp=0.95, topk=64. These follow the base model's recommended settings. The model can be served with any inference engine that supports Gemma 4 (for example vLLM). Because the…

Access requested at publisher gemma 25.8B parameters transformers

An MLX (Apple silicon) build of the abliterated Gemma-4-26B-A4B-it MoE (128 experts, top-8, ~4B active). It uses Google's QAT int4 lattice weights wherever they are exact. The build targets a Mac mini M4 with 24 GB serving 2 concurrent requests at 64k context. It runs through oMLX fully resident at a 21.5 GB Metal limit. At a 20 GB limit, MoE expert offload streams non-resident experts from the NVMe SSD on demand. - Quality vs the exact bf16 model: KL 0.053, top-1 agreement 92.4%. This is the same as the measured noise floor between two exact bf16 implementations (≈0.05 / ≈91%). - Refusal behaviour is identical to the bf16 abliterated model (XSTest safe prompts: 0.8%). The source is…

Access requested at publisher apache-2.0 25.2B parameters mlx

Model · Text generation

Qwen3.8-27B-pi-mlx-6Bit

SolsticeAI

The Model SolsticeAI/Qwen3.8-27B-pi-mlx-6Bit was converted to MLX format from bytkim/Qwen3.8-27B-pi using mlx-lm version 0.31.2.

Open weights apache-2.0 26.9B parameters 262,144 tokens transformers