Model reference · open weights
Speck2 is an open-weight language model from specklabs. Speck2-140M (BF16) weighs 281 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 specklabs/Speck2-140M model card, 2026-10-01
What it is
| Released by | specklabs |
|---|---|
| Released | 2026-09-01 |
| Parameters | 141M |
| VRAM | 281 MB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory |
|---|---|---|---|
| 4K each | |||
| RTX 3060 12 GB | 191 | all 4K | 11.6 GB |
| RTX 4060 Ti 16 GB | 258 | all 4K | 15.4 GB |
| RTX 3090 24 GB | 399 | all 4K | 23.4 GB |
| RTX 4090 24 GB | 398 | all 4K | 23.4 GB |
| RTX 5090 32 GB | 534 | all 4K | 31.0 GB |
| L40S 48 GB | 762 | all 4K | 44.0 GB |
| A100 80 GB | 1000+ | all 4K | 78.2 GB |
| H100 80 GB | 1000+ | all 4K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 1000+ | all 4K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 1000+ | all 4K | 107 GB |
| H200 141 GB | 1000+ | all 4K | 138 GB |
| B200 180 GB | 1000+ | all 4K | 176 GB |
| Requests at once | 4K tokens each |
|---|---|
| 1 | 832 MB |
| 5 | 1.1 GB |
| 8 | 1.2 GB |
| 16 | 1.7 GB |
| 32 | 2.6 GB |
| 64 | 4.4 GB |
One card, with vLLM's small-card settings.
From the model card
Speck2-140M is a 140.7M parameter English base language model that interleaves global grouped-query attention with gated causal convolution. It was pretrained from scratch on 20B tokens using a three-phase curriculum that shifts from broad web text toward math, synthetic, and stylistically diverse high-quality text.
This is a base model, not instruction-tuned or specialized in any way. It has no chat template and no safety alignment.
| Property | Value |
|---|---|
| Parameters | 140,652,288 |
| Training tokens | 20.0B |
| Training sequence length | 2,048 |
| Configured max context | 4,096 (unvalidated beyond 2,048) |
| Vocabulary | 32,000 (Mistral v0.1 SentencePiece) |
| Release format | BF16 Safetensors |
| Validation loss / perplexity | 2.2403 / 9.396 |
| CPU decode, batch 1 | 55.1 tok/s |
| RTX 3090 decode, batch 1 | 247.3 tok/s |
18 residual blocks: 8 global attention + 10 gated causal convolution, each followed by a SwiGLU feed-forward.
| Component | Value |
|---|---|
| Hidden width | 768 |
| Embedding width | 640 |
| SwiGLU intermediate | 2,304 |
| Attention heads (Q / KV) | 12 / 3 |
| Head dimension | 64 |
| Conv inner width | 384 |
| Conv kernel sizes | 3, 5 |
| RoPE theta | 10,000 |
| RMSNorm epsilon | 1e-5 |
Input/output embeddings (640-wide) are tied and connect to the 768-wide residual stream via learned projections.
Speck2-140M works with the Transformers Auto classes through its bundled custom model and tokenizer code. Set trust_remote_code=True when loading it.
pip install "transformers==5.1.0" torch sentencepiece safetensors
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "specklabs/Speck2-140M"
device = "cuda" if torch.cuda.is_available() and torch.cuda.is_bf16_supported() else "cpu"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
trust_remote_code=True,
dtype="auto",
).to(device)
prompt = "The meaning of life is"
inputs = tokenizer(prompt, return_tensors="pt").to(device)
output = model.generate(
**inputs,
max_new_tokens=64,
do_sample=False,
)
generated = output[0, inputs.input_ids.shape[1] :]
print(tokenizer.decode(generated, skip_special_tokens=True))
The bundled generation path is validated for single-prompt greedy decoding. Direct forward passes support right-padded batches when use_cache=False.
| Setting | Value |
|---|---|
| Optimizer steps | 305,176 |
| Tokens per step | 65,536 |
| Sequence length | 2,048 |
| Peak LR | 1.5e-3 (cosine decay, 2,048-step warmup) |
| Weight decay | 0.1 |
| Gradient clipping | 1.0 |
| Training time | 41.40 hours |
| Estimated compute | 19.89 EFLOP |
Muon optimized 2D matrix parameters; AdamW (beta 0.9/0.95, epsilon 1e-8) handled embeddings, norms, and conv kernels. The run used a single RTX 5090 rented through Vast.ai.
Training documents were globally deduplicated after NFKC, lowercase, and whitespace normalization. The curriculum used three mixture phases:
| Token range | Emphasis |
|---|---|
| 0-14B | Broad high-quality web, educational, synthetic, math, and encyclopedia text |
| 14-18B | Increased FineMath, Cosmopedia, and Ultra-FineWeb-L3 multi-style text |
| 18-20B | Strongest concentration of synthetic and multi-style text, with continued math emphasis |
The quality columns combine the
Open SLM Leaderboard
at revision 2eafcfc647b667e67f3b0288e9b67da497a78052 and
BananaMind Base Bench 1.1
at revision d4aade51312889e8580963e1ce960c6eaef1a450. No chat template or generation was used for the four
Speck evaluations.
| Model | Params | Training tokens | Open SLM Int Index | BananaMind Base Bench 1.1 Elo | CPU prefill | CPU decode | RTX 3090 prefill | RTX 3090 decode | BF16 memory @2K | BF16 state @2K |
|---|---|---|---|---|---|---|---|---|---|---|
| BananaMind-2-Pro | 139M | 100B | 24.96 | 1131 | 2,190 tok/s | 43.0 tok/s | 64,060 tok/s | 140.3 tok/s | 325.1 MiB | 60.0 MiB |
| SmolLM2-135M | 135M | ~2T | 27.13 | 1119 | 2,201 tok/s | 47.4 tok/s | 64,814 tok/s | 157.7 tok/s | 301.6 MiB | 45.0 MiB |
| GPT-X2.5-135M | 135M | 75B | 25.17 | 1106 | 2,042 tok/s | 47.2 tok/s | 55,346 tok/s | 125.0 tok/s | 302.6 MiB | 45.0 MiB |
| Supra2-100M-Base | 101M | 30B | 19.41 | 1030 | 3,362 tok/s | 56.0 tok/s | 113,326 tok/s | 298.1 tok/s | 216.0 MiB | 24.0 MiB |
| Speck1-140M | 141M | 5B | 18.15 | 965 | 2,252 tok/s | 55.1 tok/s | 74,323 tok/s | 247.3 tok/s | 281.3 MiB | 12.0 MiB |
| Speck1-140M-Instruct | 141M | 5B + 317M SFT | 17.75 | 1001 | 2,285 tok/s | 55.3 tok/s | 73,398 tok/s | 246.7 tok/s | 280.3 MiB | 12.0 MiB |
| Speck1.1-140M-Instruct | 141M | 5B + 559M SFT | 17.90 | 1002 | 2,315 tok/s | 56.9 tok/s | 74,941 tok/s | 243.6 tok/s | 280.3 MiB | 12.0 MiB |
| Speck2-140M | 141M | 20B | 20.01 | 953 | 2,252 tok/s | 55.1 tok/s | 74,323 tok/s | 247.3 tok/s | 281.3 MiB | 12.0 MiB |
Open SLM Int Index means the chance-normalized Intelligence Index reported by the Open SLM
Leaderboard. BananaMind Base Bench 1.1 Elo means the overall Elo reported by BananaMind Base
Bench 1.1. Speed and memory values are local batch-1 measurements described below. Reference
models were pretrained on 1.5 to 100 times as many tokens. This is a parameter-adjacent comparison,
not a compute-matched one.
Speed was measured locally at batch 1 with eager PyTorch, model-native caches, last-token logits, and tokenization excluded. Prefill uses 512 tokens. Decode measures 64 greedy cached steps after a 448-token prefix and includes argmax. CPU runs use FP32 with 16 threads; RTX 3090 runs use BF16. Reported th
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.