Model reference · open weights
open-sft is an open-weight language model from Gensyn. open-1b-sft (FP32) weighs 3.2 GB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the Gensyn/open-1b-sft model card, 2026-10-01
What it is
| Released by | Gensyn |
|---|---|
| Released | 2026-09-15 |
| Parameters | 1.6B |
| VRAM | 3.2 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory |
|---|---|---|---|
| 4K each | |||
| RTX 3060 12 GB | 38 | all 4K | 11.6 GB |
| RTX 4060 Ti 16 GB | 57 | all 4K | 15.4 GB |
| RTX 3090 24 GB | 97 | all 4K | 23.4 GB |
| RTX 4090 24 GB | 96 | all 4K | 23.4 GB |
| RTX 5090 32 GB | 134 | all 4K | 31.0 GB |
| L40S 48 GB | 199 | all 4K | 44.0 GB |
| A100 80 GB | 369 | all 4K | 78.2 GB |
| H100 80 GB | 349 | all 4K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 427 | all 4K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 495 | all 4K | 107 GB |
| H200 141 GB | 647 | all 4K | 138 GB |
| B200 180 GB | 835 | all 4K | 176 GB |
| Requests at once | 4K tokens each |
|---|---|
| 1 | 4.1 GB |
| 5 | 4.9 GB |
| 8 | 5.5 GB |
| 16 | 7.1 GB |
| 32 | 10.3 GB |
| 64 | 16.7 GB |
One card, with vLLM's small-card settings.
From the model card
open-1b is a 1.6 billion parameter decoder-only language model pretrained on 400B tokens. It is the first language model whose training can be independently verified.
Every open model release to date has asked that its users trust the account of how it was trained — open-1b allows you to check. It is released with its complete pretraining dataset, training and evaluation code, intermediate checkpoints at 100-step intervals, and a canonical state hash for every one of the 80,957 optimizer steps that produced it. Anyone can load the checkpoint before a given step, replay that step on their own hardware, hash the result, and confirm it matches the published fingerprint.
As organizations become more and more dependent on swarms of agents, we're reaching a point where AI verification is about to stop being a theory and start being a necessity. The only durable defense against models you cannot trust is models you can — models whose entire history is on the public record and can be replayed by anyone. That property cannot be added afterward; it has to be designed into the run from the first step. open-1b is our proof that this can be done in practice, and our attempt to set the standard for how.
This repository holds the supervised fine-tune (SFT): the midtrained model (Gensyn/open-1b-midtrained-93B) fine-tuned on allenai/tulu-3-sft-olmo-2-mixture-0225. This is an SFT-only model — no RLHF, DPO or other preference tuning was applied. It uses the chat template shipped in tokenizer_config.json (apply it with tokenizer.apply_chat_template).
| Model | What it is |
|---|---|
Gensyn/open-1b-base | Pretraining checkpoint at step 80,957, 400B tokens |
Gensyn/open-1b-midtrained-93B | Midtrained checkpoint: continued pretraining of the base model on 93B additional tokens |
Gensyn/open-1b-sft | Supervised fine-tune on allenai/tulu-3-sft-olmo-2-mixture-0225, the chat-capable model |
gs://gensyn-open-1b/data — browse and search it at open1b.gensyn.ai/#/data/searchgs://gensyn-open-1b/ckptFor what "auditable" means here — the per-step state hashes, the Merkle commitments, and how a replay lands on the same bytes — see the Gensyn/open-1b-base card.
The repo bundles its own modeling code (modeling_open1b.py), loaded with
trust_remote_code=True — the architecture (gain-free QK-norm, embedding
RMSNorm, block-aligned hybrid sliding-window attention) matches no stock
transformers class. Parameter names and bytes in model.safetensors are
identical to the training checkpoint the published state hashes commit to.
The model was trained with int8 W8A8 quantization-aware training (LSQ), and
the learned per-channel weight_scale tensors ship in the checkpoint. By
default the forward emulates the training int8 grid using those scales
(config.quantized_forward=True); set it to False for plain bf16 GEMMs on
the master weights. Inference logits are numerically close to, but not
bit-identical with, the training stack (fp32 GEMM accumulation, bf16
attention vs the training int8 P·V flash kernel) — bit-exact replay of
training steps is the job of the audit tool.
Load the tokenizer as-is. In particular, ignore transformers' suggestion to
pass fix_mistral_regex=True: the "fix" changes the pre-tokenizer's
behaviour, and tokenization bit-identical to training is part of this
release's reproducibility contract.
The chat template (shipped in tokenizer_config.json and
chat_template.jinja) renders every turn as
{{content}}
using the tokenizer's reserved special tokens (id 2, id 3, id 4 — all atomic single-id encodes). There is no sequence-level BOS prefix. terminates every turn and is the
model's eos for generation, so generate() stops at the end of the
assistant turn.
The generation prompt deliberately ends at `` (no trailing
newlines) and the model generates the \n\n itself — that transition
follows every header in its training data. Completions therefore start with
two newline characters; strip leading whitespace from the decoded text. Do
not append the two newlines to the prompt yourself: encoded at the end of a
prompt they merge into a single token the model never saw at that position
(assistant content always followed in training, splitting them), and the
model responds to it wi
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.