TinyBrainBot-360M-A75M-v4.1-MoE-Base

A mixture-of-experts language model trained from scratch on two Tesla V100s. Every layer holds 24 experts and each token uses 4 of them, so the model stores 359M parameters but runs only 75.7M per token (non-embedding; plus a 24.6M tied embedding, 383M in total). It was trained on 18.2B tokens with a 2,048-token context, then given one expert-tuned patch for factual question answering (below).

It is our strongest model on the Open SLM Leaderboard's settings, ahead of our dense 350M while computing about a quarter as much per token.

Model Params Train tokens HellaSwag ARC-Easy ARC-Challenge PIQA ArithMark-3 Intelligence Index
TinyBrainBot-360M-A75M (this) 383M (75.7M active) 18.2B 37.27 55.64 32.34 66.32 42.00 24.40
  (raw acc) 32.53 59.76 28.84 66.54
TinyBrainBot-350M-V3-Base (dense) 348M 22.7B 35.90 56.61 33.28 66.97 39.30 23.96
  (raw acc) 31.64 62.25 30.38 65.78
TinyBrainBot-100M-V3-Base (dense) 100M 25B 32.62 54.67 30.12 66.21 37.40 20.97
  (raw acc) 29.95 58.59 26.62 65.72
SmolLM2-135M 135M 2T 43.22 58.63 29.69 68.44 39.20 27.13
OPT-350M 331M 180B 36.82 40.19 23.72 64.36 38.30 17.88
GPT-2 Medium 355M - 39.38 43.60 25.00 66.38 33.80 19.72
GPT-2 124M - 31.26 39.35 22.35 62.08 35.70 13.58

Full test sets, zero-shot, acc_norm, EleutherAI lm-eval-harness, plus the official ArithMark-3 script. The Intelligence Index is the leaderboard's: the normalised average of HellaSwag, ARC, PIQA and 0.65x ArithMark-3. TinyBrainBot rows were run by us; the other rows are the leaderboard's published numbers.

Quick start

It is a standard Mixtral model and needs no custom code:

from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "nkthebass/tinybrainbot-360m-a75m-v4.1-moe-base"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo)

ids = tok("Once upon a time, a little fox", return_tensors="pt").input_ids
out = model.generate(ids, max_new_tokens=80)       # defaults from generation_config.json
print(tok.decode(out[0], skip_special_tokens=True))

GGUF (llama.cpp, LM Studio, Ollama): tinybrainbot-360m-a75m-v4.1-moe-base-Q8_0.gguf (409 MB) or -F16.gguf (768 MB). Both tokenize exactly like the transformers version and give the same greedy output.

llama-completion -m tinybrainbot-360m-a75m-v4.1-moe-base-Q8_0.gguf -no-cnv -p "Once upon a time, a little fox" -n 80 --temp 0.7 --repeat-penalty 1.15

This is a base model: it continues text, it does not follow chat instructions. Default sampling: temperature 0.7, top_p 0.9, repetition_penalty 1.15. A chat version is in progress.

Samples

Unedited, at the default settings.

Once upon a time, a little fox named Max lived in a small village. One day, Max heard his name mentioned by someone else. He asked around the town and found that everyone had lost their way in the forest. But then, he noticed something strange happening - some trees were open wide! All of the animals were moving quickly toward each other because they wanted to find food and shelter. The fox realized that the path wasn't clear at all; instead, it seemed like it

Question: Why do we have seasons on Earth? Answer: The tilt of Earth's axis causes changing sunlight angles.

The best way to learn a new language is by engaging with it. This means watching movies, reading books, attending cultural events, and practicing speaking the language regularly. It's not just about memorizing words; it's also about understanding grammar rules and vocabulary lists. By doing so, you will gain confidence in communicating effectively and expressing yourself in the target language. Another important aspect of learning a new language is improving your listening skills. Listening to native speakers can help you understand conversations and

All benchmarks

