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-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…
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.
| Precision | Weights | Memory needed | Cheapest setup | Per hour | Also 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.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| model-00001-of-00011.safetensors | Weights | 4.7 GB | d55da2deda1d |
| model-00002-of-00011.safetensors | Weights | 4.9 GB | 322e9194fcfc |
| model-00003-of-00011.safetensors | Weights | 4.9 GB | e7c5ebd98ead |
| model-00004-of-00011.safetensors | Weights | 4.9 GB | 356b0d75cd0a |
| model-00005-of-00011.safetensors | Weights | 4.9 GB | 17faa747c8c3 |
| model-00006-of-00011.safetensors | Weights | 4.4 GB | a14cdcf44964 |
| model-00007-of-00011.safetensors | Weights | 4.9 GB | bffa0ebd2f03 |
| model-00008-of-00011.safetensors | Weights | 4.4 GB | 56afdea321d2 |
| model-00009-of-00011.safetensors | Weights | 4.9 GB | ad4215736411 |
| model-00010-of-00011.safetensors | Weights | 4.9 GB | 2b32df2773ae |
| model-00011-of-00011.safetensors | Weights | 4.0 GB | 441c97713a4c |
| config.json | Configuration | 3.8 KB | — |
| generation_config.json | Configuration | 208 B | — |
| model.safetensors.index.json | Configuration | 103.2 KB | — |
| processor_config.json | Configuration | 1.7 KB | — |
| LICENSE | Documentation | 11.3 KB | — |
| README.md | Documentation | 9.4 KB | — |
| chat_template.jinja | Other | 18.7 KB | — |
| .gitattributes | Repository | 1.6 KB | — |
| tokenizer.json | Tokenizer | 32.2 MB | cc8d3a0ce364 |
| tokenizer_config.json | Tokenizer | 3.1 KB | — |
License and Download
- License
- apache-2.0
- Access
- Open weights, no gate
- Download size
- 51.6 GB
Released by Jayasimha through its official repository on Hugging Face. Read the license.
Built From
- Derived from google/gemma-4-26B-A4B-it
- Trained on (disclosed) j-raghavan/s1-decision-data
Memory Requirements
| Precision | Weights in memory |
|---|---|
| As published | 51.6 GB |
| 16-bit | 51.6 GB |
| 8-bit | 25.8 GB |
| 4-bit | 12.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 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…
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…
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…
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…
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.