TinyBrainBot-3M-v2-Base

A 2.94M-parameter general-purpose base model trained from scratch on 6.05B tokens, as a plain Llama (LlamaForCausalLM): no custom code. It is the successor of TinyBrainBot-3M-Base, rebuilt to be balanced: commonsense, facts and Q&A first, with grade-school arithmetic that holds up on wordings it never saw, instead of a high ArithMark score.

Scores vs other models of 3M parameters or fewer

Zero-shot, full test sets, acc_norm. The (raw acc) row shows plain accuracy. The Intelligence Index is the Open SLM Leaderboard's; the other models' numbers come from that leaderboard.

Model Params Int Index HellaSwag ARC-E ARC-C PIQA ArithMark-3
TinyBrainBot-3M-v2-Base (this model) 2.94M 10.38 27.29 33.38 22.53 56.75 45.10
  (raw acc) 10.61 26.83 33.67 18.69 58.65 45.40
GPT-S3-3M 2.97M 9.61 27.68 34.76 23.12 57.02 39.10
Tokle-3M 2.91M 8.91 27.20 34.85 23.98 55.01 40.80
pulvis-v2 2.96M 8.62 27.93 31.86 22.78 56.86 37.40
Purrence-3M 2.99M 8.49 27.81 34.55 23.63 56.64 34.80

Arithmetic it never trained on

The arithmetic share was tuned so ArithMark-3 stays close to how the model does on problems written by other people. None of these sets was used in training (Gemma and Llama were never used to write training data), all acc_norm:

Held-out set Score
ArithMark-3 (public, for reference) 45.1
Arithmetic stories written by Gemma (544) 34.2
Arithmetic stories written by Llama (1,093) 36.3
23 arithmetic topics ArithMark-3 lacks, new wordings (1,380) 38.8
Unknown positions, distractors, tables, layouts (480) 37.1
Held-out number formats: large / commas / money 40.8 / 46.7 / 45.2
Bare equations from ArithMark-3 ("43 + 19 =") 35.9
ArithMark-2 27.2

Quick start

from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("nkthebass/tinybrainbot-3m-v2-base")
model = AutoModelForCausalLM.from_pretrained("nkthebass/tinybrainbot-3m-v2-base")
ids = tok("To keep a cut apple from turning brown, you can", return_tensors="pt")
print(tok.decode(model.generate(**ids, max_new_tokens=20, do_sample=False)[0]))

There is also an F16 GGUF (tinybrainbot-3m-v2-base-F16.gguf, 6 MB) for llama.cpp, LM Studio and Jan. A Q8_0 file isn't possible because the hidden size (144) is not a multiple of 32.

This is a base model: it continues text and does not chat. At this size expect short, simple text.

Model

Parameters 2,942,928 total (2.35M non-embedding + 0.59M tied embedding)
Shape hidden 144, 10 layers, 3 query heads of 48 with 1 KV head (GQA), SwiGLU 416, RMSNorm, RoPE
Vocabulary 4,096-token byte-level BPE trained for this model: digits split one per token, whitespace kept exactly
Context 1,024 tokens

Training

6.05B tokens in three parts: the first 4.72B are TinyBrainBot-3M-Base's own pretraining (its step 36,000), then 0.81B of new pretraining and a 0.51B decay.

New pretraining (0.81B) Share
Q&A and facts (our distilled plain-text sets) 25%
Arithmetic in many forms (below) 20%
Everyday / how-to / commonsense (Cosmopedia WikiHow + distilled) 15%
Cosmopedia Stanford + OpenStax 13%
TinyStories 12%
FineWeb-Edu 10%
Wikipedia leads 5%
Decay (0.51B) Share
Q&A and facts 34.3%
Everyday / how-to / commonsense 22%
Cosmopedia Stanford 15%
Wikipedia leads 10%
TinyStories 10%
Arithmetic 8.7%

The arithmetic mixes several sources so the skill is not tied to one wording: drills generated by our own programs (order of operations, negatives, number formats, number words, whitespace variants, tables, unknown positions, distractors; every answer computed in Python), story problems in sentence frames written by several LLM families (Ling, Mistral; the numbers filled in and computed by Python), and Orca-Math word problems. No benchmark training or test data was used.

Recipe: AdamW (betas 0.9/0.95, weight decay 0.1), LR 2.7e-3 held then decayed to 0 (warmup-stable-decay), 131k tokens per step, fp16 mixed precision, 2x V100.

How this checkpoint was chosen. Several decay branches with different arithmetic shares were run from the same checkpoint (step 42,212). A little story-style arithmetic raised ArithMark-3 much faster than any held-out set, so we published the branch whose public ArithMark-3 stays within about 10 points of the held-out sets, not the one with the highest Index (13.93, but ArithMark-3 62.8 against 41.0 held-out). The published weights are that branch's final checkpoint, not a merge.

Evaluation

Float32, lm-eval 0.4.13 (full sets, 0-shot) and the official ArithMark-3 script:

lm_eval --model hf --model_args pretrained=nkthebass/tinybrainbot-3m-v2-base,dtype=float32 --tasks hellaswag,arc_easy,arc_challenge,piqa --num_fewshot 0
python bencharithmark-3.py --model nkthebass/tinybrainbot-3m-v2-base --dtype float32

Limitations

At 3M parameters this is a toy-scale model. It knows few facts, loses coherence after a few sentences, and its arithmetic is unreliable outside simple one-step problems. HellaSwag and ARC are close to chance for every model this size, so the gaps between models there are small.

Downloads last month
291
Safetensors
Model size
2.94M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Datasets used to train nkthebass/tinybrainbot-3m-v2-base

Evaluation results