Model reference · open weights
Surjo is an open-weight language model from SurjoLabs. Surjo-50m (FP32) weighs 108 MB; 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 SurjoLabs/Surjo-50m model card, 2026-10-01
What it is
| Released by | SurjoLabs |
|---|---|
| Released | 2026-09-05 |
| Parameters | 54M |
| VRAM | 108 MB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory |
|---|---|---|---|
| 2K each | |||
| RTX 3060 12 GB | 525 | all 2K | 11.6 GB |
| RTX 4060 Ti 16 GB | 706 | all 2K | 15.4 GB |
| RTX 3090 24 GB | 1000+ | all 2K | 23.4 GB |
| RTX 4090 24 GB | 1000+ | all 2K | 23.4 GB |
| RTX 5090 32 GB | 1000+ | all 2K | 31.0 GB |
| L40S 48 GB | 1000+ | all 2K | 44.0 GB |
| A100 80 GB | 1000+ | all 2K | 78.2 GB |
| H100 80 GB | 1000+ | all 2K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 1000+ | all 2K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 1000+ | all 2K | 107 GB |
| H200 141 GB | 1000+ | all 2K | 138 GB |
| B200 180 GB | 1000+ | all 2K | 176 GB |
| Requests at once | 2K tokens each |
|---|---|
| 1 | 613 MB |
| 5 | 696 MB |
| 8 | 759 MB |
| 16 | 927 MB |
| 32 | 1.3 GB |
| 64 | 1.9 GB |
One card, with vLLM's small-card settings.
From the model card
Surjo-50M
Surjo-50M is a 53.8M-parameter hybrid recurrent language model developed by SurjoLabs. Built on the Gen-3 Surjo architecture, it couples Gated DeltaNet-2 (GDN-2) linear attention with full attention (XSA).
By executing a weight-tied recurrent core across 2 passes, the model reaches an effective computational depth of 18 layers while retaining the memory footprint and latency profile of a 10-layer physical model.
Instruction-Tuned Variant: For conversational use, instruction following, and a 2048-token context window, see Surjo-50M-SFT-Only.
| Attribute | Specification |
|---|---|
| Parameters | 53.8M |
| Architecture | Hybrid GDN-2 + XSA (Subtractive Attention) |
| Physical Layers | 10 (1 Prelude + 8 Recurrent Trunk + 1 Coda) |
| Effective Depth | 18 Layers (2 Recurrent Passes) |
| Hidden Size | 512 |
| Intermediate Size | 1536 |
| Attention Configuration | GQA (8 Query heads, 4 KV heads; Head Dim: 64) |
| Linear Attention | GDN-2 (K: 64, V: 64, 8 V-Heads) |
| Context Length | 1024 tokens pretraining (2048 max) |
| Vocabulary | 32,768 (Custom BPE, tied embeddings) |
| Benchmark | Score |
|---|---|
| PIQA | 63.11% |
| ARC-Easy | 44.99% |
| ArithMark-3 | 37.90% |
| HellaSwag | 31.37% |
| ARC-Challenge | 25.94% |
| Int Index | 16.40 |
Surjo Gen-3 combines fast recurrent sequence processing with full-attention boundary layers:
peak lr = 0.02) and AdamW (peak lr = 0.0036).pip install torch transformers accelerate
pip install -U git+https://github.com/fla-org/flash-linear-attention
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "SurjoLabs/Surjo-50m"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16 if torch.cuda.is_available() else torch.float32,
device_map="auto",
trust_remote_code=True,
)
prompt = "The secret to scaling small language models is"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=64,
do_sample=True,
temperature=0.7,
top_p=0.9,
repetition_penalty=1.1,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
This project is released under the Apache 2.0 License.
@software{surjo50m2026,
author = {SurjoLabs},
title = {Surjo-50M: Hybrid Recurrent Language Model},
year = {2026},
url = {https://huggingface.co/SurjoLabs/Surjo-50m}
}
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.