Instructions to use vovaRL/NanoColibri-Instruct with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use vovaRL/NanoColibri-Instruct with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="vovaRL/NanoColibri-Instruct") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("vovaRL/NanoColibri-Instruct") model = AutoModelForCausalLM.from_pretrained("vovaRL/NanoColibri-Instruct", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use vovaRL/NanoColibri-Instruct with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "vovaRL/NanoColibri-Instruct" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "vovaRL/NanoColibri-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/vovaRL/NanoColibri-Instruct
- SGLang
How to use vovaRL/NanoColibri-Instruct with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "vovaRL/NanoColibri-Instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "vovaRL/NanoColibri-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "vovaRL/NanoColibri-Instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "vovaRL/NanoColibri-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use vovaRL/NanoColibri-Instruct with Docker Model Runner:
docker model run hf.co/vovaRL/NanoColibri-Instruct
Colibri-Nano
A 2.7B-parameter Mixture-of-Experts that runs on a 4 GB mini-PC — trained from scratch by volunteers passing a GPU baton, for about the price of a game console.
| Parameters | 2.7B total · 0.34B active per token (~12%) |
| Training tokens | ~5.4B (pretrain + chat SFT) |
| Container | ~1.2 GB int4, streams experts from disk |
| Compute | 1 GPU at a time · ~50–100 H100-hours for the whole run |
| Cost | ~$180–260 for the whole run |
| License | Apache-2.0 — code, checkpoints, and a ledger of who trained what |
Architecture. 24 layers (1 dense + 23 MoE) · 64 experts, top-2 + a 2048-wide always-resident shared expert · GQA 4× · per-head QK-norm · sigmoid+bias router (DeepSeek-V3-style aux-loss-free balancing) · SmolLM2 tokenizer, 49 152 vocab · 4 096 context.
How it was built
1 — Relay pretraining. Pretraining is sequential, so contributors take turns: claim a lease on a HuggingFace repo (a real compare-and-swap, not a convention), pull the checkpoint, train a leg, push, hand the baton on. 20 000 updates ≈ 5.2B tokens of FineWeb-Edu, then a 1 500-update chat SFT.
2 — Engine-native. The architecture was chosen for the serving engine (hy3.c): int4 experts stream from disk under a fixed RAM budget, while the dense backbone and the shared expert stay resident. No conversion shims.
3 — The bet paid off. At a matched token budget, the MoE beats dense references that spend more compute per token.
Evaluation 1 — beats dense at the same token budget
Zero-shot accuracy (%). Colibri-Nano (2.7B total / 0.34B active) against two token-matched dense models.
| Task | Colibri-Nano 0.34B act / 5.4B tok |
Pythia-410M @ 6.3B tok (dense 405M) |
Cerebras-GPT-256M @ 5.1B tok (dense) |
Random |
|---|---|---|---|---|
| LAMBADA | 26.3 | 26.3 | 29.3 | 0 |
| PIQA | 62.7 | 59.8 | 61.3 | 50 |
| WinoGrande † | 49.2 | 50.9 | 51.1 | 50 |
| ARC-easy | 43.4 | 41.3 | 41.0 | 25 |
| ARC-challenge | 22.8 | 18.8 | 17.0 | 25 |
| OpenBookQA | 22.0 | 15.6 | 15.8 | 25 |
| HellaSwag | 31.1 | 27.0 | 27.4 | 25 |
Identical prompts and scoring for all three columns (in-repo lm-eval-compatible harness; Cerebras row from arXiv:2304.03208 Table 8, same protocol). Colibri-Nano wins 5 of 7 against both token-matched dense models — ties LAMBADA, WinoGrande within noise — with fewer active parameters per token.
† WinoGrande differences are within noise (±1.4 pts).
‡ The Pythia checkpoint (
step3000) is early in its LR schedule, which handicaps it somewhat — the fully-annealed Cerebras-GPT-256M column is the conservative comparison, and Nano wins that one too.
Evaluation 2 — quality vs training tokens
Average zero-shot accuracy over the 7 tasks above. Random-guess average on this task set: 28.6.
| Model | Tokens (B) | Avg accuracy | Kind |
|---|---|---|---|
| Cerebras-GPT-111M | 2.2 | 31.5 | dense |
| Cerebras-GPT-256M | 5.1 | 34.7 | dense |
| Colibri-Nano | 5.4 | 36.8 | MoE (ours) |
| Pythia-410M @ step3000 ‡ | 6.3 | 34.2 | dense |
| Cerebras-GPT-590M | 11.8 | 37.1 | dense |
| OPT-125M | 180 | 37.1 | dense |
| OPT-350M | 180 | 39.5 | dense |
| Pythia-160M | 300 | 37.4 | dense |
| Pythia-410M | 300 | 41.9 | dense |
At 5.4B tokens, Colibri-Nano matches OPT-125M (33× the tokens) and Cerebras-GPT-590M (~4× the training compute), and clearly beats everything at its own budget. Models further down the table just ate more data.
Evaluation 3 — the efficiency frontier (context, not a target)
Different metric family. These are
acc_normnumbers under the SmolLM2-card protocol and are not comparable with the accuracies in Evaluation 1–2.
| Model | Active (M) | Total (M) | Tokens (B) | HellaSwag | ARC avg | PIQA | WinoGrande | OpenBookQA |
|---|---|---|---|---|---|---|---|---|
| Colibri-Nano | 341 | 2700 | 5.4 | 35.6 | 32.8 | 62.7 | 49.2 | 29.6 |
| SmolLM2-135M | 135 | 135 | 2000 | 42.1 | 43.9 | 68.4 | 51.3 | 34.6 |
| SmolLM2-360M | 360 | 360 | 4000 | 54.5 | 53.0 | 71.7 | 52.5 | 37.4 |
| Qwen2.5-0.5B | 494 | 494 | 18000 | 51.2 | 45.4 | 69.9 | 54.1 | 37.4 |
The trillions-of-tokens ceiling for this size class — context, not a target. The gap is data volume (370–3300× more tokens), not architecture.
Reproducing every number on this card
python -m scripts.bench_nano --indir checkpoints/nano_chat
Every number here regenerates from the repo (docs/BENCH.md, docs/RESULTS.md).
Train it yourself: the one-line setup.sh + ./train.sh relay (see README in
the training repo).
Limitations
- Undertrained by design of budget, not ambition: at ~5.4B tokens the model sits 370–3300× below the token counts of the frontier models in its size class, and Evaluation 3 shows the resulting gap.
- Speed benchmarks across target devices (tokens/s vs engine memory budget) are not yet published here; disk-pressure benchmarks (memory-capped cgroups, larger containers) are the successor project's first milestone.
- Small-model failure modes apply: factual errors, repetition, and weak multi-step reasoning.
What's next
A 7B chat+code pilot with RL post-training, then a 24–28B flagship whose
container is deliberately bigger than a 16 GB laptop's memory — streaming experts
from NVMe at 20+ tok/s (plan: docs/NEXT_MODEL.md).
License Apache-2.0 · HF repo vovaRL/NanoColibri-Instruct · engine: hy3.c
- Downloads last month
- -
Model tree for vovaRL/NanoColibri-Instruct
Unable to build the model tree, the base model loops to the model itself. Learn more.
Paper for vovaRL/NanoColibri-Instruct
Evaluation results
- zero-shot accuracy on LAMBADAself-reported26.300
- zero-shot accuracy on PIQAself-reported62.700
- zero-shot accuracy on WinoGrandeself-reported49.200
- zero-shot accuracy on ARC-easyself-reported43.400
- zero-shot accuracy on ARC-challengeself-reported22.800
- zero-shot accuracy on OpenBookQAself-reported22.000
- zero-shot accuracy on HellaSwagself-reported31.100