Benchmark (0-shot) this model before the expert patch
ARC-Easy 55.9 54.2
ARC-Easy (raw acc) 59.8 59.2
ARC-Challenge 32.3 31.9
ARC-Challenge (raw acc) 28.8 27.8
SciQ 73.3 72.5
SciQ (raw acc) 81.8 82.1
OpenBookQA 34.4 33.8
OpenBookQA (raw acc) 23.6 23.2
MMLU 24.2 24.4
HellaSwag 41.5 41.9
HellaSwag (raw acc) 35.8 35.4
PIQA 66.3 66.8
PIQA (raw acc) 66.5 66.6
WinoGrande 52.4 52.6
Social IQa 39.7 39.1
CommonsenseQA 21.6 20.9
LAMBADA (OpenAI) 28.6 28.5
BoolQ 57.8 58.6
MathQA 23.2 23.9
MathQA (raw acc) 24.1 24.7
Average (13) 42.4 42.2
LAMBADA perplexity (lower is better) 65.7 64.2

lm-eval-harness, 0-shot, up to 2,000 examples per task (HellaSwag and MMLU use their first 2,000; the leaderboard table above uses full sets). Each task's first row is acc_norm where the task reports it, acc otherwise; the "(raw acc)" row under it is acc. "Before the expert patch" is the same model at the end of pretraining.

Model

Architecture Mixtral-style sparse MoE decoder: RoPE, RMSNorm, grouped-query attention, SwiGLU experts
Shape hidden 768, 12 layers, 12 heads of 64, 4 KV heads; 24 experts of width 512 per layer, top-4 routing
Parameters 358.9M non-embedding total, 75.7M active per token, + 24.6M tied embedding (383.4M total)
Context 2,048 tokens
Vocabulary 32,000 (SentencePiece, byte fallback)

Routing is Mixtral's: softmax over the 24 experts, keep the top 4, renormalise their weights. A 0.01 load-balancing loss keeps every expert in use. The experts run on the sigma-MoE Triton kernel (Csordas et al.), which fuses token routing into the matrix multiply, so training ran at about 30k tokens/s on the two V100s.

Training

Pretraining: 16.7B tokens, fp16, AdamW (0.9, 0.95), weight decay 0.1, peak LR 8e-4, 262k tokens per step, warmup-stable-decay.

Group Share Sources
Web 35% FineWeb-Edu 27, DCLM 9
Reference 14% Wikipedia article leads 12, full Wikipedia 1.5
Math 11% MegaMath-Web-Pro 5, FineMath-4+ 4, Cosmopedia auto-math 1, Orca-Math 1
Narrative 10% Project Gutenberg 4, TinyStories 4, BookCorpusOpen 3
Code 8% The Stack (smol) 7, Python/JS 1.5
Synthetic textbooks 8% Cosmopedia (Stanford, OpenStax)
Q&A and facts 7% distilled Q&A, short facts, cause-and-effect explanations, short reasoning
Educational PDFs 7% FinePDFs-Edu

Anneal: 1.5B tokens while the learning rate decays to zero: mostly distilled Q&A and short facts, with explanations and short reasoning, Wikipedia, Cosmopedia (including WikiHow), FineMath, FinePDFs and short generated everyday scenes and stories.

Expert patch: factual Q&A. In each layer, the 4 experts that factual question-answer text uses most (relative to ordinary text) were trained for 131M tokens on plain-text Q&A, short facts and explanations, mixed with pretraining text. Everything else stayed frozen - attention, norms, embeddings, router and the other 20 experts per layer - and was checked bit-for-bit after every step. It is one model fine-tuned in place, not a merge. The patch raised ARC-Easy and ARC-Challenge without moving the other benchmarks (see "All benchmarks").

Limitations

  • A small base model: fluent, but it states wrong facts with confidence, and it does not follow instructions.
  • Not for code: the tokenizer collapses whitespace, so newlines and indentation are lost.
  • English only.

Reproduce

lm_eval --model hf --model_args pretrained=nkthebass/tinybrainbot-360m-a75m-v4.1-moe-base,dtype=float32 \
  --tasks hellaswag,arc_easy,arc_challenge,piqa --num_fewshot 0 --batch_size 16

TinyBrainBot v4.1 (mixture of experts)

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

Model tree for nkthebass/tinybrainbot-360m-a75m-v4.1-moe-base

Quantizations
3 models

Datasets used to train nkthebass/tinybrainbot-360m-a75m-v4.1-moe-base

Collection including nkthebass/tinybrainbot-360m-a75m-v4.1-moe-base

Evaluation results