744B parameters, streaming off your SSD one word at a time

2 months ago

A seven hundred and forty-four billion parameter model, answering on one ordinary computer. colibrì does it by never loading the whole thing. The model still takes about three hundred and eighty-four gigabytes on your drive. It runs on twenty-five gigabytes of RAM. That gap is the whole story.

Ask

Ask about this presentation

Answers are generated from this presentation.

Chapters

  1. 0:00744B parameters, streaming off your SSD one word at a time
  2. 0:16colibrì is not a model. It is the engine that runs one.
  3. 0:35Why streaming works: only ~5% of the model computes each token
  4. 0:52Where the pieces live
  5. 1:10The per-token path:route → union → place → overlap → learn
  6. 1:42It learns what you use
  7. 2:06So why is it slow?
  8. 2:35The whole engine is one C file
  9. 2:59It was never a size problem. It was a placement problem.
Show transcript

744B parameters, streaming off your SSD one word at a time

GitHub Trending · Ep 14 · Jul 19, 2026
a 744B model, answering on one machine.
25 GB
of RAM to run it
~384 GB
of model on your drive
colibrì C Apache-2.0 v1.0.0

A seven hundred and forty-four billion parameter model, answering on one ordinary computer. colibrì does it by never loading the whole thing. The model still takes about three hundred and eighty-four gigabytes on your drive. It runs on twenty-five gigabytes of RAM. That gap is the whole story.

colibrì is not a model. It is the engine that runs one.

glm-5.2-colibri
engine · colibrì
Apache-2.0 · this repo
weights · GLM-5.2
MIT · Z.ai · open weights
a 25 GB-RAM consumer machine, ~384 GB of model on disk
JustVugg/colibri — docs/media

colibrì is not a model. It is the engine that runs one. You point it at GLM-5.2, the open weights model from Z.ai, and it answers. Here someone asks it how a hummingbird hovers. colibrì is Italian for hummingbird, so the demo answers the question its own name asks. And the machine on your desk is closer to this than you assumed.

Why streaming works: only ~5% of the model computes each token

Parameters active per generated token (sparse MoE routing: 8 of 256 experts per layer)
active: ~40B (5.4%)
idle this token: ~704B
And only ~11 GB of the active set changes between tokens — that difference is what colibrì streams
docs/media/sparse.png · Z.ai GLM-5.2 config.json

This model never uses all of itself. For every word it writes, the router picks eight experts out of two hundred and fifty-six in each layer. Forty billion parameters do the work. Seven hundred and four billion sit still. And only about eleven gigabytes of that changes from one word to the next. That is all colibrì has to move.

Where the pieces live

RAM — resident
9.9 GB
dense core: attention, shared expert, embeddings — ~17B params at int4
Disk — streamed on demand
~384 GB
76 × 256 = 19,456 routed experts, ~19 MB each at int4
Between them
cache
per-layer LRU cache + learned pinned hot-store
README · Z.ai GLM-5.2 config.json · HF int4 container listing

So colibrì splits the model by how often you need each piece. The dense core runs on every word. At four bits that is nine point nine gigabytes, and it stays in RAM. The routed experts are everything else. Nineteen thousand of them, about nineteen megabytes apiece, sitting on your drive until they are called. It works like a game streaming in the level you are walking into.

The per-token path:route → union → place → overlap → learn

What the engine does for every layer of every token
Route
the router scores all 256 experts, keeps the top-8
Union
batched positions merge their expert lists — each unique expert is read once
Place
VRAM / RAM hits run instantly; misses stream from NVMe
Overlap
resident experts compute while the I/O pool reads the missing ones; lookahead prefetches layer L+1
Learn
usage counters update; the hot set re-ranks
Quality contract: placement decides speed only — precision and router semantics are never silently changed
docs/media/token-path.png

Every layer of every word runs the same five steps. Route. The router scores all two hundred and fifty-six experts and keeps the top eight. Union. If two words want the same expert, it gets read once. Place. Whatever is already in memory runs now. Overlap. Those experts compute while the drive delivers the missing ones, and it looks a layer ahead. Learn. The counters update and the hot set re-ranks. And here is the line the whole project rests on. Placement decides speed only. Precision and routing are never quietly changed.

It learns what you use

19,456 experts · colour = storage tier · brightness = routing heat
It pins your hot set into spare memory. The same machine gets faster the longer you use it.
Framework 13, Arch — community-reported
46.7 GB auto-learned pin · 66% expert hit rate
M5 Max, Metal — community-reported
1.11 → 1.83 tok/s within one run
docs/benchmarks.md — community table (self-reported)

And this part has real personality. colibrì writes down which experts your work reaches for. Then it pins those into whatever spare memory you have. The same machine gets faster the longer you use it. One person running a Framework 13 reported a forty-six gigabyte pin catching sixty-six percent of the experts it needed. Another watched an M5 Max climb from one point one one to one point eight three tokens a second inside a single run.

So why is it slow?

One engine, one 744B model — measured decode speed by hardware class
tokens/second, greedy decode (community + author measurements)
25 GB laptop, cold start
everything streamed from disk
0.05–0.1
single RTX 5070 Ti + 32 GB
GPU-resident pipeline
1.07
128 GB desktop, CPU only
large learned pin
1.8
NVIDIA DGX Spark (GB10)
121 GB unified
2.4
6 × RTX 5090
full expert residency, VRAM+RAM
6.8
Same engine, same int4 container — the hardware only changes where experts live.
"This is not fast. It is a 744B frontier-class model answering correctly on a machine that costs less than one H100 fan."
— the project's own docs
Same machine. Only the drive changed.
Ryzen 9 9950X · 32 threads · 123 GB RAM · Linux
before
Crucial P3 (QLC, Gen3)
0.10 tok/s
66% of time on disk
after
Samsung 9100 PRO (PCIe 5.0)
0.28 tok/s
32% of time on disk · 57% matmul
community-reported, maintainer-confirmed in thread
×5.8 disk bandwidth bought ×2.9 tokens.
docs/benchmarks.md · issue thread (self-reported)

So why is it slow? On the cheapest machine one word takes ten to twenty seconds, and the project's own docs say it plainly. This is not fast. But look at what is slow. Someone swapped only the drive in a big desktop. Same chip, same model, an older drive out and a PCIe five drive in. Throughput went from zero point one to zero point two eight tokens a second. And the disk fell from sixty-six percent of the time down to thirty-two. The math is the bottleneck now. Five point eight times the bandwidth bought two point nine times the tokens. The ceiling is your drive, not the idea.

The whole engine is one C file

320,904 bytes
the Linux engine build — colibri-v1.0.0-linux-x86_64
~384 GB
the GLM-5.2 model container, int4
the model is ~1.2 million times the size of the engine that runs it
v1.0.0 · Jul 19 2026 Linux macOS Windows Apache-2.0 · engine MIT · Z.ai · weights
Release v1.0.0 asset table · HF int4 container listing

The whole engine is one C file. The Linux build that shipped this morning is three hundred and twenty thousand bytes. The model it drives is about three hundred and eighty-four gigabytes. That model is roughly one point two million times the size of the program running it. Version one point oh landed today, with builds for Linux, macOS and Windows. Apache two for the engine. The weights are Z.ai's, under MIT.

It was never a size problem. It was a placement problem.

colibrì — tiny engine, immense model
github.com/JustVugg/colibri
New repo tomorrow.

So if you assumed the biggest models need a data centre, this one says the problem was placement, not size. Seven hundred and forty-four billion parameters, on one machine. The link is on screen. New repo tomorrow.